@riligar/auth-react 1.20.13 → 1.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.esm.js +14 -5
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +14 -4
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/authSdk.js","../src/authStore.js","../src/AuthProvider.jsx","../src/Protect.jsx","../src/components/AuthCard.jsx","../src/assets/logotipo.webp","../src/components/SignIn.jsx","../src/components/SignUp.jsx","../src/components/MagicLink.jsx","../src/components/MagicLinkCallback.jsx","../src/components/ForgotPassword.jsx","../src/components/ResetPassword.jsx","../src/components/VerifyEmail.jsx","../src/components/UserProfile.jsx","../src/components/control/SignedIn.jsx","../src/components/control/SignedOut.jsx","../src/components/control/AuthLoading.jsx","../src/components/control/AuthLoaded.jsx","../src/components/unstyled/SignInButton.jsx","../src/components/unstyled/SignUpButton.jsx","../src/components/unstyled/SignOutButton.jsx"],"sourcesContent":["// Config - API Base URL fixa para o serviço de autenticação\nconst API_BASE = 'https://manager.myauth.click'\n\nlet API_KEY = null\nlet INTERNAL_MODE = false // Modo interno: não exige API Key (para aplicações same-domain)\n\n// Permite configurar API key e modo interno externamente (chamado pelo AuthProvider)\nexport function configure({ apiKey, internal = false }) {\n if (apiKey) API_KEY = apiKey\n INTERNAL_MODE = internal\n}\n\n// Cache para JWKS\nlet jwksCache = null\nlet jwksCacheExpiry = 0\n\n// helper fetch pré-configurado\nasync function api(route, opts = {}) {\n // Garante que a rota comece com /\n const cleanRoute = route.startsWith('/') ? route : `/${route}`\n\n // Constrói URL completa (API_BASE já teve trailing slash removido no configure)\n const url = `${API_BASE}${cleanRoute}`\n\n const token = getStoredToken()\n const headers = {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n ...opts.headers,\n }\n\n // Adiciona Authorization header se tiver token\n if (token) {\n headers.Authorization = `Bearer ${token}`\n }\n\n // Adiciona API Key se configurada e não estiver em modo interno\n if (API_KEY && !INTERNAL_MODE) {\n headers['X-API-Key'] = API_KEY\n }\n\n const res = await fetch(url, {\n headers,\n credentials: 'include', // Required for sending session cookies\n ...opts,\n })\n\n // Converte JSON automaticamente e lança erro legível\n const data = res.status !== 204 ? await res.json().catch(() => ({})) : null\n\n if (!res.ok) {\n let errorMessage = data?.message || data?.error || data?.detail || res.statusText\n\n // Se a mensagem for um objeto, tenta extrair string ou stringify\n if (typeof errorMessage === 'object') {\n errorMessage = errorMessage.message || JSON.stringify(errorMessage)\n }\n\n throw Object.assign(new Error(errorMessage), { res, data })\n }\n return data\n}\n\n// Gerenciamento de token no localStorage\nfunction getStoredToken() {\n if (typeof window === 'undefined') return null\n return window.localStorage.getItem('auth:token')\n}\n\nfunction setStoredToken(token) {\n if (typeof window === 'undefined') return\n if (token) {\n window.localStorage.setItem('auth:token', token)\n } else {\n window.localStorage.removeItem('auth:token')\n }\n}\n// Helper para processar resposta de autenticação e salvar token\nfunction handleAuthResponse(result) {\n // Tenta encontrar o token em vários lugares possíveis\n const token = result.token || result.session?.token || result.session?.sessionToken\n\n if (token) {\n setStoredToken(token)\n }\n\n return result\n}\n// Busca JWKS do servidor\nasync function fetchJWKS() {\n const now = Date.now()\n if (jwksCache && now < jwksCacheExpiry) {\n return jwksCache\n }\n\n try {\n const response = await fetch(`${API_BASE}/.well-known/jwks.json`)\n const jwks = await response.json()\n jwksCache = jwks\n jwksCacheExpiry = now + 5 * 60 * 1000 // Cache por 5 minutos\n return jwks\n } catch (error) {\n console.error('Erro ao buscar JWKS:', error)\n return null\n }\n}\n\n// Decodifica JWT (apenas payload, sem verificação de assinatura)\nexport function decodeJWT(token) {\n try {\n const parts = token.split('.')\n if (parts.length !== 3) return null\n\n // Safe base64 decode\n const base64Url = parts[1]\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/')\n\n // Verifica ambiente para decodificar\n const jsonPayload = typeof window !== 'undefined' ? window.atob(base64) : Buffer.from(base64, 'base64').toString()\n\n return JSON.parse(jsonPayload)\n } catch {\n return null\n }\n}\n\n// Verifica se o token está expirado\nfunction isTokenExpired(token) {\n const payload = decodeJWT(token)\n\n // Se não for um JWT válido (payload null), assumimos que é um token opaco (session token)\n // Nesse caso, deixamos o servidor validar via 401\n if (!payload) return false\n\n if (!payload.exp) return false\n\n const now = Date.now()\n const exp = payload.exp * 1000\n const isExpired = now >= exp\n\n if (isExpired) {\n console.log('[AuthSDK] Token expired:', { now, exp, diff: exp - now })\n }\n\n return isExpired\n}\n\n// Verifica se o usuário está autenticado\nexport function isAuthenticated() {\n const token = getStoredToken()\n const valid = token && !isTokenExpired(token)\n return valid\n}\n\n// Obtém dados do usuário do token\nexport function getCurrentUser() {\n const token = getStoredToken()\n if (!token || isTokenExpired(token)) return null\n\n const payload = decodeJWT(token)\n return payload\n ? {\n id: payload.sub,\n email: payload.email,\n name: payload.name,\n ...payload,\n }\n : null\n}\n\n/*--- métodos de autenticação -------------------*/\nexport const signUp = async (email, password, name = '') => {\n const result = await api('/auth/sign-up/email', {\n method: 'POST',\n body: JSON.stringify({ email, password, name }),\n })\n\n return handleAuthResponse(result)\n}\n\nexport const signIn = async (email, password) => {\n const result = await api('/auth/sign-in/email', {\n method: 'POST',\n body: JSON.stringify({ email, password }),\n })\n\n return handleAuthResponse(result)\n}\n\nexport const signOut = async () => {\n try {\n await api('/auth/sign-out', { method: 'POST' })\n } catch {\n // Ignora erros de logout no servidor\n } finally {\n setStoredToken(null)\n }\n}\n\nexport const refreshToken = async () => {\n try {\n const result = await api('/auth/refresh', { method: 'POST' })\n return handleAuthResponse(result)\n } catch (error) {\n setStoredToken(null)\n throw error\n }\n}\n\n/*--- Magic Link ---------------------------------*/\nexport const sendMagicLink = async (email, callbackURL) => {\n const callback = callbackURL || (typeof window !== 'undefined' ? `${window.location.origin}/auth/magic-link/verify` : '/auth/magic-link/verify')\n\n return await api('/auth/sign-in/magic-link', {\n method: 'POST',\n body: JSON.stringify({ email, callbackURL: callback }),\n })\n}\n\nexport const verifyMagicLink = async token => {\n const result = await api(`/auth/magic-link/verify?token=${encodeURIComponent(token)}`)\n\n return handleAuthResponse(result)\n}\n\n/*--- Password Reset -----------------------------*/\nexport const forgotPassword = async (email, redirectTo) => {\n const redirect = redirectTo || (typeof window !== 'undefined' ? `${window.location.origin}/auth/reset-password` : '/auth/reset-password')\n\n return await api('/auth/request-password-reset', {\n method: 'POST',\n body: JSON.stringify({ email, redirectTo: redirect }),\n })\n}\n\nexport const resetPassword = async (token, newPassword) => {\n return await api('/auth/reset-password', {\n method: 'POST',\n body: JSON.stringify({ token, newPassword }),\n })\n}\n\n/*--- Email Verification -------------------------*/\nexport const verifyEmail = async token => {\n const result = await api(`/auth/verify-email?token=${encodeURIComponent(token)}`)\n\n return handleAuthResponse(result)\n}\n\nexport const resendVerification = async (email, callbackURL) => {\n const callback = callbackURL || (typeof window !== 'undefined' ? `${window.location.origin}/auth/verify-email` : '/auth/verify-email')\n\n return await api('/auth/send-verification-email', {\n method: 'POST',\n body: JSON.stringify({ email, callbackURL: callback }),\n })\n}\n\n/*--- Session ------------------------------------*/\nexport const getSession = async () => {\n return await api('/auth/session')\n}\n\nexport const listSessions = async () => {\n return await api('/auth/list-sessions')\n}\n\nexport const revokeSession = async id => {\n return await api('/auth/revoke-session-by-id', {\n method: 'POST',\n body: JSON.stringify({ id }),\n })\n}\n\nexport const revokeOtherSessions = async () => {\n return await api('/auth/revoke-other-sessions', {\n method: 'POST',\n })\n}\n\n/*--- Application Info ----------------------------*/\nexport const getApplicationInfo = async () => {\n try {\n const data = await api('/application/by-api-key')\n return data?.data || null\n } catch (error) {\n console.warn('[AuthSDK] Failed to fetch application info:', error.message)\n return null\n }\n}\n\n/*--- Profile Management ---------------------------*/\nexport const updateProfile = async data => {\n return await api('/auth/update-user', {\n method: 'POST',\n body: JSON.stringify(data),\n })\n}\n\nexport const changePassword = async (currentPassword, newPassword, revokeOtherSessions = false) => {\n return await api('/auth/change-password', {\n method: 'POST',\n body: JSON.stringify({ currentPassword, newPassword, revokeOtherSessions }),\n })\n}\n\nexport const changeEmail = async (newEmail, callbackURL) => {\n const callback = callbackURL || (typeof window !== 'undefined' ? `${window.location.origin}/auth/verify-email` : '/auth/verify-email')\n\n return await api('/auth/change-email', {\n method: 'POST',\n body: JSON.stringify({ newEmail, callbackURL: callback }),\n })\n}\n\n/* Social login redirect (ex.: Google) -----------*/\nexport function socialRedirect(provider, redirectTo = typeof window !== 'undefined' ? window.location.href : '/') {\n if (typeof window === 'undefined') return\n window.location = `${API_BASE}/auth/sign-in/${provider}?redirect=${encodeURIComponent(redirectTo)}`\n}\n","import { create } from 'zustand'\nimport * as api from './authSdk.js'\n\n// Estado: { user, loading, error }\nexport const useAuthStore = create((set, get) => ({\n user: null,\n loading: true,\n error: null,\n\n // Session management\n sessions: [],\n currentSession: null,\n\n // Loading states granulares\n loadingStates: {\n signIn: false,\n signUp: false,\n signOut: false,\n magicLink: false,\n verifyMagicLink: false,\n resetPassword: false,\n verifyEmail: false,\n resendVerification: false,\n updateProfile: false,\n changePassword: false,\n changeEmail: false,\n listSessions: false,\n revokeSession: null, // null or sessionId being revoked\n },\n\n // Application info (logo, nome, etc)\n applicationInfo: null,\n\n // Helper para atualizar loading states\n setLoading: (key, value) =>\n set(state => ({\n loadingStates: { ...state.loadingStates, [key]: value },\n })),\n\n // Buscar informações da aplicação\n fetchApplicationInfo: async () => {\n try {\n const appInfo = await api.getApplicationInfo()\n set({ applicationInfo: appInfo })\n } catch (error) {\n console.warn('[AuthStore] Failed to fetch application info:', error)\n set({ applicationInfo: null })\n }\n },\n\n /* Init ao montar o Provider */\n init: async () => {\n const { fetchApplicationInfo } = get()\n\n try {\n // Buscar application info primeiro (não bloqueia o init)\n fetchApplicationInfo()\n\n let user = null\n\n // PRIMEIRO: Tenta buscar sessão do servidor (funciona com cookies)\n // Isso é essencial para Better Auth que usa session cookies\n try {\n const sessionData = await api.getSession()\n if (sessionData?.user) {\n user = sessionData.user\n }\n if (sessionData?.session) {\n set({ currentSession: sessionData.session })\n }\n } catch (sessionError) {\n // Se falhar (401), continua para verificar localStorage token\n console.log('[AuthStore] Server session not found, checking local token')\n }\n\n // SEGUNDO: Se não encontrou sessão via cookies, verifica localStorage token (JWT)\n if (!user && api.isAuthenticated()) {\n user = api.getCurrentUser()\n }\n\n set({ user, loading: false })\n } catch (error) {\n console.error('Erro na inicialização:', error)\n set({ user: null, loading: false })\n }\n },\n\n /* Ações de Autenticação */\n signUp: async (email, password, name) => {\n const { setLoading } = get()\n setLoading('signUp', true)\n set({ error: null })\n\n try {\n const result = await api.signUp(email, password, name)\n const user = api.getCurrentUser()\n set({ user, loading: false })\n setLoading('signUp', false)\n return result\n } catch (err) {\n set({ error: err })\n setLoading('signUp', false)\n throw err\n }\n },\n\n signIn: async (email, password) => {\n const { setLoading } = get()\n setLoading('signIn', true)\n set({ error: null })\n\n try {\n const result = await api.signIn(email, password)\n\n // Tenta obter usuário do token (se JWT)\n let user = api.getCurrentUser()\n\n // Se não encontrou no token (sessão opaca), busca do servidor\n if (!user) {\n const sessionData = await api.getSession()\n if (sessionData?.user) user = sessionData.user\n if (sessionData?.session) {\n set({ currentSession: sessionData.session })\n }\n }\n\n set({ user, loading: false })\n setLoading('signIn', false)\n return result\n } catch (err) {\n set({ error: err })\n setLoading('signIn', false)\n throw err\n }\n },\n\n signOut: async () => {\n const { setLoading } = get()\n setLoading('signOut', true)\n\n try {\n await api.signOut()\n set({ user: null })\n // Sincronizar logout entre abas\n if (typeof window !== 'undefined') {\n window.localStorage.setItem('auth:logout', Date.now())\n }\n } finally {\n setLoading('signOut', false)\n }\n },\n\n /* Magic Link */\n sendMagicLink: async (email, callbackURL) => {\n const { setLoading } = get()\n setLoading('magicLink', true)\n set({ error: null })\n\n try {\n const result = await api.sendMagicLink(email, callbackURL)\n setLoading('magicLink', false)\n return result\n } catch (err) {\n set({ error: err })\n setLoading('magicLink', false)\n throw err\n }\n },\n\n verifyMagicLink: async token => {\n const { setLoading } = get()\n setLoading('verifyMagicLink', true)\n set({ error: null })\n\n try {\n const result = await api.verifyMagicLink(token)\n\n let user = result.user\n\n // Se não veio no resultado, tenta pegar do token ou do servidor\n if (!user) {\n user = api.getCurrentUser()\n if (!user) {\n const session = await api.getSession()\n if (session?.user) user = session.user\n }\n }\n\n if (user) {\n set({ user, loading: false })\n }\n\n setLoading('verifyMagicLink', false)\n return result\n } catch (err) {\n set({ error: err })\n setLoading('verifyMagicLink', false)\n throw err\n }\n },\n\n /* Password Reset */\n forgotPassword: async (email, redirectTo) => {\n const { setLoading } = get()\n setLoading('resetPassword', true)\n set({ error: null })\n\n try {\n const result = await api.forgotPassword(email, redirectTo)\n setLoading('resetPassword', false)\n return result\n } catch (err) {\n set({ error: err })\n setLoading('resetPassword', false)\n throw err\n }\n },\n\n resetPassword: async (token, newPassword) => {\n const { setLoading } = get()\n setLoading('resetPassword', true)\n set({ error: null })\n\n try {\n const result = await api.resetPassword(token, newPassword)\n setLoading('resetPassword', false)\n return result\n } catch (err) {\n set({ error: err })\n setLoading('resetPassword', false)\n throw err\n }\n },\n\n /* Email Verification */\n verifyEmail: async token => {\n const { setLoading } = get()\n setLoading('verifyEmail', true)\n set({ error: null })\n\n try {\n const result = await api.verifyEmail(token)\n if (result.user) {\n set({ user: result.user, loading: false })\n }\n setLoading('verifyEmail', false)\n return result\n } catch (err) {\n set({ error: err })\n setLoading('verifyEmail', false)\n throw err\n }\n },\n\n resendVerification: async (email, callbackURL) => {\n const { setLoading } = get()\n setLoading('resendVerification', true)\n set({ error: null })\n\n try {\n const result = await api.resendVerification(email, callbackURL)\n setLoading('resendVerification', false)\n return result\n } catch (err) {\n set({ error: err })\n setLoading('resendVerification', false)\n throw err\n }\n },\n\n /* Session */\n getSession: async () => {\n try {\n const sessionData = await api.getSession()\n // Store current session for comparison (includes id)\n if (sessionData?.session) {\n set({ currentSession: sessionData.session })\n }\n return sessionData\n } catch (err) {\n set({ error: err })\n throw err\n }\n },\n\n listSessions: async () => {\n const { setLoading } = get()\n setLoading('listSessions', true)\n set({ error: null })\n\n try {\n const result = await api.listSessions()\n set({ sessions: result || [] })\n setLoading('listSessions', false)\n return result\n } catch (err) {\n set({ error: err, sessions: [] })\n setLoading('listSessions', false)\n throw err\n }\n },\n\n revokeSession: async sessionId => {\n const { setLoading, currentSession, sessions, signOut } = get()\n setLoading('revokeSession', sessionId)\n set({ error: null })\n\n try {\n // Detect if current session OR last remaining session\n const isCurrent = sessionId === currentSession?.id\n const isLast = sessions.length === 1 && sessions[0].id === sessionId\n\n // Se for a sessão atual ou a última, faz logout normal\n if (isCurrent || isLast) {\n await signOut()\n // signOut já limpa loading states e erros no finally, mas\n // como estamos dentro do fluxo deste método, garantimos:\n setLoading('revokeSession', null)\n return\n }\n\n await api.revokeSession(sessionId)\n\n // Remove a sessão revogada da lista local\n set(state => ({\n sessions: state.sessions.filter(s => s.id !== sessionId),\n }))\n\n setLoading('revokeSession', null)\n } catch (err) {\n set({ error: err })\n setLoading('revokeSession', null)\n throw err\n }\n },\n\n revokeOtherSessions: async () => {\n const { setLoading, listSessions } = get()\n setLoading('revokeSession', 'all')\n set({ error: null })\n\n try {\n await api.revokeOtherSessions()\n // Refresh sessions list after revocation\n await listSessions()\n setLoading('revokeSession', null)\n } catch (err) {\n set({ error: err })\n setLoading('revokeSession', null)\n throw err\n }\n },\n\n /* Refresh do token em background */\n startRefresh: () => {\n if (typeof window === 'undefined') return\n\n const refreshInterval = setInterval(async () => {\n try {\n // Se o usuário está autenticado mas o token está próximo do vencimento\n if (api.isAuthenticated()) {\n const token = window.localStorage.getItem('auth:token')\n if (token) {\n // Decodifica o token para verificar tempo de expiração\n const base64Url = token.split('.')[1]\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/')\n const jsonPayload = window.atob(base64)\n const payload = JSON.parse(jsonPayload)\n const now = Date.now() / 1000\n const timeUntilExpiry = payload.exp - now\n\n // Se o token expira em menos de 5 minutos, faz refresh\n if (timeUntilExpiry < 300) {\n // 5 minutos\n await api.refreshToken()\n const user = api.getCurrentUser()\n set({ user })\n }\n }\n }\n } catch (error) {\n console.error('Erro no refresh automático:', error)\n // Em caso de erro, faz logout\n set({ user: null })\n window.localStorage.removeItem('auth:token')\n }\n }, 4 * 60 * 1000) // Verifica a cada 4 minutos\n\n // Limpa o intervalo quando necessário\n if (typeof window !== 'undefined') {\n window.addEventListener('beforeunload', () => {\n clearInterval(refreshInterval)\n })\n }\n },\n\n /* Verifica se o token ainda é válido */\n checkTokenValidity: () => {\n if (!api.isAuthenticated()) {\n set({ user: null })\n return false\n }\n return true\n },\n\n /* Atualizar usuário manualmente */\n setUser: user => set({ user }),\n\n /* Profile Management */\n updateProfile: async data => {\n const { setLoading } = get()\n setLoading('updateProfile', true)\n set({ error: null })\n\n try {\n const result = await api.updateProfile(data)\n // Atualiza o user no store com os novos dados\n set(state => ({\n user: state.user ? { ...state.user, ...data } : null,\n }))\n setLoading('updateProfile', false)\n return result\n } catch (err) {\n set({ error: err })\n setLoading('updateProfile', false)\n throw err\n }\n },\n\n changePassword: async (currentPassword, newPassword, revokeOtherSessions = false) => {\n const { setLoading } = get()\n setLoading('changePassword', true)\n set({ error: null })\n\n try {\n const result = await api.changePassword(currentPassword, newPassword, revokeOtherSessions)\n setLoading('changePassword', false)\n return result\n } catch (err) {\n set({ error: err })\n setLoading('changePassword', false)\n throw err\n }\n },\n\n changeEmail: async (newEmail, callbackURL) => {\n const { setLoading } = get()\n setLoading('changeEmail', true)\n set({ error: null })\n\n try {\n const result = await api.changeEmail(newEmail, callbackURL)\n setLoading('changeEmail', false)\n return result\n } catch (err) {\n set({ error: err })\n setLoading('changeEmail', false)\n throw err\n }\n },\n}))\n","import { createContext, useEffect, useMemo } from 'react'\nimport { useShallow } from 'zustand/react/shallow'\nimport { useAuthStore } from './authStore.js'\nimport { configure } from './authSdk.js'\n\nconst AuthContext = createContext() // só para ter o Provider em JSX\n\nexport function AuthProvider({\n children,\n apiKey, // API Key para header X-API-Key (obrigatória exceto em modo internal)\n internal = false, // Modo interno: não exige API Key (para aplicações same-domain como dashboard)\n onError, // Callback de erro global\n}) {\n // Validação de props obrigatórias\n // apiKey só é obrigatória se não estiver em modo internal\n if (!internal && !apiKey) {\n throw new Error('[@riligar/auth-react] apiKey é obrigatória no AuthProvider. ' + 'Obtenha sua API Key no dashboard em https://dashboard.myauth.click')\n }\n\n const init = useAuthStore(s => s.init)\n const startRefresh = useAuthStore(s => s.startRefresh)\n const checkTokenValidity = useAuthStore(s => s.checkTokenValidity)\n\n // Configura SDK com apiKey e modo interno\n // Usamos useMemo para garantir que a configuração ocorra ANTES dos efeitos dos componentes filhos\n useMemo(() => {\n configure({ apiKey, internal })\n }, [apiKey, internal])\n\n useEffect(() => {\n init()\n startRefresh()\n }, [init, startRefresh])\n\n // Sincronização entre abas - escuta logout e mudanças no token\n useEffect(() => {\n if (typeof window === 'undefined') return\n\n const handleStorageChange = event => {\n if (event.key === 'auth:logout') {\n // Limpa o user do store - a aplicação redireciona automaticamente quando user é null\n useAuthStore.setState({ user: null, currentSession: null, sessions: [] })\n }\n // Se o token mudou em outra aba, verifica validade\n if (event.key === 'auth:token') {\n checkTokenValidity()\n }\n }\n\n // Escuta evento de sessão revogada (quando o usuário revoga sua própria sessão)\n const handleSessionRevoked = () => {\n // Limpa o usuário do store\n useAuthStore.setState({ user: null, currentSession: null, sessions: [] })\n // Dispara evento de logout para sincronizar entre abas\n localStorage.setItem('auth:logout', Date.now())\n }\n\n window.addEventListener('storage', handleStorageChange)\n window.addEventListener('auth:session-revoked', handleSessionRevoked)\n return () => {\n window.removeEventListener('storage', handleStorageChange)\n window.removeEventListener('auth:session-revoked', handleSessionRevoked)\n }\n }, [checkTokenValidity])\n\n // Verifica validade do token periodicamente\n useEffect(() => {\n if (typeof window === 'undefined') return\n\n const interval = setInterval(() => {\n checkTokenValidity()\n }, 30 * 1000) // Verifica a cada 30 segundos\n\n return () => clearInterval(interval)\n }, [checkTokenValidity])\n\n // Contexto com onError callback\n const contextValue = useMemo(() => ({ onError }), [onError])\n\n return <AuthContext.Provider value={contextValue}>{children}</AuthContext.Provider>\n}\n\n/* Hooks \"facade\" que a app vai usar */\nexport const useAuth = () =>\n useAuthStore(\n useShallow(s => ({\n user: s.user,\n loading: s.loading,\n error: s.error,\n isAuthenticated: s.user !== null,\n }))\n )\n\n// Auth Actions\nexport const useSignIn = () => useAuthStore(s => s.signIn)\nexport const useSignUp = () => useAuthStore(s => s.signUp)\nexport const useSignOut = () => useAuthStore(s => s.signOut)\nexport const useCheckToken = () => useAuthStore(s => s.checkTokenValidity)\n\n// Magic Link Hook\nexport const useMagicLink = () =>\n useAuthStore(\n useShallow(s => ({\n sendMagicLink: s.sendMagicLink,\n verifyMagicLink: s.verifyMagicLink,\n loading: s.loadingStates.magicLink,\n verifying: s.loadingStates.verifyMagicLink,\n error: s.error,\n }))\n )\n\n// Password Reset Hook\nexport const usePasswordReset = () =>\n useAuthStore(\n useShallow(s => ({\n forgotPassword: s.forgotPassword,\n resetPassword: s.resetPassword,\n loading: s.loadingStates.resetPassword,\n error: s.error,\n }))\n )\n\n// Email Verification Hook\nexport const useEmailVerification = () =>\n useAuthStore(\n useShallow(s => ({\n verifyEmail: s.verifyEmail,\n resendVerification: s.resendVerification,\n loading: s.loadingStates.verifyEmail,\n resending: s.loadingStates.resendVerification,\n error: s.error,\n }))\n )\n\n// Session Hook\nexport const useSession = () =>\n useAuthStore(\n useShallow(s => ({\n getSession: s.getSession,\n user: s.user,\n setUser: s.setUser,\n }))\n )\n\n// Loading States Hook\nexport const useAuthLoading = () => useAuthStore(s => s.loadingStates)\n\n// Profile Management Hook (novo nome estilo Clerk)\nexport const useUser = () =>\n useAuthStore(\n useShallow(s => ({\n user: s.user,\n updateProfile: s.updateProfile,\n changePassword: s.changePassword,\n changeEmail: s.changeEmail,\n loadingUpdateProfile: s.loadingStates.updateProfile,\n loadingChangePassword: s.loadingStates.changePassword,\n loadingChangeEmail: s.loadingStates.changeEmail,\n error: s.error,\n }))\n )\n\n// Alias deprecado para backwards compatibility\nexport const useProfile = useUser\n\n// Sessions Management Hook\nexport const useSessions = () =>\n useAuthStore(\n useShallow(s => ({\n currentSession: s.currentSession,\n sessions: s.sessions,\n getSession: s.getSession,\n listSessions: s.listSessions,\n revokeSession: s.revokeSession,\n revokeOtherSessions: s.revokeOtherSessions,\n loadingListSessions: s.loadingStates.listSessions,\n loadingRevokeSession: s.loadingStates.revokeSession,\n error: s.error,\n }))\n )\n\n// Application Logo Hook\nexport const useApplicationLogo = () => {\n const applicationInfo = useAuthStore(s => s.applicationInfo)\n // Retorna o logo da aplicação ou null (componentes usam fallback padrão)\n return applicationInfo?.image || null\n}\n","import { Navigate, Outlet } from 'react-router-dom'\nimport { useAuth } from './AuthProvider.jsx'\n\nexport default function Protect({ fallback = <p>⌛ Carregando...</p>, redirectTo = '/login' }) {\n const { user, loading } = useAuth()\n\n if (loading) return fallback\n if (!user)\n return (\n <Navigate\n to={redirectTo}\n replace\n />\n )\n\n return <Outlet />\n}\n","import { Paper, Stack, Image, Title, Text, Modal, Box, Divider, ThemeIcon, Group } from '@mantine/core'\n\n/**\n * Container wrapper para componentes de autenticação\n * Suporta renderização como Card (Paper) ou Modal\n *\n * @param {object} props\n * @param {'card'|'modal'} [props.variant='card'] - Modo de renderização\n * @param {boolean} [props.opened] - Controla visibilidade do modal (apenas para variant=\"modal\")\n * @param {function} [props.onClose] - Callback ao fechar modal (apenas para variant=\"modal\")\n * @param {object} [props.modalProps] - Props adicionais para o Modal\n */\nexport default function AuthCard({\n children,\n title,\n subtitle,\n logo,\n logoHeight = 28,\n width = 350,\n\n // Variant props\n variant = 'card',\n opened,\n onClose,\n modalProps = {},\n\n ...props\n}) {\n // Conteúdo interno compartilhado entre Card e Modal\n const content = (\n <Stack gap=\"sm\">\n {(logo || title || subtitle) && (\n <Stack gap=\"xs\">\n {logo && (\n <Image\n src={logo}\n alt=\"Auth\"\n h={logoHeight}\n fit=\"contain\"\n />\n )}\n\n {title && <Title order={3}>{title}</Title>}\n\n {subtitle && (\n <Text\n size=\"sm\"\n c=\"dimmed\"\n >\n {subtitle}\n </Text>\n )}\n </Stack>\n )}\n\n {children}\n </Stack>\n )\n\n // Renderizar como Modal\n if (variant === 'modal') {\n return (\n <Modal\n opened={opened}\n onClose={onClose}\n size={width + 50}\n withCloseButton\n radius=\"md\"\n overlayProps={{ backgroundOpacity: 0.55, blur: 3 }}\n title={\n logo ? (\n <Image\n src={logo}\n alt=\"Auth\"\n h={logoHeight}\n fit=\"contain\"\n />\n ) : title ? (\n <Title order={4}>{title}</Title>\n ) : null\n }\n {...modalProps}\n >\n {/* Quando em modal, não repetir logo/title no content */}\n <Stack gap=\"sm\">\n {subtitle && (\n <Text\n size=\"sm\"\n c=\"dimmed\"\n >\n {subtitle}\n </Text>\n )}\n {children}\n </Stack>\n </Modal>\n )\n }\n\n // Renderizar como Card (default)\n return (\n <Paper\n withBorder\n shadow=\"md\"\n p={24}\n w={width}\n radius=\"md\"\n {...props}\n >\n {content}\n </Paper>\n )\n}\n","var img = \"data:image/webp;base64,iVBORw0KGgoAAAANSUhEUgAAAjwAAADICAYAAADskzu8AAAQAElEQVR4nOzdCXxcZ3ku8PecM6PF1uZ9kfc4TmKyOMRZHNtYjm1tTlISMC2BQFhCQptAKGEp9Jbc20Jvoe29BUprmqZAAzfgEEJSW4vtxCzGEBKy4uyJsRPvliVZtpbRzLnPK49TR5FG0mjON2d5/r/f8RnPpjNHoznPfN933i8mI3TR+kfjB5wppXGraFLKdVZZIu8Qsc4ScWfh5rFYCoUofxLiuh14T76G9+SzYjsPW5J4OFkUPzipo7zjsZushBARQVVVVRFcZVnWma7rVuCq41j2pVKp+5ubmw9Knvh1u4LOGu4dL1rvxg/L4fNwAKnDL+FqHFQuwKMZbigIehB+Hrcse2PSsTbtHtP8hLznPUkhoshaunRpaXl5+SdxcXz/2xAykggX32lqavq9GObX7QoDezh3mnFn2/wjTuu3Lce5D2HnS9jtlzDsUIAUINtfmnLlr+xe98dz2lbfNeuu1nlCRJFVWlr6XhkgVCgc5xws71uyZEmxGObX7QqDWMZb73DtWTNa3mVL7zewpyeLqy1CrhAFkSWuvt9nI+Zfb7vJ2rn/fuTWV/eMv1fusFJCRFFiaXdRpjvYtl1UVlamX4xMtqYY2S50melnYUlxcXEJnq+gs7Ozu6en50QsFuvctm1bl4TUoIGn8rvtE+KJo5/B/temtSLmHAqNvuBuTUbz8HdmVx5dXLi+/asv3FR2WIjIuLq6ujKsPiAjhL/fToSDDlxsx7I/mUy+3tzcfEiG8a184cKFcW0tGep+A92ntrb2g7i+dLDH9Pb23rd58+a9koXRbFcm1dXVYx3HOQ8Xz8AyG4+feOo27EcpKirqWxRen44Xeh5B6JkTJ048F6YANGDgmfMvR+dIT+/f4bCwTkYwzocoUCyrGG/u2xNOch7e87fv+vi4XUJERqFlIV5YWDjiLmYctN/0f7ROSH19fTsO4M90d3fveOihh14f7LE7d+7smTVr1j4c1KdJBl1dXbsH+LmzsIwb7DEFBQVFkqXRbNdAampqxuO5rsDFxdjmguE8BvfXk4/ergtagBIIpFtLSkq2btiwIfDjHt8yhmfB+vaJVlz+HjvnWmHYofDT9/gfScz9O23VFCIKsjIcuy5HgLoNB/vlme6YSqUezHQ7Woya0brRKoblarsQVC5DePkL3R/DDTv94XHa4lTb0dHxeYTJBRJwbw48d7h2t937WVfca92T4x2IQq/vvY7WzHii9zP6NyBEFGja5QPX4CD9rsHug+6v5xAefoKA0dvvpm50S93b1NTUKHmQi+1C2NFT2t8z0q6vweB5JqDl7GPYn4slwN4UaubObHm3m5Jb9OUJUbToe/6Ts2a0PIa24g1CRGGwFAfp3k2bNv10oBsRHn6xdu3aZ9CtNhGtIS6WtoaGhhbclNfum9FsF1q2/ggBZYXkGJ7TRgh7L8JUDNvyawmgNwKPnqbrukk9G4unu1FUFaF55xsz7mx7/LWPlr8kRBQGK2pra59rbGx8fqAbN27ceBSro+Iz2WxXdXX15WjZynnYOR1anwLbCn4y8PzoR47dlvqS2NYkIYoyy5occ1NfvGi9+zFWZSbyB3SnvNLvKm2R1fE65TJUeZWTrsHyv0+/QmvZlJSUzBjsAbFYrBUtGYfEsGy3C2FnMsLOtTIMWsAQyxEsh7EPtXKz1tXTAc5zZJDZEvQx8P3Nmzc/MdTz62nv2JbyeDxeiseV61ltWMbg8R24XscftXd2drZu27atQ4ZpGPtlN/ZL96n/6/7Az5yG11SCdTta+Z7ue6PMOlG9SCx3BV4Ru7Io2k7WmlrZV1Vc5HdCRHmFA2YKB7JvDnKzjS4cPQOpDge28sGeA7dNRtfWVBz09p+6Tg+eOCB/XAb3Myw/FcOy3S68xndqt1OGx/WFFqweQth4eJDTzW3sp/m439V4rumnXa/jh+5C2HlxsOdOnxGmY3wW6plsA91Hz6Q7ZcyYMTrWSAPXgxpGZAhD7ZdEIvH3WO3F9i/C9i/H8849dRuC1uNYPR3TKSNakq31KZFKph0ihT9026m7aP2jTz9202K28hD5V6qpqekRHGz34CB3m55VNOgdU6m3YbVfQghddmchbJyd6T7YPyew3ImuvV0Z7pZC+HgB639AGLkS+3OlPg6BYT3Czp6BHqCtOcXFxWv0Yqb9P5B0PaAPYft34fJ9CLavSZawnTGEnQ/h4nn9Sxbg/321mexDJW0lCNBrLZ6VRZTm6qmYV+skuUJEvofQsw8HvBeGuNs0CSl8Xl061H0QWu4eIuyczkX4eBAhcWNPT883mpub9wx2R4SdMRqMRhp2TpfuSrsN3VDnSpbQevRhrM4b6DY33XtlO12JydhdFwoR/TfXvSBuFXFMG1FApMeiDAoHvawLAvqcjdeWsXUHweURPd1dRggBaSscyHQfBCMt9viIjJJ2xzmOc72OvZEsIDSVDXkfV+IrpW9yRSJ6gyWFKddZJUQUCO4QY1BxMA18peCBrF69WruzMoa5rq4ur2sKNWPplVHSViL8nq4Uj9iSSq4UInoLfHq+Q4goEHCwrMx0O1o5jkgIoStneqbb8br3eV0xeqBWHvzcNiy/xPU/QrfYv+Gy1jfbjv9nHBeJ3+O5VVVVE8UDMTz9OUJEA7DOEiLyvdra2vOHmmUcWiScxma6EfvFSNBLJBKb4/H4YgSa3yDcPDrYuJ+lS5c2l5WV3ZZpPrLCwkLNJb+QLOlZWXj+V7G0YOnF//sqTiPwuDM4ZRbRQNxZQkR+ZC9btqy8tLR0PC5fhiXjOFQ9HRtdJb+XEBpqbJKeZSUjVFdX9z8HmxFez/RCi87O/tdv2bKl7aqrrvpfDz74YMaft3379mMIqD/F898w2H3QRZex1WowCFp6qv23m5qadg10ewzxr0SIaCBjhYjySgez1tfX/6OMAg7ST6YrF4cO9k/XELcbG6M7VNg55dixY6+Wlw9aNkl/X+WSBbzWBxDGdg12u56KnvWpZEQhVyhEFGg6CSeWZgmv9iFuzyo8ZEOrIaPVbSFa02bKyTIAeuaUfnEcM1RRxH5G3BCDkHR0qDm+WHuHiIhCSas040D7nebm5oMSUghzx9AFlOkusxcuXFiwc+fOHvGOhW6qFdjXq3UKCRmlbGr64DFDTgMS2EnAiIiIMkHg+eFA403CJJlM7sp0u7aszJw5c8jChKNgI+x8EKHr6lyEnWzpvGBD3YeBh4iIQgUHvwPd3d3fbGxs/K2E3NatW3US0IxTZiCMVGl3k3igpqZmBZ7/fMkzhK0hpwFilxYREYWGdmNpZWEEgVckInRQNg74Uwe7XU8BLy8v/3h1dfV6dO8dl9yxEHaWy+DbpfNwbcLFPfj5ezds2PBG8Ue0Cn0VjzWaQRh4iIjItxBeXBywt/S7ehKuWzTQ/bULB8uVq1evfnnLli27JQK0wB9WKzJVXMZtM7D61Nq1a3+wcePGnIRBPFcFQk3FYLfjti0IWL8Sn2DgISIi39KZrhug/9VoIZiAg/jMgR6D661YLHbdunXrvnZ6q4IJaNG4tK6ubkRFSxFYEk1NTVskS9pqg66lzbh4Vab7Yb+MRwi5Bdv3IrbzSVx+Y6Av9lcc23Em7nPuYDV4+kskEhV43KC343naBroeLU0XmW7dUQw8REQUNNrqczcO2LcPdkYPDqiTOzo6NADcLwbh514sI5SupZN14FEITD9DkNGwMneo+2pVagSVt1SmdhxHRgKhqT1T4EGAuvyqq656/vT6PDojOn7OtZIHHLRMRESBg0YfbZ3YlOk+CETLcYAdMgCERAoB5C4xOIXG1q1bj2IfHxvsdgSbM3p7e79YX19/PVrkrkEg+ywC0ocRuDwZQD0UBh4iIgokhJ6foxVh12C3a9cWDrrvx4E2EkVE0wOS78Q+GaoYYa70DRDPdId0uLlQBzdnGlhtAgMPEREFFRoY3Lux7h7sDulJKt8pEbFp06b9CCFfw355UXIIz9eJ59WpG54//fr29vaHcFs2E5S+kOE2VzzAwENERIHV1NTUgm6TBzPdB6Hn0rVr154jEaEtPQgm/4qAsiHLMPKGdNDZhq6oLzc2Nm7DVW8aBL5jx45O7N9/16kdhvuc6Hrbit9ZpoKQnsxozsBDRESBpqc+46D8Uqb74Pb3VlVVFUl0uAgoOxB8voIw8p94/U9h3TGsB7puEssrCCb3dHZ2fgnP80CmiUG1VQn3+1utuZMp+GAbDiYSie8hpG6UPLDm3NniSdMRURjs+uh4T75pEBHlQ319/VQEkwlyclLPsafX7kFY6XEc59Xjx4/v3rZtW69kCT9jNlpwJuK5yvGc+hnajlagFoQvrf+Tt8zBwEOUAQMPEVE4sA4PERERhR4DDxEREYUeAw8RERGFHgMPERERhR4DDxEREYUeA88QbEskbmsVpPCcrNOV5Il5REQULQw8Q5hb7shtFxZJgROOwJNyXfnUtuMIPUJERBQZDDwZaMS5aLIja+cVhKh9R+TuKd2yfW/WNaWIiIgCh1NLZGAh5SyvjIcq7KjVs+JCREQUJQw8GWjQOX9i+BrBNMQVx1hAmIiIooOBJ4OZJbZUloZvF00otmVuGX/1REQUHTzqZXAFun5CMlb5TYrRaLVoModvERFRdDDwZFA3p0DCSM84e/tkB2shIiKKBAaeQZQXWnJBSFtBtNFqfoUjE4r46yciomjgEW8Q505w+goOhtXMUlsmFXPgMhERRQMHcgxiWWW4T90ej9adtyHUPX04Kay7TEQUHHV1dTNc1/2BeMyyrOsaGhpek5Bg4BlAEfbKxVPCv2tWzozLD1/oEZeJh4goMBBExmC1XDyW/jmhwS6tAUwf68jE4vDvmgsmxUJ5FhoREVF/DDwDmFduy7ii8CeByWNOdmsRERGFHQNPPzo7+lnjHCmJR6PpQ+cJIyIiCjsGnn7GIuicj64eOyJdPfVzwllckYiI6HQctNzP2JglCyqikwOnlTgyp9yRl1uTQjRc1dXVY23b3m9ZVol4zHXdmxsbG9cLEdEosIWnn4nFllSWRmdcizbuXDKF43hoZBzHudFE2FH4OX8uRESjxMDTz4oZ8VAXHBxIzZyCyL1mGhULrS6fEHMW1NbW1gsR0SjwMNfPskrve/m+t7NbvvlEl/zkpR7xgxkldt8ZW0TDgfBxDVpd5opZnxIiolHgGJ7TFKFn58JJ3u6Szl5XvvybE5J0ReaW23LN/PyfJTWh2O6bW+v1jpQQDYPx8IGAtbqurm5hQ0PDTiEawpo1axah23WCeMi27T2bNm16QSgwGHhOc/HUmBTGvD1laeeRpPSkc8WeYylJ4HK+u5PKCiw5Z7wjv3g9ISlWXaYMEDouxGqZ5AG60T6D1YeEaAixWOyrWK0RD+H9+E2sbhUKDPZjnGblDO/nz3r0QO8bl7uTIi8czf/ZUXoK/gWTHBkT4/nplFk6dOQFWnneu2rVKk+/tRNReDHwpMWw0/M3pAAAEABJREFUJ66Y5X3g2bEv8ab/P3ogIX5w7oSYlBYw8NDgEDamYLVO8qewoKDgk0JElAUGnrTZpXbfDOJe0vE7Ojv56Z485I/6N9NLbJk2lm8HGhzCxqfQypLvbvBb0K1WKEREI8QjXNq5E2NS4HE5ml3tqTfG75yiXVx+mK1cu7VqZnvfwkXBlA4ZH5P8G4flA0JENEIMPKBTK1w8JSZxj+eTeKU1Kb39GnT2HU9Ja7c/zo4y0aVHweS67kfkZNjwg9uFiGiEGHigvNCSeRWO5/NnPXW4Fy08b27O0f/+od0fgWdeuSNTWY+H3kr/MvwUMhbU1NTUChHRCPDoBlp0T4vveamr1+3r0hrotO9X2vwxjkcD3xp2a1E/CBf1eSg0mJFt2yxESEQjwsADlX2Vhr1t3mnpcmXvAIX9dPzOM0f8M3Fn7Zy48FwtOh3Che/mskIX2xotRChERMMU+cCj43cWTYpJoePtYf5IV0oOd761eUeveak1KQmfVPw7e3xMJrFbi9LSoeIK8Rm0OOl8XpxUlIiGLfJHNq2/c9k078+01bCjoWcg2vpztMsfgacYu+KCiZw9nU5CqPis+BQyz/tZiJCIhivygUdbds6s8PYAr403z7Yk+6aRGEh7j9sXevygAPtj8ZQYDiZCEadhAqHiT8S/CuPx+C1CRDQMkQ88iyY5fWdpeUknCn3iUO+gt2vg0dPT/UB79s6ZgH3CqsuRl65q7Osifwhkf1ZVVcU5AYloSJEPPDVzvJ+tPIkmHh2nM5gOBJ4DJ/wzU/mcMkemsupypKULDQah9WRScXExCxES0ZAi/c1IT8NeYWDC0OMJV147NnigSaZr8fhh5nQ1ZYzVd5r+cy3+OXuMzEqlUtfbtu2XQoND+RyWu4SIfKmmpmY8WmPLkslkha4dx+nB5VYsR7du3XpADIl04JlZavedku61xw8NPn7nlJfbktKD5ON1tefh0HE8l06LycN7En1hjKIHYSdvs6JnYUF1dfWa5ubmzUJEebN06dJSWIlQswj/PT+9nHnq9ljsvyMHQk/fgtZkPTmiBY/5A9a7cNPL+MLV7MXfc6QDzyVTzLz8HXuHnhF9D1qAetCgMtYndf8umRqTGMJXkokncmpra2uwWiABkq4V5KvAg/14AB/ik8VDOEDc0NjY+F3xEL6dT8P+3Ssew2u5AK/lqcFuR6i9HAfI7eIfOpHtqLp929vby7Zv335MAkxPbojH4+/ExXV4v9dIFvC48VhpK9CF+n/8nm/HvtWWn58g/PygqanpF5IDkQ48Kw3NHfXr/b1D3keLEp6cdsIfg4XPGef0ha9u9mpFURCrGOO4XDMfH4wvCRF5bvXq1ecg6HwRQfWPEVS8yBJTsNyMsH0zws9uXL4HXWD/gZaf5yRLkR2ZOr7IkrPGeV9vRgckD2csjJ6pNVAl5nyJo1urzsCAbvIXDQ1YVUvAaCFCfDD6tmYQUVjgM+LtCCAPIuzsxH/f51HY6W8Wls+i5edZtJz+WFsdJQuRDTx6JlKpgVOvX2hNynCLKGc6dT0fOK9W9Gho0PAgwfQBFiIk8saSJUuKEXT+Lz4jHsF/r5Q8wcfTtdiG57Ett8oIu0QiG3jOHu9ImYHA89QIQswTh/zVf7RkWsxIKCR/0DMpsHq/BJcWIvy4EFFOIVysqKio0K4krc3lh1L8pVi+jtaeh9auXTvss0kjGXgK8etaiMDj9fxZ6rf7hx94nm/xVwuPnq110WROMxEV+NakYaFYPIK+/p9gdb94CN/+PsFChBR2iUTCyNkk+nMQdr6Ai9vkZLeSr+DvvSqVSj1RX19/3nDuH8nAo60W2sLjtQ68J19sHf64nF3tKenq9ddZUVfM5DieKEiHhE+KhxB4vo0Pp/XirUlFRUVBbqUiGhJaMo00vTuO83Wsviz+NgufLb9Ea8/5Q90xkoGnrMCWueXev3QdhNwxgiCuZ0S92Oqvbq3FU9mtFQXFxcXXYTVJPIIPpD1NaXpZPIRvfZxFnSgH8LdUK8FQhmUzWnpmZ7pTJAPPgnG2jCvy/qXvPpbqq7I8En6rbqxns80q5TQTEXC7eAgfnNqyo38Mbvqyl87Dt71VQkSRoTWv8GXqIbRWTxzsPpE8kmk3jddtFvrJ/mpbUk6MsIvqdwf9NY5HJxE9d6Ljk+pA5IWampqVWA2rDzwb+BDq7ezsfCPk6GW9TrwVxFpCRDQ689Clfc9gN0Yy8Cye4v34nW4EHZ0uoneEpXWeOjT809hNKIpZcv7EmJEB3pQftm17HQ4e2LZt2+FT/0lffkC8VZ+uKUREEYKWnlVo4b1hoNsiF3gqx6KLpsz7wKNdWa+2jbyQ4JEuV9q6/VOAUJ07wZGyQgaeMEqHgrXirW8P87qcSRci/LQQURT9w0BdW5ELPO+YUSAmGiuOo8H+9SwqJ3cnXdl73F+BZ265IxUMPKGEXHCbePg5oAOUGxsbm/tfr9d5PXgZPlBXV1cmRBQpOjcXura+3v/6yAWe2jlmqgcf7UrJwRMjDy46gegf2v0VePQsrYunsLRJ2GgYwAfDh8Rb/yInh7T156Zv89IYLKOa3JGIggmfbX+Mz7gzTr8uUoFHKysvmmTmwK1VkxNZ5BadQPRln52arlbN4jQTYZNKpW6Wk6HAEzowuaur698Gu11vMzB4+TYWIiSKJM03n+5/RWRoscFCQx99j+7P7nNcBzlrAcIen2WexWjhsdmrFSY2fEI8hG9YPz19sHJ/epveR7w1qbCw8L1CRFF0Q3rKnD6RCjzaLRMzdNR+5kj2X1wPdo68fo/XtFtrMbu1QqO2tvY9WFWKh5LJ5Ppc3Ge0EOw+I0QURcX4+7/u1H8iE3h0/qxFk2NGBiy3drvy2rHsx+EcOO5Ke4+/Ao+6ah6nmQgRT09F1wHJzc3Nm4e6n97HwODl83TyQyGiyMHnyxszu0fmK/vkMbbMKDGT7353oFdGMyXWka6UtPVoYPJXHl09Ky5/85uTU2BQcKF1Zwm6ki4Rb31rhPf9W/GW9uX/TCjI2nHw+sVw7oj3txbSrBAPYVv2YvWyjEIqlfJXpdkQwnth5cKFCwt27tzZE5nAU4mwo6HHhEf2j+49rC1ErV3+a+GpKLLkjHJHdvps+gsaGXwAeFqfJj1Y+c7h3l/vW1RU9NfYLs8+j/RbntYcampqekkokNAa+AxW7xjOfdGip6UQ1oiH8H69r6Gh4VYhvyuYPXt2PQLP/ZHo0tJhO/MM1ZLRmLJjX0JGQysta6jwW+SJWZZcNo3jeIKsurp6JlbXiIdwILg/02Dl/tKDl+8XD1kncboJIm88gy8V92DRltqPYb0Wy/W4/Bms/xNLm+RXvf4TiaNX3D5ZR8bEeGWtkvxK2+jr6Ow8jMDj6ge1+IaDeHwJAs/dz3X77iwyGp70NBKeftFBM/2IByLrY7Bt7xYPIfDcgG/+f4Fv5e1CRKP1Opbv42/3e2g5/f1Qd0ZX+tVY/SX+Di8WwxC4LtV1JFp4ChzpmwDTBJ1OIpGDybBeaPVfC49mr9mljkwZE7l6laGA1p2xWN0oHsIHy0v48NsiI6SP0ceKt8bgZ/ypENFofQVfHGZg+dxwwo5qbGx8AMsl+Bt8F/7bKWb1FSCMxJFrfJElc8vMBJ5n0RWVzEFS0Wkp/DSJ6ClTxlgys5SBJ4gcx7kR365KxEN4/mGP3cnlY0fwM7TyMt/ARFnQrim06FyJoPNFyRJCz314jiW4OOxu79HC3/3Y+vr6qZH4w185I97XHeM1DShPHeqVZA5mhuhIuLKn3X/9RuWFtiyocFiEMHgsfFh5WmhQByt3dnb+u2RJH2ug8nIlurVYiJBohPRvE0GlBi06G2WU8BxPJpNJr6e1eRP8vDOjEXhmmpkWQYsF7j6WyllX1GMH/XfGogadZZVxKXSYeIIE/efX4FvOXPHWfSMZrNxf+rH3ifc+J0Q0Ivj8uKO5ufk3kiN4rv9CiPqumDMt9IFHCw5eOtXM2Gytn3O4M3f9UL/d788SDToeqsBMDyHljokzlL4to5eL5xjKeTU1NcuFiIbrZ+jG+orkmG3bn0foMTV4oyz0gUcnCy2MmWmN2H/c7Qs9ufLU4V7fDVxWOmh5fjkTT1CgC+dCfDtbJh7SAcfom98qo6TPYWDwsn7Q/rkQ0XCcQHeznkGZ88PRpk2b9mP1SzEAf/MloQ88S6ebad3Rd8Le46mcTgnxUqv/5tQ65eozOHt6UCBAmJhLKpctMyZaea5O1yQiogzw+dE0mq7qYWgWM8LdwhOzzY3f0VnOn29J9q1zRc/2Gs2cXF5aNYvzagXBqlWrpmC1TjyUrqz8b5Ij+lwGBi/bnFSUaGj4W7xXPITW50fEALyOcJ9frNNJTCw28xK19s7vj+T+M/rlNn9W+NN9ewa7tXyvoKDgU15O2aDw/D/GN8BWyRF9Ln1O8Rh+xkfQ3VcmRDSo7u7uB8RD6C4zEngk7C0854x3pCRuZvxOInmy6GCuPXnIv3PLLa/kNBN+hoN5IVYfE49lU1k5H885AC1EeJMQ0WAexBeQDvGQfsHB3+ER8V5BaAOPnj79tgmOFBsKPDpY+cCJ3AeeZ48kfVmAUNXMjrMej4/hQ+QjWI0TD6UrKz8sOabPaWLwMlp5PiksREg0IPwNPiZmHBUDQvuHri07Z42LialyMTpDetKDYHKo05WWLn+O45mNLq3K8I97Dyp9598uHkNg8KwlxsvnPk1lbW3te4SI3gJ/gyZaXvTn5KxLPJPQ9kmMK7LkjApzB+NHPKqZo2dptXS5MrFYfOdkqHRkj08HVkdZdXX1WgOFBvUb4FwEhr8WD+C5x1tmZs/VU9TvESJ6E/wNmpr+wUgLT2gDz4QiW6aPNRd4njjoXeDZdzwlC8b5b4DwGAQerXP08J6EJ61blD3HcUwUGtRvZoGfjFNnb0ZAvLy5uflXQm9h27an3aLkX6lUykgLDxwXA0LbH7F4SkyKDBUc1LE7f/ColUPn1NKJRP3ISY+TKi3gQB4/qaurW4jVFULDhoP6pyWAENY8rw+Bg94UoUjCFydjE3yaENoWnqoZ5l6a5qq/vnyMeOW8iY5o8W3Lh7nijApHxqM1rbXbn6fPRxGaoT9r+fHN4mPYX+/UQoRo5dkjAYLftaez3yuEwclCkdTb2+vpGVqmhTLw6DxP50ww99ImFNty3dmFEkVTx1oyo8SSV9qEfGDVqlUTcPD+E6GRsvFtVlt5bpMAMRF4gIEnouLxeKi+OYWyS2vRJEcqCvkN14S4bckVrLrsGwUFBXqadTTT9yjpafxo5RkrAYJwWyoew35h4KFQCGXgWcMDsFGXTWUBQj9IFxq8RSgrCA8laOW5WXLHRNXQGeIx7JeLhCgEQhd4dCDt6tmc2NKkM8fZfTOoU36lUqnrxeNCgxGgZ7fl6s18QjyGMHKBeGjJkiVaEGOVEIVA6I5SWghvZinneDLJtiypnbLgkowAAA/iSURBVMOQmW+cDDMnKmtqat4tuWHiVNuzFy5c6FmTdkVFxbVYscmcQiF0gef8STHh6B3zrprHz8R8qq2trcFqgdCoodUkVwOXTQQee/bs2Z61wLiue60QhUToAs+KSs7vlA+LJsdkQhF3fB4ZKTQYBQg8S+rq6i6UUcLzGCmmBu8TD6xevbocqxohColQBR49M2v+OI4lyQeNOhdM4uDlfEAXzHysqoVyBi0bfyGjhOfwfAxP+uf8UXqsTU7F4/FvIbQF6qw1w/iBFzChSgfTS2yZWMzAkw9a527lzDi7E/PAtm0tNMhdn0PYne/SQoQyCniOvWKAnl1WUVHxeckhvPYrsbpOAgoh8Jh47wyhQAlVOphX7rBbJU90r+s0E+Wsf2SUFhoUj7o0Ig450h5VNyEOus+JIfhZX0BIOVdyQLuyHMe5SwLM0CzfHDMXMKEJPHG8knPGO1Ic4wE3X/TU9BmlbGEzCd0OH8fKu3lNou3G0RQixEHXWODBz4ohpDTW19efJ6NQV1d3RiwW246LkyTAEABNBJ7Z6dpXFBChOTrpRKEXTuLp6Pk0odiSs8Y57NYypKqqKoYD3SeEPKFdRWjl+Zhkqbu7+/diVmUqldpRW1ub1dQiNTU170JQeBKv+20SfC1iAPbXTUKBEZrAoy07C8Yx8ORToWPJokmxvrnMyHvFxcU6xiLQ38QD4FbJ8nPyoYceeh0rE2NJ3qCDjLH8P4SezWidunyo++tgZwSdD+H+v0K4uzcsg5QNdWmpr2D/TRMKhNCMMj+zwu6bxJPyS+cx0/DZnXSFPHe7kKdw4JyLbotrGxoa7pXs/BrLGjEM270aXVyrse3aCvEIrnoU6524/lUsOth2Hv5/NtbLw3gmFlq6jiDAidfSAfPupUuXvnP79u3DDrf4vbx7FO8pylJoEsKa2Sx85wdnVHDgsgn4VrkSq1GN16Bhy7oQIUJFg+QZDsiXYPlTBIBvYr0RV30dy224XBvW084ReHaKOVeUlZU9jVayi4e4n6XdjVieweUNWC8RMio0LTzLprMkgh9o687yyrj8ob1byDujPYOIRmSpFiLEN/LHZYSSyeR/xWKxfxQyavPmzS/id/aaGJhcNW02wuMjCDEbsX4GQfdZLIfxdzpPtwGX5+L6Rbh85mmP0bMrdwgZE4qUMG2sJXPLOXDEL9bMisvdzzLweCVdaHCteK+7s7Nz6rZt21rFh6qqqiqKi4v346KJM2U+h2XEg4H1wIuD4Es42M0XMu3nYriWEH7P+ne5VstinV4aa6AyWbjufevWrfvkhg0bkkJGhKJLa8k0TifhJ0umxaSQ+dMz6bmeTPzt/tCvYUelt+2HYgC+ob9r1apVUyQL+H39QCgftom/VbS1tdUJGROKFp5Vs8zP1P3YgV5JGR6XO6vM7qt143dxx5Kl0+Py0J6EUG6hmb4Mqw+JATjI/6v4nG4jAsUHxGNa5yYej+sg8RHPSN/T0/N1PPYL+hxCJj0kPuc4zvux+i8hIwL/B6gDZE3P4dTW7cotDx+XXsOJ57qzC+VTb8/5lDmeqJnDwOOFVCp1s23bJgoN7mxsbPT9+ALdRoRAHaC6ULx3c3V19R3Nzc0jmhR069atR7CN2hLFitgGNTQ0vIz9fgAXs2qZM0HnQUPXbBFaK7uEPBf4wDMPrR4lcbP9Wa+0JeXgiZTxFp6mXYnABJ5laOEZg3fXiV6h3NHpDkwVGvR9685pdFu/Lh5LFyL8SDY/K5lM/h98m2fgMW89lr8Sn8J7qqi4uPg9uPg9Ic8FfgzP+WjdKTIc23YeSUo+qswcQMg61JmSIBiDEDq/ggN5cqm2tlY/GCvFezpY+T8kINLbamqUvI6fGvE3LLQKPYbV/UJG4b3xNbSiGKm6PArvFzIi0IFHB8aeN9GRAsdcC4+LpPO7g719a9N6kmhdag1I4EEIvWgKhyzkmJFT0XGAuAdN7B0SELqtus1igBYiRPB8p2QB3ZF/iu0MzH4Ng/R74+/E367IdkA8jUygA8+4QrtvhnSTHVrHEq7sas9P6EigD+33R4LRR6QDly/oa33j6XO5oEXKtICcGICfE6TurD6Gtzmr4NnU1LQP2/k/hIzq7u7WLsgD4l9OPB43evp8VAU68EwstqSyxOxLOIRupaPd+Qo8Ik8dTkoyAI08GnPml9syoYiBJxdwoPy0mLGzoaHh1xIw6W02Ul0Xv4vlWohQsoDt/CesNgsZkx4Q/DfiY3hPMfAYEOjAo8UGTc+fte94Slq78zdP1N6OlLR0B6Nba2aZI1PHcn6z0aqurp6J1TViALpdviXB9S9iCLpJRnx6+qmHtre366zkzwkZg6Cp7+t7xb8WpwuKkocCezTSwpVa4M7g8J2+cTt7jqXkWE/+As9+tDAd6QzGxJylBVbfGCu28YxOehoJz/9WcRA+jub/70pAdXZ2fkdfg5ixLttxF+lJJuuwrW0SENjWfQb3rRdSJSUlf4LX0CQ+hVaeDwp5KrCBRzf87ZPNDortSbny3NGk9OaxgaWly0XgCUYLjwadFTPiYjHxZA2tOzq5441iAD5wfxSkwcr96bbraxADtIhgQUHBn0uWGhsbdyHILsfF18X/dmO5HEuQA4/oFA67d+++WvxbkJBlCzwW2MBTUWj+tOfupMjzLfmd9uR4wpUXWs3XAMrWBRNjEmevVtYcx7lR67+IAejOCtxg5f4Mv4Yb04E0K5s2bXoa26szbD8rPoUWkVexWqoBTUJg586dPWgJXIvX9W3xGT0DsK6u7jIhzwT2ULRyZlwcw1vfnXRl97H8t648frBXkgEJPOOKLOMtcSFi4YPZVKHBnU1NTY9IwKVfg5HByzAOgXRU03zomVtYXYbf8y/EZ7BNd3d1db29oaHhNQkRHcSMAHcTwuaVfqvRg+25XsgzgQ08tXMKxLRWdCdpheV8e64FgScoTTxw5Tzzv6swqKmpuVa/9YkB+KD9ZwkJk68FP0u7tUbVaYtA0V5aWroSz/VnWA5K/u1GGFiDUHC9nyePHS2EzY2JRGIh9vnD4hN6tta6detYsdUjgQw8WnBw2XTzrQa/2pvwRcvKq+0p6QpKEw/UzeFs9tlIz4ruOR2Mim/yoSltr6/F1ABbDaQIplfLKOn4EgSMb2Hbz8C2/20+BginWzv+srW19WyEgS0SAVu3bj2A/X5FMpms1gHNWPL5wfooguYN+l4Q8kQgA8854x0pzENBu9/s90fRPx00vWNvcCapGldky1nj+KVlJLTOCw6my8QA/JwfBnmwcn/pwcs/FENyGUx123EA/gKCz1Qc/G4RM91zWpTv8/iZs9Ha9OUdO3Z0SsQ0Nzdvxn6vxe/yXGQe02cq/gy/6zrs+4sRNH8q5JlADq64fFpc8uGZw/4J3r/a1yt1c4PTVbS8MibPtvCLy3BpnRfL0Olt+FmBH6zcn74m7L8PiwH4OVUIqAtxwMpZOEkHUO2a++fa2tpleD21tm2vwv9zMqhVp7jAdt+Hi/diux8U6pP+Hd5QVVV1S0FBQZXjOKvx/1XYX2+zcvgHied7Cqt7ent7v79ly5bdQkZYc+5sCU7fCGjdnbvrSuQyw6FHx+4suafNN2dHzSmz5eF15RIUv96XkA80dvRViw6SXR8dz8448g0ciEsKCwuXIfxchIPm+bjqAhyHzxrGQ1/G8gSWx9Ga8BhaEhqFhq26unoyws8avYj9fjbWk7HfJ2BdOoyHv4jleTzuWTzmuUQisQMhx7dn5oVZ4Fp4po21ZfIY8z1xTx7q9dWp4Dqfl05xofOJBcEU/M6m43f3Bx+c5UYUVOmWn8b08oaamprxaC2oQKuEfgsqQ6jpxAG6FQfZo2i1OCQ0Kujy0sHk308vb7JmzZrp2NcTEWbG6X5PJpPHsG5HMD2mA9KFfCNwgUenk8jHQf4Rn4zfOd2zR5Jy+fRgBJ7xRbbMH+cw8BB5AC02OuDYV6dYR8XmzZv3YrVXyPcCNWhZz/Q5s8Lum7LAJB23/9sD/gs8fgxhg9Hf2cLxjtGpQIiIiE4JVOApwtHy3IkxiRne6iNdKdl33H9DnbbvTQSm4rKG1YumxGRsnImHiIjMC1TgKcHBcuEE86c3a3Xlbh/WvTnc6WIJThfRmejSKilg4CEiIvMCFXjKCy2ZVWp+k587kpSuXv8Fno6E2zd7e1DowOX55azHQ0RE5gUq8CyZHpNiwwUHtctIZ0jv8WEJmeMJkVfaglPbRsfv1M7JTw0lIiKKtkAFnhUzzJ9Upq0or3ekxI9DZbTV6QWEsd4Anfh0OUKrxV4tIiIyLDCnpVt9iyVPHDJ7ZtLhE65vW1E0hD2D7rbfHkgYb/nKlp7xVlFgydHuQNW7JCKigAtMpWU9nE8Za75Bqhd9Wq04OPu1FUUnUi0vtAM1OWdLZ0p6AtIqxUrLREThEJgWHk1l+4+zaF1/3cmT014QERHR4AI5eSgRERHRSDDwEBERUegx8BAREVHoMfAQERFR6DHwEBERUegx8BAREVHoMfAQERFR6DHwEBERUegx8BAREVHoMfAQERFR6DHwEBERUegx8BAREVHoMfAQERFR6DHwEBERUegx8BAREVHoMfAQERFR6DHwEBERUegx8BAREVHoMfAQERFR6NlYuoWIBpIQIiIKBQ08x4WI3sp1O4SIiEIBgcfaLUQ0AOs1ISKiUEDgcZ8XIhqA+6wQEVEo2K7Iz4WI3sp2HhYiIgoF27aSW8XlwGWifnosSTDwEBGFhJ1wuw6JZT0pRHQa9/FkUfygEBFRKNhTkgeOua77gIjFU3CJwBWr17LsjZM6ynmWFhFRSNiP3bQ4IalkAz7m9woRiSXyetKxNj12E78EEBGFhdbhkYky8Wl8zD+MT3pXiKJM/wZc92e7xzQ/IUREFBrWqQsz7mybH5PeX+KqKUIUVZZ7MGU5S3Z/uOIVISKi0LBPXXjto+UvpURuxcUuIYoi1+3EN4BbGXaIiMLHPv0/u18b/2Os/kmEXVsUOa4r1jdf3TP+XiEiotB5U+CRO6xUIh77GuLOBkusXiGKAH2vY7mvMBX7qv4NCBERhY7d/4rXP1h2RHqtz+HiT4UtPRR+LtznJuT2F24qOyxERBRK1mA3LFjfPrHb7v2sJe4tYlnFQhQ+Ol7tn7RVsy/oExFRaFkZb73DtefObHk3mnm+gbtO0opsQhR0J089P6iD9PvGrbEbi4go9IYVYGbd1TrPTqa+hJaeFQg/lThexIQocLSQoBbYtB7uFfvLemaiEBFRJAy/xeZHP3Jmnahe5CTdetdNrcVDL8S1BULkdzo5rmU92TeFSirZoIU2WUWZiChaRtxFddF6N36opK3E6UpMdiW+EgeQlXiac3BUmYGDSgnuEhei/OnGchzvyd14Tz6PFsmf21Zyq06Sq/PG9U2lQkREkfP/AQAA//88SKkNAAAABklEQVQDAA6qYV8FYNJoAAAAAElFTkSuQmCC\";\n export default img;","import { useState } from 'react'\nimport { TextInput, PasswordInput, Button, Stack, Anchor, Divider, Group, Center, Text } from '@mantine/core'\nimport { useForm } from '@mantine/form'\nimport { IconMail, IconLock, IconArrowRight, IconBrandGoogle, IconBrandGithub } from '@tabler/icons-react'\nimport { useAuthStore } from '../authStore.js'\nimport { useApplicationLogo } from '../AuthProvider.jsx'\nimport AuthCard from './AuthCard.jsx'\n\nimport defaultLogo from '../assets/logotipo.webp'\n\n/**\n * Formulário de Sign In completo com Mantine\n * Suporta email/password, magic link, social login\n *\n * @param {object} props\n * @param {'card'|'modal'} [props.variant='card'] - Modo de renderização\n * @param {boolean} [props.opened] - Controla visibilidade (apenas para variant=\"modal\")\n * @param {function} [props.onClose] - Callback ao fechar (apenas para variant=\"modal\")\n */\nexport default function SignIn({\n // Configuração\n logo, // Removido default, será calculado abaixo\n title = 'Entrar',\n subtitle = 'Acesse sua conta para continuar',\n\n // Variant\n variant = 'card',\n opened,\n onClose,\n modalProps = {},\n\n // Features\n showMagicLink = true,\n showForgotPassword = true,\n showSocialLogin = false,\n showSignUpLink = true,\n\n // Links\n signUpUrl = '/auth/signup',\n\n // Callbacks\n onSuccess,\n onError,\n onMagicLinkSent,\n onForgotPasswordSent,\n onSocialLogin,\n\n // Custom labels\n labels = {},\n\n ...cardProps\n}) {\n const signIn = useAuthStore(s => s.signIn)\n const sendMagicLink = useAuthStore(s => s.sendMagicLink)\n const forgotPassword = useAuthStore(s => s.forgotPassword)\n const loadingSignIn = useAuthStore(s => s.loadingStates.signIn)\n const loadingMagicLink = useAuthStore(s => s.loadingStates.magicLink)\n const loadingResetPassword = useAuthStore(s => s.loadingStates.resetPassword)\n\n // Hook para buscar logo da aplicação\n const applicationLogo = useApplicationLogo()\n const finalLogo = logo || applicationLogo || defaultLogo\n\n const form = useForm({\n initialValues: {\n email: '',\n password: '',\n },\n validate: {\n email: value => (/^\\S+@\\S+$/.test(value) ? null : labels.invalidEmail || 'Email inválido'),\n password: value => (value.length < 6 ? labels.passwordTooShort || 'A senha deve ter pelo menos 6 caracteres' : null),\n },\n })\n\n const handleSubmit = async values => {\n try {\n const result = await signIn(values.email, values.password)\n onSuccess?.(result)\n } catch (error) {\n onError?.(error)\n }\n }\n\n const handleMagicLink = async () => {\n if (!form.values.email) {\n form.setFieldError('email', labels.emailRequired || 'Email obrigatório')\n return\n }\n\n try {\n await sendMagicLink(form.values.email)\n onMagicLinkSent?.(form.values.email)\n } catch (error) {\n onError?.(error)\n }\n }\n\n const handleForgotPassword = async () => {\n if (!form.values.email) {\n form.setFieldError('email', labels.emailRequired || 'Email obrigatório')\n return\n }\n\n try {\n await forgotPassword(form.values.email)\n onForgotPasswordSent?.(form.values.email)\n } catch (error) {\n onError?.(error)\n }\n }\n\n const isLoading = loadingSignIn || loadingMagicLink || loadingResetPassword\n\n return (\n <AuthCard\n logo={finalLogo}\n title={title}\n subtitle={subtitle}\n variant={variant}\n opened={opened}\n onClose={onClose}\n modalProps={modalProps}\n {...cardProps}\n >\n <form onSubmit={form.onSubmit(handleSubmit)}>\n <Stack gap=\"sm\">\n <TextInput\n label={labels.email || 'Email'}\n placeholder={labels.emailPlaceholder || 'seu@email.com'}\n leftSection={<IconMail size={16} />}\n {...form.getInputProps('email')}\n disabled={isLoading}\n />\n\n <PasswordInput\n label={labels.password || 'Senha'}\n placeholder={labels.passwordPlaceholder || 'Sua senha'}\n leftSection={<IconLock size={16} />}\n {...form.getInputProps('password')}\n disabled={isLoading}\n />\n\n {showForgotPassword && (\n <Anchor\n size=\"sm\"\n ta=\"right\"\n onClick={handleForgotPassword}\n style={{ cursor: 'pointer' }}\n c={loadingResetPassword ? 'dimmed' : 'blue'}\n >\n {loadingResetPassword ? labels.sendingReset || 'Enviando...' : labels.forgotPassword || 'Esqueceu a senha?'}\n </Anchor>\n )}\n\n <Button\n type=\"submit\"\n fullWidth\n loading={loadingSignIn}\n rightSection={<IconArrowRight size={16} />}\n >\n {labels.signInButton || 'Entrar'}\n </Button>\n </Stack>\n </form>\n\n {showMagicLink && (\n <>\n <Divider label={labels.orContinueWith || 'Ou continue com'} />\n <Button\n variant=\"light\"\n fullWidth\n loading={loadingMagicLink}\n leftSection={<IconMail size={16} />}\n onClick={handleMagicLink}\n disabled={isLoading || !form.values.email}\n >\n {labels.magicLinkButton || 'Enviar Link Mágico'}\n </Button>\n </>\n )}\n\n {showSocialLogin && (\n <>\n <Divider />\n <Group grow>\n <Button\n variant=\"light\"\n leftSection={<IconBrandGoogle size={16} />}\n onClick={() => onSocialLogin?.('google')}\n disabled={isLoading}\n >\n Google\n </Button>\n <Button\n variant=\"light\"\n leftSection={<IconBrandGithub size={16} />}\n onClick={() => onSocialLogin?.('github')}\n disabled={isLoading}\n >\n GitHub\n </Button>\n </Group>\n </>\n )}\n\n {showSignUpLink && (\n <Center>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n >\n {labels.noAccount || 'Não tem uma conta?'} <Anchor href={signUpUrl}>{labels.createAccount || 'Criar conta'}</Anchor>\n </Text>\n </Center>\n )}\n </AuthCard>\n )\n}\n","import { TextInput, PasswordInput, Button, Stack, Anchor, Center, Text, Divider, Group } from '@mantine/core'\nimport { useForm } from '@mantine/form'\nimport { IconMail, IconLock, IconUser, IconArrowRight, IconBrandGoogle, IconBrandGithub } from '@tabler/icons-react'\nimport { useAuthStore } from '../authStore.js'\nimport { useApplicationLogo } from '../AuthProvider.jsx'\nimport AuthCard from './AuthCard.jsx'\n\nimport defaultLogo from '../assets/logotipo.webp'\n\n/**\n * Formulário de Sign Up com Mantine\n *\n * @param {object} props\n * @param {'card'|'modal'} [props.variant='card'] - Modo de renderização\n * @param {boolean} [props.opened] - Controla visibilidade (apenas para variant=\"modal\")\n * @param {function} [props.onClose] - Callback ao fechar (apenas para variant=\"modal\")\n */\nexport default function SignUp({\n // Configuração\n logo,\n title = 'Criar Conta',\n subtitle = 'Preencha os dados para se cadastrar',\n\n // Variant\n variant = 'card',\n opened,\n onClose,\n modalProps = {},\n\n // Features\n requireName = true,\n showSignInLink = true,\n showSocialLogin = false,\n\n // Links\n signInUrl = '/auth/signin',\n\n // Callbacks\n onSuccess,\n onError,\n onSocialLogin,\n\n // Custom labels\n labels = {},\n\n ...cardProps\n}) {\n const signUp = useAuthStore(s => s.signUp)\n const loading = useAuthStore(s => s.loadingStates.signUp)\n\n // Hook para buscar logo da aplicação\n const applicationLogo = useApplicationLogo()\n const finalLogo = logo || applicationLogo || defaultLogo\n\n const form = useForm({\n initialValues: {\n name: '',\n email: '',\n password: '',\n confirmPassword: '',\n },\n validate: {\n name: value => (requireName && !value ? labels.nameRequired || 'Nome obrigatório' : null),\n email: value => (/^\\S+@\\S+$/.test(value) ? null : labels.invalidEmail || 'Email inválido'),\n password: value => (value.length < 6 ? labels.passwordTooShort || 'A senha deve ter pelo menos 6 caracteres' : null),\n confirmPassword: (value, values) => (value !== values.password ? labels.passwordMismatch || 'As senhas não coincidem' : null),\n },\n })\n\n const handleSubmit = async values => {\n try {\n const result = await signUp(values.email, values.password, values.name)\n onSuccess?.(result)\n } catch (error) {\n onError?.(error)\n }\n }\n\n return (\n <AuthCard\n logo={finalLogo}\n title={title}\n subtitle={subtitle}\n variant={variant}\n opened={opened}\n onClose={onClose}\n modalProps={modalProps}\n {...cardProps}\n >\n <form onSubmit={form.onSubmit(handleSubmit)}>\n <Stack gap=\"sm\">\n {requireName && (\n <TextInput\n label={labels.name || 'Nome'}\n placeholder={labels.namePlaceholder || 'Seu nome'}\n leftSection={<IconUser size={16} />}\n {...form.getInputProps('name')}\n disabled={loading}\n />\n )}\n\n <TextInput\n label={labels.email || 'Email'}\n placeholder={labels.emailPlaceholder || 'seu@email.com'}\n leftSection={<IconMail size={16} />}\n {...form.getInputProps('email')}\n disabled={loading}\n />\n\n <PasswordInput\n label={labels.password || 'Senha'}\n placeholder={labels.passwordPlaceholder || 'Crie uma senha'}\n leftSection={<IconLock size={16} />}\n {...form.getInputProps('password')}\n disabled={loading}\n />\n\n <PasswordInput\n label={labels.confirmPassword || 'Confirmar Senha'}\n placeholder={labels.confirmPasswordPlaceholder || 'Repita a senha'}\n leftSection={<IconLock size={16} />}\n {...form.getInputProps('confirmPassword')}\n disabled={loading}\n />\n\n <Button\n type=\"submit\"\n fullWidth\n loading={loading}\n rightSection={<IconArrowRight size={16} />}\n >\n {labels.signUpButton || 'Criar Conta'}\n </Button>\n </Stack>\n </form>\n\n {showSocialLogin && (\n <>\n <Divider label={labels.orContinueWith || 'Ou continue com'} />\n <Group grow>\n <Button\n variant=\"light\"\n leftSection={<IconBrandGoogle size={16} />}\n onClick={() => onSocialLogin?.('google')}\n disabled={loading}\n >\n Google\n </Button>\n <Button\n variant=\"light\"\n leftSection={<IconBrandGithub size={16} />}\n onClick={() => onSocialLogin?.('github')}\n disabled={loading}\n >\n GitHub\n </Button>\n </Group>\n </>\n )}\n\n {showSignInLink && (\n <Center>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n >\n {labels.hasAccount || 'Já tem uma conta?'} <Anchor href={signInUrl}>{labels.signIn || 'Entrar'}</Anchor>\n </Text>\n </Center>\n )}\n </AuthCard>\n )\n}\n","import { TextInput, Button, Stack, Anchor, Center, Text } from '@mantine/core'\nimport { useForm } from '@mantine/form'\nimport { IconMail, IconSend } from '@tabler/icons-react'\nimport { useAuthStore } from '../authStore.js'\nimport { useApplicationLogo } from '../AuthProvider.jsx'\nimport AuthCard from './AuthCard.jsx'\n\nimport defaultLogo from '../assets/logotipo.webp'\n\n/**\n * Formulário para envio de Magic Link\n *\n * @param {object} props\n * @param {'card'|'modal'} [props.variant='card'] - Modo de renderização\n * @param {boolean} [props.opened] - Controla visibilidade (apenas para variant=\"modal\")\n * @param {function} [props.onClose] - Callback ao fechar (apenas para variant=\"modal\")\n */\nexport default function MagicLink({\n // Configuração\n logo,\n title = 'Login sem Senha',\n subtitle = 'Receba um link de acesso no seu email',\n\n // Variant\n variant = 'card',\n opened,\n onClose,\n modalProps = {},\n\n // Features\n showSignInLink = true,\n\n // Links\n signInUrl = '/auth/signin',\n\n // Callbacks\n onSent,\n onError,\n\n // Custom labels\n labels = {},\n\n ...cardProps\n}) {\n const sendMagicLink = useAuthStore(s => s.sendMagicLink)\n const loading = useAuthStore(s => s.loadingStates.magicLink)\n\n // Hook para buscar logo da aplicação\n const applicationLogo = useApplicationLogo()\n const finalLogo = logo || applicationLogo || defaultLogo\n\n const form = useForm({\n initialValues: {\n email: '',\n },\n validate: {\n email: value => (/^\\S+@\\S+$/.test(value) ? null : labels.invalidEmail || 'Email inválido'),\n },\n })\n\n const handleSubmit = async values => {\n try {\n await sendMagicLink(values.email)\n onSent?.(values.email)\n } catch (error) {\n onError?.(error)\n }\n }\n\n return (\n <AuthCard\n logo={finalLogo}\n title={title}\n subtitle={subtitle}\n variant={variant}\n opened={opened}\n onClose={onClose}\n modalProps={modalProps}\n {...cardProps}\n >\n <form onSubmit={form.onSubmit(handleSubmit)}>\n <Stack gap=\"sm\">\n <TextInput\n label={labels.email || 'Email'}\n placeholder={labels.emailPlaceholder || 'seu@email.com'}\n leftSection={<IconMail size={16} />}\n {...form.getInputProps('email')}\n disabled={loading}\n />\n\n <Button\n type=\"submit\"\n fullWidth\n loading={loading}\n leftSection={<IconSend size={16} />}\n >\n {labels.sendButton || 'Enviar Link Mágico'}\n </Button>\n </Stack>\n </form>\n\n {showSignInLink && (\n <Center>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n >\n {labels.backTo || 'Voltar para'} <Anchor href={signInUrl}>{labels.signIn || 'login com senha'}</Anchor>\n </Text>\n </Center>\n )}\n </AuthCard>\n )\n}\n","import { useEffect, useState, useRef } from 'react'\nimport { Stack, Loader, Title, Text } from '@mantine/core'\nimport { IconCheck, IconX } from '@tabler/icons-react'\nimport { useAuthStore } from '../authStore.js'\nimport { useApplicationLogo } from '../AuthProvider.jsx'\nimport AuthCard from './AuthCard.jsx'\n\nimport defaultLogo from '../assets/logotipo.webp'\n\n/**\n * Componente de verificação de Magic Link\n * Extrai token da URL e verifica automaticamente\n */\nexport default function MagicLinkCallback({\n // Configuração\n logo,\n\n // Token pode ser passado diretamente ou extraído da URL\n token: propToken,\n\n // Callbacks\n onSuccess,\n onError,\n\n // Redirect após sucesso/erro\n redirectTo,\n redirectDelay = 2000,\n\n // Custom labels\n labels = {},\n\n ...cardProps\n}) {\n const [status, setStatus] = useState('verifying') // verifying, success, error\n const [errorMessage, setErrorMessage] = useState('')\n const verifyMagicLink = useAuthStore(s => s.verifyMagicLink)\n\n // Hook para buscar logo da aplicação\n const applicationLogo = useApplicationLogo()\n const finalLogo = logo || applicationLogo || defaultLogo\n\n const verifyingTokenRef = useRef(null)\n\n useEffect(() => {\n const verify = async () => {\n // Pega token da prop ou da URL\n let token = propToken\n if (!token && typeof window !== 'undefined') {\n const urlParams = new URLSearchParams(window.location.search)\n token = urlParams.get('token')\n }\n\n if (!token) {\n setStatus('error')\n setErrorMessage(labels.noToken || 'Token não encontrado na URL')\n onError?.(new Error('No token'))\n return\n }\n\n // Evita verificar o mesmo token duas vezes (React Strict Mode ou re-renders)\n if (verifyingTokenRef.current === token) return\n verifyingTokenRef.current = token\n\n try {\n const result = await verifyMagicLink(token)\n setStatus('success')\n onSuccess?.(result)\n\n if (redirectTo) {\n setTimeout(() => {\n window.location.href = redirectTo\n }, redirectDelay)\n }\n } catch (error) {\n setStatus('error')\n setErrorMessage(error.message || labels.verificationFailed || 'Verificação falhou')\n onError?.(error)\n }\n }\n\n verify()\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [propToken, redirectTo, redirectDelay])\n\n return (\n <AuthCard\n logo={finalLogo}\n {...cardProps}\n >\n {status === 'verifying' && (\n <Stack\n align=\"center\"\n gap=\"sm\"\n >\n <Loader size=\"lg\" />\n <Title order={4}>{labels.verifying || 'Verificando Link Mágico'}</Title>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n ta=\"center\"\n >\n {labels.pleaseWait || 'Aguarde enquanto autenticamos você...'}\n </Text>\n </Stack>\n )}\n\n {status === 'success' && (\n <Stack\n align=\"center\"\n gap=\"sm\"\n >\n <IconCheck\n size={48}\n color=\"var(--mantine-color-green-6)\"\n />\n <Title order={4}>{labels.success || 'Autenticado com Sucesso!'}</Title>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n ta=\"center\"\n >\n {redirectTo ? labels.redirecting || 'Redirecionando...' : labels.authenticated || 'Você está autenticado.'}\n </Text>\n </Stack>\n )}\n\n {status === 'error' && (\n <Stack\n align=\"center\"\n gap=\"sm\"\n >\n <IconX\n size={48}\n color=\"var(--mantine-color-red-6)\"\n />\n <Title order={4}>{labels.failed || 'Falha na Autenticação'}</Title>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n ta=\"center\"\n >\n {errorMessage || labels.invalidLink || 'O link é inválido ou expirou.'}\n </Text>\n </Stack>\n )}\n </AuthCard>\n )\n}\n","import { TextInput, Button, Stack, Anchor, Center, Text } from '@mantine/core'\nimport { useForm } from '@mantine/form'\nimport { IconMail, IconSend } from '@tabler/icons-react'\nimport { useAuthStore } from '../authStore.js'\nimport { useApplicationLogo } from '../AuthProvider.jsx'\nimport AuthCard from './AuthCard.jsx'\n\nimport defaultLogo from '../assets/logotipo.webp'\n\n/**\n * Formulário para solicitar reset de senha\n *\n * @param {object} props\n * @param {'card'|'modal'} [props.variant='card'] - Modo de renderização\n * @param {boolean} [props.opened] - Controla visibilidade (apenas para variant=\"modal\")\n * @param {function} [props.onClose] - Callback ao fechar (apenas para variant=\"modal\")\n */\nexport default function ForgotPassword({\n // Configuração\n logo,\n title = 'Recuperar Senha',\n subtitle = 'Enviaremos um link para redefinir sua senha',\n\n // Variant\n variant = 'card',\n opened,\n onClose,\n modalProps = {},\n\n // Features\n showSignInLink = true,\n\n // Links\n signInUrl = '/auth/signin',\n\n // Callbacks\n onSent,\n onError,\n\n // Custom labels\n labels = {},\n\n ...cardProps\n}) {\n const forgotPassword = useAuthStore(s => s.forgotPassword)\n const loading = useAuthStore(s => s.loadingStates.resetPassword)\n\n // Hook para buscar logo da aplicação\n const applicationLogo = useApplicationLogo()\n const finalLogo = logo || applicationLogo || defaultLogo\n\n const form = useForm({\n initialValues: {\n email: '',\n },\n validate: {\n email: value => (/^\\S+@\\S+$/.test(value) ? null : labels.invalidEmail || 'Email inválido'),\n },\n })\n\n const handleSubmit = async values => {\n try {\n await forgotPassword(values.email)\n onSent?.(values.email)\n } catch (error) {\n onError?.(error)\n }\n }\n\n return (\n <AuthCard\n logo={finalLogo}\n title={title}\n subtitle={subtitle}\n variant={variant}\n opened={opened}\n onClose={onClose}\n modalProps={modalProps}\n {...cardProps}\n >\n <form onSubmit={form.onSubmit(handleSubmit)}>\n <Stack gap=\"sm\">\n <TextInput\n label={labels.email || 'Email'}\n placeholder={labels.emailPlaceholder || 'seu@email.com'}\n leftSection={<IconMail size={16} />}\n {...form.getInputProps('email')}\n disabled={loading}\n />\n\n <Button\n type=\"submit\"\n fullWidth\n loading={loading}\n leftSection={<IconSend size={16} />}\n >\n {labels.sendButton || 'Enviar Link de Recuperação'}\n </Button>\n </Stack>\n </form>\n\n {showSignInLink && (\n <Center>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n >\n {labels.rememberedPassword || 'Lembrou a senha?'} <Anchor href={signInUrl}>{labels.signIn || 'Entrar'}</Anchor>\n </Text>\n </Center>\n )}\n </AuthCard>\n )\n}\n","import { useState, useEffect } from 'react'\nimport { PasswordInput, Button, Stack, Text, Title } from '@mantine/core'\nimport { useForm } from '@mantine/form'\nimport { IconLock, IconCheck } from '@tabler/icons-react'\nimport { useAuthStore } from '../authStore.js'\nimport { useApplicationLogo } from '../AuthProvider.jsx'\nimport AuthCard from './AuthCard.jsx'\n\nimport defaultLogo from '../assets/logotipo.webp'\n\n/**\n * Formulário para redefinir senha com token\n */\nexport default function ResetPassword({\n // Configuração\n logo,\n title = 'Nova Senha',\n subtitle = 'Crie uma nova senha para sua conta',\n\n // Token pode ser passado diretamente ou extraído da URL\n token: propToken,\n\n // Callbacks\n onSuccess,\n onError,\n\n // Redirect após sucesso\n signInUrl = '/auth/signin',\n\n // Custom labels\n labels = {},\n\n ...cardProps\n}) {\n const [token, setToken] = useState(propToken || '')\n const [success, setSuccess] = useState(false)\n const resetPassword = useAuthStore(s => s.resetPassword)\n const loading = useAuthStore(s => s.loadingStates.resetPassword)\n\n // Hook para buscar logo da aplicação\n const applicationLogo = useApplicationLogo()\n const finalLogo = logo || applicationLogo || defaultLogo\n\n // Extrai token da URL se não foi passado como prop\n useEffect(() => {\n if (!propToken && typeof window !== 'undefined') {\n const urlParams = new URLSearchParams(window.location.search)\n const urlToken = urlParams.get('token')\n if (urlToken) setToken(urlToken)\n }\n }, [propToken])\n\n const form = useForm({\n initialValues: {\n password: '',\n confirmPassword: '',\n },\n validate: {\n password: value => (value.length < 6 ? labels.passwordTooShort || 'A senha deve ter pelo menos 6 caracteres' : null),\n confirmPassword: (value, values) => (value !== values.password ? labels.passwordMismatch || 'As senhas não coincidem' : null),\n },\n })\n\n const handleSubmit = async values => {\n if (!token) {\n onError?.(new Error('Token não encontrado'))\n return\n }\n\n try {\n await resetPassword(token, values.password)\n setSuccess(true)\n onSuccess?.()\n } catch (error) {\n onError?.(error)\n }\n }\n\n if (success) {\n return (\n <AuthCard\n logo={finalLogo}\n {...cardProps}\n >\n <Stack\n align=\"center\"\n gap=\"sm\"\n >\n <IconCheck\n size={48}\n color=\"var(--mantine-color-green-6)\"\n />\n <Title order={4}>{labels.successTitle || 'Senha Redefinida!'}</Title>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n ta=\"center\"\n >\n {labels.successMessage || 'Sua senha foi alterada com sucesso.'}\n </Text>\n <Button\n component=\"a\"\n href={signInUrl}\n fullWidth\n >\n {labels.goToSignIn || 'Ir para Login'}\n </Button>\n </Stack>\n </AuthCard>\n )\n }\n\n if (!token) {\n return (\n <AuthCard\n logo={finalLogo}\n {...cardProps}\n >\n <Stack\n align=\"center\"\n gap=\"sm\"\n >\n <Text c=\"red\">{labels.noToken || 'Token não encontrado na URL'}</Text>\n <Button\n component=\"a\"\n href={signInUrl}\n variant=\"light\"\n fullWidth\n >\n {labels.goToSignIn || 'Voltar para Login'}\n </Button>\n </Stack>\n </AuthCard>\n )\n }\n\n return (\n <AuthCard\n logo={finalLogo}\n title={title}\n subtitle={subtitle}\n {...cardProps}\n >\n <form onSubmit={form.onSubmit(handleSubmit)}>\n <Stack gap=\"sm\">\n <PasswordInput\n label={labels.newPassword || 'Nova Senha'}\n placeholder={labels.newPasswordPlaceholder || 'Crie uma nova senha'}\n leftSection={<IconLock size={16} />}\n {...form.getInputProps('password')}\n disabled={loading}\n />\n\n <PasswordInput\n label={labels.confirmPassword || 'Confirmar Senha'}\n placeholder={labels.confirmPasswordPlaceholder || 'Repita a nova senha'}\n leftSection={<IconLock size={16} />}\n {...form.getInputProps('confirmPassword')}\n disabled={loading}\n />\n\n <Button\n type=\"submit\"\n fullWidth\n loading={loading}\n >\n {labels.resetButton || 'Redefinir Senha'}\n </Button>\n </Stack>\n </form>\n </AuthCard>\n )\n}\n","import { useEffect, useState, useRef } from 'react'\nimport { Stack, Loader, Button, Text, Title } from '@mantine/core'\nimport { IconCheck, IconX, IconRefresh, IconMail } from '@tabler/icons-react'\nimport { useAuthStore } from '../authStore.js'\nimport { useApplicationLogo } from '../AuthProvider.jsx'\nimport { decodeJWT } from '../authSdk.js'\nimport AuthCard from './AuthCard.jsx'\nimport defaultLogo from '../assets/logotipo.webp'\n\n/**\n * Card de verificação de email\n * Verifica token automaticamente e permite reenvio\n */\nexport default function VerifyEmail({\n // Configuração\n logo,\n\n // Token pode ser passado diretamente ou extraído da URL\n token: propToken,\n\n // Email para reenvio (opcional)\n email,\n\n // Callbacks\n onSuccess,\n onError,\n onResent,\n\n // Redirect após sucesso\n redirectTo,\n redirectDelay = 2000,\n\n // Custom labels\n labels = {},\n\n ...cardProps\n}) {\n const [status, setStatus] = useState('verifying') // verifying, success, error\n const [errorMessage, setErrorMessage] = useState('')\n const [tokenEmail, setTokenEmail] = useState(null) // Novo estado para email do token\n\n const verifyEmail = useAuthStore(s => s.verifyEmail)\n const resendVerification = useAuthStore(s => s.resendVerification)\n const loadingResend = useAuthStore(s => s.loadingStates.resendVerification)\n const user = useAuthStore(s => s.user)\n\n const verifyingTokenRef = useRef(null)\n\n // Hook para buscar logo da aplicação\n const applicationLogo = useApplicationLogo()\n const finalLogo = logo || applicationLogo || defaultLogo\n\n useEffect(() => {\n const verify = async () => {\n // Pega token da prop ou da URL\n let token = propToken\n if (!token && typeof window !== 'undefined') {\n const urlParams = new URLSearchParams(window.location.search)\n token = urlParams.get('token')\n }\n\n if (!token) {\n // Se já mostramos o erro de token faltando, não precisa fazer nada\n if (status === 'missing_token') return\n\n setStatus('missing_token')\n return\n }\n\n // Tenta extrair email do token (mesmo expirado) para permitir reenvio\n try {\n const payload = decodeJWT(token)\n if (payload?.email) {\n setTokenEmail(payload.email)\n }\n } catch (e) {\n // ignore jwt error\n }\n\n // Evita verificar o mesmo token duas vezes (React Strict Mode ou re-renders)\n if (verifyingTokenRef.current === token) return\n verifyingTokenRef.current = token\n\n try {\n const result = await verifyEmail(token)\n setStatus('success')\n onSuccess?.(result)\n\n if (redirectTo) {\n setTimeout(() => {\n window.location.href = redirectTo\n }, redirectDelay)\n }\n } catch (error) {\n // Se der erro, permitimos tentar novamente apenas se o usuário recarregar\n // ou se implementarmos um botão de retry que limpe o ref\n setStatus('error')\n setErrorMessage(error.message || labels.verificationFailed || 'Verificação falhou')\n onError?.(error)\n }\n }\n\n verify()\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [propToken, redirectTo, redirectDelay])\n\n const handleResend = async () => {\n const targetEmail = email || user?.email || tokenEmail\n if (!targetEmail) return\n\n try {\n await resendVerification(targetEmail)\n onResent?.(targetEmail)\n } catch (error) {\n onError?.(error)\n }\n }\n\n return (\n <AuthCard\n logo={finalLogo}\n {...cardProps}\n >\n {status === 'verifying' && (\n <Stack\n align=\"center\"\n gap=\"sm\"\n >\n <Loader size=\"lg\" />\n <Title order={4}>{labels.verifying || 'Verificando Email'}</Title>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n ta=\"center\"\n >\n {labels.pleaseWait || 'Aguarde enquanto verificamos seu email...'}\n </Text>\n </Stack>\n )}\n\n {status === 'missing_token' && (\n <Stack\n align=\"center\"\n gap=\"sm\"\n >\n <IconMail\n size={48}\n color=\"var(--mantine-color-blue-6)\"\n />\n <Title order={4}>{labels.verification || 'Verificação de Email'}</Title>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n ta=\"center\"\n >\n {labels.missingToken || 'Para verificar seu conta, clique no link enviado para seu email.'}\n </Text>\n </Stack>\n )}\n\n {status === 'success' && (\n <Stack\n align=\"center\"\n gap=\"sm\"\n >\n <IconCheck\n size={48}\n color=\"var(--mantine-color-green-6)\"\n />\n <Title order={4}>{labels.success || 'Email Verificado!'}</Title>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n ta=\"center\"\n >\n {redirectTo ? labels.redirecting || 'Redirecionando...' : labels.verified || 'Seu email foi verificado com sucesso.'}\n </Text>\n </Stack>\n )}\n\n {status === 'error' && (\n <Stack\n align=\"center\"\n gap=\"sm\"\n >\n <IconX\n size={48}\n color=\"var(--mantine-color-red-6)\"\n />\n <Title order={4}>{labels.failed || 'Verificação Falhou'}</Title>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n ta=\"center\"\n >\n {errorMessage || labels.invalidToken || 'O link é inválido ou expirou.'}\n </Text>\n\n {/* Só mostra botão de reenvio se o token expirou e temos o email (via prop, user ou token) */}\n {(email || user?.email || tokenEmail) && errorMessage?.toLowerCase().includes('expired') && (\n <Button\n variant=\"light\"\n leftSection={<IconRefresh size={16} />}\n onClick={handleResend}\n loading={loadingResend}\n fullWidth\n >\n {labels.resend || 'Solicitar novo link'}\n </Button>\n )}\n </Stack>\n )}\n </AuthCard>\n )\n}\n","import { useState, useEffect } from 'react'\nimport { Modal, Group, Stack, Text, Avatar, Box, Anchor, ThemeIcon, Title, Divider, Card, TextInput, PasswordInput, Button, Collapse, Tooltip, Paper, Image, Badge } from '@mantine/core'\nimport { useForm } from '@mantine/form'\nimport { notifications } from '@mantine/notifications'\nimport { IconUser, IconShield, IconUserCircle, IconKey, IconMail, IconCheck, IconX, IconPhoto, IconPencil, IconTrash, IconDevices, IconDeviceMobile, IconLogout } from '@tabler/icons-react'\n\nimport { useProfile, useSessions } from '../AuthProvider.jsx'\n\n/**\n * Componente de gerenciamento de conta do usuário\n * Permite editar avatar, nome, email e senha\n * Suporta renderização como Card ou Modal\n *\n * @param {object} props\n * @param {'card'|'modal'} [props.variant='modal'] - Modo de renderização\n * @param {boolean} [props.opened] - Controla visibilidade (apenas para variant=\"modal\")\n * @param {function} [props.onClose] - Callback ao fechar (apenas para variant=\"modal\")\n */\nexport default function UserProfile({\n // Variant\n variant = 'modal',\n opened,\n onClose,\n\n // Callbacks\n onProfileUpdate,\n onPasswordChange,\n onEmailChange,\n onError,\n\n // Features toggle\n showAvatar = true,\n showName = true,\n showEmail = true,\n showPassword = true,\n showSessions = true,\n\n // Customização\n labels = {},\n title = 'Account',\n subtitle = 'Manage your account info.',\n logo,\n logoHeight = 28,\n width = 500,\n\n // Avatar config\n maxAvatarSize = 500 * 1024, // 500KB\n\n // Custom sections (React nodes to render after built-in sections)\n customSections,\n\n ...containerProps\n}) {\n // Local state - which section is expanded\n const [editingSection, setEditingSection] = useState(null) // 'password' | 'email' | 'name' | 'avatar' | null\n\n // Hook para profile\n const { user, updateProfile, changePassword, changeEmail, loadingUpdateProfile, loadingChangePassword, loadingChangeEmail } = useProfile()\n\n // Hook para sessions\n const { currentSession, sessions, listSessions, getSession, revokeSession, revokeOtherSessions, loadingListSessions, loadingRevokeSession } = useSessions()\n\n // Load sessions when opened (modal) or component mounts (card), and when sessions section is opened\n useEffect(() => {\n if (showSessions && (variant === 'card' || opened)) {\n // Fetch current session first to get the session ID, then list all sessions\n getSession().catch(err => console.warn('Failed to get current session:', err))\n listSessions().catch(err => console.warn('Failed to load sessions:', err))\n }\n }, [opened, showSessions, variant])\n\n // Helper to parse user agent string\n const parseUserAgent = ua => {\n if (!ua) return { browser: 'Unknown Browser', os: 'Unknown OS' }\n\n let browser = 'Unknown Browser'\n let os = 'Unknown OS'\n\n // Detect browser\n if (ua.includes('Chrome') && !ua.includes('Edg')) browser = 'Chrome'\n else if (ua.includes('Firefox')) browser = 'Firefox'\n else if (ua.includes('Safari') && !ua.includes('Chrome')) browser = 'Safari'\n else if (ua.includes('Edg')) browser = 'Edge'\n else if (ua.includes('Opera') || ua.includes('OPR')) browser = 'Opera'\n\n // Detect OS\n if (ua.includes('Windows')) os = 'Windows'\n else if (ua.includes('Mac OS')) os = 'macOS'\n else if (ua.includes('Linux')) os = 'Linux'\n else if (ua.includes('Android')) os = 'Android'\n else if (ua.includes('iPhone') || ua.includes('iPad')) os = 'iOS'\n\n return { browser, os }\n }\n\n // Session handlers\n const handleRevokeSession = async sessionId => {\n // Check if revoking current session\n const isCurrentSession = sessionId === currentSession?.id || sessions.length === 1\n\n // If revoking current session, handle logout immediately after revocation\n if (isCurrentSession) {\n try {\n await revokeSession(sessionId)\n } catch (error) {\n // Even if it fails, we're revoking our own session, so just logout\n // The server already revoked our session\n }\n // Clear auth state and redirect\n localStorage.removeItem('auth:token')\n window.dispatchEvent(new CustomEvent('auth:session-revoked'))\n if (variant === 'modal') onClose?.()\n return\n }\n\n // Revoking another session\n try {\n await revokeSession(sessionId)\n\n notifications.show({\n title: labels.successTitle || 'Sucesso',\n message: labels.sessionRevoked || 'Sessão encerrada com sucesso',\n color: 'green',\n })\n } catch (error) {\n // Check for 401 error (our SDK uses error.res, axios uses error.response)\n const status = error.res?.status || error.response?.status\n if (status === 401) {\n // This means our session was revoked, not the target one - do logout\n localStorage.removeItem('auth:token')\n window.dispatchEvent(new CustomEvent('auth:session-revoked'))\n if (variant === 'modal') onClose?.()\n return\n }\n\n notifications.show({\n title: labels.errorTitle || 'Erro',\n message: error.message || labels.sessionRevokeFailed || 'Falha ao encerrar sessão',\n color: 'red',\n })\n onError?.(error)\n }\n }\n\n const handleRevokeOtherSessions = async () => {\n try {\n await revokeOtherSessions()\n notifications.show({\n title: labels.successTitle || 'Sucesso',\n message: labels.otherSessionsRevoked || 'Todas as outras sessões foram encerradas',\n color: 'green',\n })\n } catch (error) {\n notifications.show({\n title: labels.errorTitle || 'Erro',\n message: error.message || labels.otherSessionsRevokeFailed || 'Falha ao encerrar sessões',\n color: 'red',\n })\n onError?.(error)\n }\n }\n\n // Password form\n const passwordForm = useForm({\n initialValues: {\n currentPassword: '',\n newPassword: '',\n confirmPassword: '',\n },\n validate: {\n currentPassword: v => (!v ? labels.currentPasswordRequired || 'Senha atual obrigatória' : null),\n newPassword: v => {\n if (!v) return labels.newPasswordRequired || 'Nova senha obrigatória'\n if (v.length < 8) return labels.passwordMinLength || 'Mínimo 8 caracteres'\n return null\n },\n confirmPassword: (v, values) => (v !== values.newPassword ? labels.passwordMismatch || 'Senhas não coincidem' : null),\n },\n })\n\n // Email form\n const emailForm = useForm({\n initialValues: {\n newEmail: '',\n },\n validate: {\n newEmail: v => {\n if (!v) return labels.emailRequired || 'Email obrigatório'\n if (!/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(v)) return labels.emailInvalid || 'Email inválido'\n return null\n },\n },\n })\n\n // Name form\n const nameForm = useForm({\n initialValues: {\n name: '',\n },\n validate: {\n name: v => (!v ? labels.nameRequired || 'Nome obrigatório' : null),\n },\n })\n\n // Avatar state (base64)\n const [avatarPreview, setAvatarPreview] = useState(null)\n const [avatarFile, setAvatarFile] = useState(null)\n\n // Handle file selection and convert to base64\n const handleAvatarFileChange = file => {\n if (!file) {\n setAvatarPreview(null)\n setAvatarFile(null)\n return\n }\n\n // Validate file type\n if (!file.type.startsWith('image/')) {\n notifications.show({\n title: labels.errorTitle || 'Erro',\n message: labels.avatarInvalidType || 'Por favor, selecione uma imagem válida',\n color: 'red',\n })\n return\n }\n\n // Validate file size\n if (file.size > maxAvatarSize) {\n notifications.show({\n title: labels.errorTitle || 'Erro',\n message: labels.avatarTooLarge || `Imagem muito grande. Máximo ${Math.round(maxAvatarSize / 1024)}KB.`,\n color: 'red',\n })\n return\n }\n\n setAvatarFile(file)\n\n // Convert to base64\n const reader = new FileReader()\n reader.onloadend = () => {\n setAvatarPreview(reader.result)\n }\n reader.readAsDataURL(file)\n }\n\n // Populate forms when user data is available or section opens\n useEffect(() => {\n if (editingSection === 'name' && user?.name) {\n nameForm.setValues({ name: user.name })\n }\n if (editingSection === 'avatar' && user?.image) {\n setAvatarPreview(user.image)\n }\n }, [editingSection, user])\n\n const handleToggleSection = section => {\n if (editingSection === section) {\n setEditingSection(null)\n passwordForm.reset()\n emailForm.reset()\n nameForm.reset()\n setAvatarPreview(null)\n setAvatarFile(null)\n } else {\n setEditingSection(section)\n }\n }\n\n const handleChangePassword = async values => {\n try {\n await changePassword(values.currentPassword, values.newPassword)\n notifications.show({\n title: labels.successTitle || 'Sucesso',\n message: labels.passwordChanged || 'Senha alterada com sucesso',\n color: 'green',\n })\n passwordForm.reset()\n setEditingSection(null)\n onPasswordChange?.()\n } catch (error) {\n notifications.show({\n title: labels.errorTitle || 'Erro',\n message: error.message || labels.passwordChangeFailed || 'Falha ao alterar senha',\n color: 'red',\n })\n onError?.(error)\n }\n }\n\n const handleChangeEmail = async values => {\n try {\n await changeEmail(values.newEmail)\n notifications.show({\n title: labels.successTitle || 'Sucesso',\n message: labels.emailVerificationSent || 'Verifique seu novo email para confirmar a alteração',\n color: 'green',\n })\n emailForm.reset()\n setEditingSection(null)\n onEmailChange?.(values.newEmail)\n } catch (error) {\n notifications.show({\n title: labels.errorTitle || 'Erro',\n message: error.message || labels.emailChangeFailed || 'Falha ao alterar email',\n color: 'red',\n })\n onError?.(error)\n }\n }\n\n const handleChangeName = async values => {\n try {\n await updateProfile({ name: values.name })\n notifications.show({\n title: labels.successTitle || 'Sucesso',\n message: labels.nameUpdated || 'Nome atualizado com sucesso',\n color: 'green',\n })\n nameForm.reset()\n setEditingSection(null)\n onProfileUpdate?.({ name: values.name })\n } catch (error) {\n notifications.show({\n title: labels.errorTitle || 'Erro',\n message: error.message || labels.nameUpdateFailed || 'Falha ao atualizar nome',\n color: 'red',\n })\n onError?.(error)\n }\n }\n\n const handleChangeAvatar = async () => {\n if (!avatarPreview) {\n notifications.show({\n title: labels.errorTitle || 'Erro',\n message: labels.avatarRequired || 'Selecione uma imagem',\n color: 'red',\n })\n return\n }\n\n try {\n await updateProfile({ image: avatarPreview })\n notifications.show({\n title: labels.successTitle || 'Sucesso',\n message: labels.avatarUpdated || 'Foto de perfil atualizada com sucesso',\n color: 'green',\n })\n setAvatarPreview(null)\n setAvatarFile(null)\n setEditingSection(null)\n onProfileUpdate?.({ image: avatarPreview })\n } catch (error) {\n notifications.show({\n title: labels.errorTitle || 'Erro',\n message: error.message || labels.avatarUpdateFailed || 'Falha ao atualizar foto',\n color: 'red',\n })\n onError?.(error)\n }\n }\n\n const handleRemoveAvatar = async () => {\n try {\n await updateProfile({ image: '' })\n notifications.show({\n title: labels.successTitle || 'Sucesso',\n message: labels.avatarRemoved || 'Foto de perfil removida',\n color: 'green',\n })\n setAvatarPreview(null)\n setAvatarFile(null)\n setEditingSection(null)\n onProfileUpdate?.({ image: '' })\n } catch (error) {\n notifications.show({\n title: labels.errorTitle || 'Erro',\n message: error.message || labels.avatarRemoveFailed || 'Falha ao remover foto',\n color: 'red',\n })\n onError?.(error)\n }\n }\n\n // Reusable Section Header\n const SectionHeader = ({ icon: Icon, sectionTitle, description }) => (\n <Group\n gap=\"sm\"\n mb=\"lg\"\n >\n <ThemeIcon\n size={36}\n variant=\"light\"\n >\n <Icon size={18} />\n </ThemeIcon>\n <Box>\n <Text\n fw={600}\n size=\"md\"\n >\n {sectionTitle}\n </Text>\n {description && (\n <Text\n size=\"xs\"\n c=\"dimmed\"\n >\n {description}\n </Text>\n )}\n </Box>\n </Group>\n )\n\n // Reusable Row component\n const SettingRow = ({ label, children, action, actionLabel, onClick, expanded }) => (\n <Card p=\"xs\">\n <Group\n justify=\"space-between\"\n wrap=\"nowrap\"\n >\n <Group\n gap=\"xl\"\n wrap=\"nowrap\"\n flex={1}\n >\n <Text\n size=\"sm\"\n c=\"dimmed\"\n w={100}\n style={{ flexShrink: 0 }}\n >\n {label}\n </Text>\n <Box flex={1}>{children}</Box>\n </Group>\n {action && (\n <Tooltip\n label={actionLabel || action}\n position=\"left\"\n >\n <Anchor\n size=\"sm\"\n fw={500}\n onClick={onClick}\n c={expanded ? 'red' : 'blue'}\n >\n {expanded ? labels.cancel || 'Cancel' : action}\n </Anchor>\n </Tooltip>\n )}\n </Group>\n </Card>\n )\n\n // Conteúdo interno compartilhado\n const profileContent = (\n <>\n {/* Profile Section */}\n {(showAvatar || showName || showEmail) && (\n <Box mb=\"xl\">\n <SectionHeader\n icon={IconUser}\n sectionTitle={labels.profileSection || 'Profile'}\n description={labels.profileDescription || 'Your personal information'}\n />\n <Stack gap=\"sm\">\n {/* Avatar Row */}\n {showAvatar && (\n <>\n <SettingRow\n label={labels.avatar || 'Avatar'}\n action={labels.update || 'Update'}\n actionLabel={labels.updateAvatar || 'Update your profile picture'}\n onClick={() => handleToggleSection('avatar')}\n expanded={editingSection === 'avatar'}\n >\n <Group gap=\"md\">\n <Avatar\n src={user?.image}\n name={user?.name || user?.email}\n size={48}\n radius=\"xl\"\n color=\"initials\"\n />\n </Group>\n </SettingRow>\n\n {/* Avatar Change Form */}\n <Collapse in={editingSection === 'avatar'}>\n <Card\n p=\"md\"\n withBorder\n >\n <Stack\n gap=\"md\"\n align=\"center\"\n >\n {/* Hidden file input */}\n <input\n type=\"file\"\n id=\"avatar-upload\"\n accept=\"image/*\"\n style={{ display: 'none' }}\n onChange={e => handleAvatarFileChange(e.target.files?.[0])}\n />\n\n {/* Clickable Avatar with overlay */}\n <Tooltip\n label={labels.clickToChange || 'Clique para alterar'}\n position=\"bottom\"\n >\n <Box\n onClick={() => document.getElementById('avatar-upload')?.click()}\n style={{\n position: 'relative',\n cursor: 'pointer',\n borderRadius: '50%',\n }}\n >\n <Avatar\n src={avatarPreview || user?.image}\n name={user?.name || user?.email}\n size={100}\n radius={100}\n color=\"initials\"\n />\n {/* Camera overlay */}\n <ThemeIcon\n size={32}\n radius=\"xl\"\n color=\"blue\"\n style={{\n position: 'absolute',\n bottom: 0,\n right: 0,\n border: '2px solid var(--mantine-color-body)',\n }}\n >\n <IconPhoto size={16} />\n </ThemeIcon>\n </Box>\n </Tooltip>\n\n <Text\n size=\"xs\"\n c=\"dimmed\"\n ta=\"center\"\n >\n {labels.avatarHint || `Máximo ${Math.round(maxAvatarSize / 1024)}KB • JPG, PNG, GIF, WebP`}\n </Text>\n\n <Group\n justify=\"center\"\n gap=\"sm\"\n >\n {/* Remove button - only show if user has image */}\n {user?.image && (\n <Tooltip label={labels.removePhoto || 'Remover foto'}>\n <Button\n variant=\"light\"\n color=\"red\"\n size=\"xs\"\n onClick={handleRemoveAvatar}\n loading={loadingUpdateProfile}\n leftSection={<IconTrash size={14} />}\n >\n {labels.remove || 'Remover'}\n </Button>\n </Tooltip>\n )}\n <Button\n variant=\"default\"\n size=\"xs\"\n onClick={() => handleToggleSection('avatar')}\n >\n {labels.cancel || 'Cancelar'}\n </Button>\n <Button\n size=\"xs\"\n loading={loadingUpdateProfile}\n leftSection={<IconCheck size={14} />}\n onClick={handleChangeAvatar}\n disabled={!avatarPreview || avatarPreview === user?.image}\n >\n {labels.save || 'Salvar'}\n </Button>\n </Group>\n </Stack>\n </Card>\n </Collapse>\n </>\n )}\n\n {/* Name Row */}\n {showName && (\n <>\n <SettingRow\n label={labels.name || 'Nome'}\n action={labels.change || 'Change'}\n actionLabel={labels.changeName || 'Change your display name'}\n onClick={() => handleToggleSection('name')}\n expanded={editingSection === 'name'}\n >\n <Group gap=\"xs\">\n <IconPencil\n size={16}\n color=\"var(--mantine-color-dimmed)\"\n />\n <Text size=\"sm\">{user?.name || labels.notDefined || 'Não definido'}</Text>\n </Group>\n </SettingRow>\n\n {/* Name Change Form */}\n <Collapse in={editingSection === 'name'}>\n <Card\n p=\"md\"\n withBorder\n >\n <form onSubmit={nameForm.onSubmit(handleChangeName)}>\n <Stack gap=\"sm\">\n <TextInput\n label={labels.name || 'Nome'}\n placeholder={labels.namePlaceholder || 'Digite seu nome'}\n leftSection={<IconUser size={16} />}\n {...nameForm.getInputProps('name')}\n />\n <Group\n justify=\"flex-end\"\n gap=\"sm\"\n >\n <Button\n variant=\"default\"\n size=\"xs\"\n onClick={() => handleToggleSection('name')}\n leftSection={<IconX size={14} />}\n >\n {labels.cancel || 'Cancelar'}\n </Button>\n <Button\n type=\"submit\"\n size=\"xs\"\n loading={loadingUpdateProfile}\n leftSection={<IconCheck size={14} />}\n >\n {labels.save || 'Salvar'}\n </Button>\n </Group>\n </Stack>\n </form>\n </Card>\n </Collapse>\n </>\n )}\n\n {/* Email Row with inline edit */}\n {showEmail && (\n <>\n <SettingRow\n label={labels.email || 'Email'}\n action={labels.change || 'Change'}\n actionLabel={labels.changeEmail || 'Change your email'}\n onClick={() => handleToggleSection('email')}\n expanded={editingSection === 'email'}\n >\n <Group gap=\"xs\">\n <IconMail\n size={16}\n color=\"var(--mantine-color-dimmed)\"\n />\n <Text size=\"sm\">{user?.email || 'email@exemplo.com'}</Text>\n </Group>\n </SettingRow>\n\n {/* Email Change Form */}\n <Collapse in={editingSection === 'email'}>\n <Card\n p=\"md\"\n withBorder\n >\n <form onSubmit={emailForm.onSubmit(handleChangeEmail)}>\n <Stack gap=\"sm\">\n <TextInput\n label={labels.newEmail || 'Novo Email'}\n placeholder={labels.newEmailPlaceholder || 'Digite o novo email'}\n leftSection={<IconMail size={16} />}\n {...emailForm.getInputProps('newEmail')}\n />\n <Group\n justify=\"flex-end\"\n gap=\"sm\"\n >\n <Button\n variant=\"default\"\n size=\"xs\"\n onClick={() => handleToggleSection('email')}\n leftSection={<IconX size={14} />}\n >\n {labels.cancel || 'Cancelar'}\n </Button>\n <Button\n type=\"submit\"\n size=\"xs\"\n loading={loadingChangeEmail}\n leftSection={<IconCheck size={14} />}\n >\n {labels.save || 'Salvar'}\n </Button>\n </Group>\n </Stack>\n </form>\n </Card>\n </Collapse>\n </>\n )}\n </Stack>\n </Box>\n )}\n\n {/* Security Section */}\n {(showPassword || showSessions) && (\n <Box mb=\"md\">\n <SectionHeader\n icon={IconShield}\n sectionTitle={labels.securitySection || 'Security'}\n description={labels.securityDescription || 'Protect your account'}\n />\n <Stack gap=\"sm\">\n {/* Password Row */}\n {showPassword && (\n <>\n <SettingRow\n label={labels.password || 'Password'}\n action={labels.change || 'Change'}\n actionLabel={labels.changePassword || 'Change your password'}\n onClick={() => handleToggleSection('password')}\n expanded={editingSection === 'password'}\n >\n <Group gap=\"xs\">\n <IconKey\n size={16}\n color=\"var(--mantine-color-dimmed)\"\n />\n <Text\n size=\"sm\"\n c=\"dimmed\"\n >\n ••••••••••••\n </Text>\n </Group>\n </SettingRow>\n\n {/* Password Change Form */}\n <Collapse in={editingSection === 'password'}>\n <Card\n p=\"md\"\n withBorder\n >\n <form onSubmit={passwordForm.onSubmit(handleChangePassword)}>\n <Stack gap=\"sm\">\n <PasswordInput\n label={labels.currentPassword || 'Senha Atual'}\n placeholder={labels.currentPasswordPlaceholder || 'Digite sua senha atual'}\n {...passwordForm.getInputProps('currentPassword')}\n />\n <PasswordInput\n label={labels.newPassword || 'Nova Senha'}\n placeholder={labels.newPasswordPlaceholder || 'Digite a nova senha'}\n description={labels.passwordDescription || 'Mínimo 8 caracteres'}\n {...passwordForm.getInputProps('newPassword')}\n />\n <PasswordInput\n label={labels.confirmPassword || 'Confirmar Nova Senha'}\n placeholder={labels.confirmPasswordPlaceholder || 'Confirme a nova senha'}\n {...passwordForm.getInputProps('confirmPassword')}\n />\n <Group\n justify=\"flex-end\"\n gap=\"xs\"\n >\n <Button\n variant=\"default\"\n size=\"xs\"\n onClick={() => handleToggleSection('password')}\n leftSection={<IconX size={14} />}\n >\n {labels.cancel || 'Cancelar'}\n </Button>\n <Button\n type=\"submit\"\n size=\"xs\"\n loading={loadingChangePassword}\n leftSection={<IconCheck size={14} />}\n >\n {labels.save || 'Salvar'}\n </Button>\n </Group>\n </Stack>\n </form>\n </Card>\n </Collapse>\n </>\n )}\n\n {/* Active Sessions Row */}\n {showSessions && (\n <>\n <SettingRow\n label={labels.sessions || 'Sessions'}\n action={editingSection === 'sessions' ? labels.close || 'Close' : labels.manage || 'Manage'}\n actionLabel={labels.manageSessions || 'Manage your active sessions'}\n onClick={() => handleToggleSection('sessions')}\n expanded={editingSection === 'sessions'}\n >\n <Group gap=\"xs\">\n <IconDevices\n size={16}\n color=\"var(--mantine-color-dimmed)\"\n />\n <Text\n size=\"sm\"\n c=\"dimmed\"\n >\n {sessions.length > 0 ? `${sessions.length} active session${sessions.length > 1 ? 's' : ''}` : loadingListSessions ? 'Loading...' : 'No sessions'}\n </Text>\n </Group>\n </SettingRow>\n\n {/* Sessions List */}\n <Collapse in={editingSection === 'sessions'}>\n <Card\n p=\"md\"\n withBorder\n >\n <Stack gap=\"md\">\n {loadingListSessions ? (\n <Text\n size=\"sm\"\n c=\"dimmed\"\n ta=\"center\"\n >\n {labels.loadingSessions || 'Carregando sessões...'}\n </Text>\n ) : sessions.length === 0 ? (\n <Text\n size=\"sm\"\n c=\"dimmed\"\n ta=\"center\"\n >\n {labels.noSessionsFound || 'Nenhuma sessão encontrada'}\n </Text>\n ) : (\n <>\n {sessions.map(sessionItem => {\n const isCurrentSession = sessionItem.id === currentSession?.id\n const deviceInfo = parseUserAgent(sessionItem.userAgent)\n const createdDate = new Date(sessionItem.createdAt)\n\n return (\n <Card\n key={sessionItem.id}\n p=\"sm\"\n style={{\n borderColor: isCurrentSession ? 'var(--mantine-color-blue-5)' : undefined,\n backgroundColor: isCurrentSession ? 'var(--mantine-color-blue-light)' : undefined,\n }}\n >\n <Group\n justify=\"space-between\"\n wrap=\"nowrap\"\n >\n <Group\n gap=\"sm\"\n wrap=\"nowrap\"\n style={{ flex: 1 }}\n >\n <ThemeIcon\n size={36}\n variant=\"light\"\n color={isCurrentSession ? 'blue' : 'gray'}\n >\n <IconDeviceMobile size={18} />\n </ThemeIcon>\n <Box style={{ flex: 1 }}>\n <Group gap=\"xs\">\n <Text\n size=\"sm\"\n fw={500}\n >\n {deviceInfo.browser}\n </Text>\n {isCurrentSession && (\n <Badge\n size=\"xs\"\n variant=\"filled\"\n color=\"blue\"\n >\n {labels.thisDevice || 'Este dispositivo'}\n </Badge>\n )}\n </Group>\n <Text\n size=\"xs\"\n c=\"dimmed\"\n >\n {deviceInfo.os} • {sessionItem.ipAddress || labels.unknownIP || 'IP desconhecido'}\n </Text>\n <Text\n size=\"xs\"\n c=\"dimmed\"\n >\n {labels.createdAt || 'Criada em'} {createdDate.toLocaleDateString('pt-BR')} {labels.at || 'às'}{' '}\n {createdDate.toLocaleTimeString('pt-BR', { hour: '2-digit', minute: '2-digit' })}\n </Text>\n </Box>\n </Group>\n <Tooltip label={isCurrentSession ? labels.signOutAndEnd || 'Encerrar e sair' : labels.endSession || 'Encerrar sessão'}>\n <Button\n variant=\"light\"\n color=\"red\"\n size=\"xs\"\n onClick={() => handleRevokeSession(sessionItem.id)}\n loading={loadingRevokeSession === sessionItem.id}\n leftSection={<IconLogout size={14} />}\n >\n {labels.end || 'Encerrar'}\n </Button>\n </Tooltip>\n </Group>\n </Card>\n )\n })}\n\n {sessions.length > 1 && (\n <Group justify=\"flex-end\">\n <Button\n variant=\"light\"\n color=\"red\"\n size=\"xs\"\n onClick={handleRevokeOtherSessions}\n loading={loadingRevokeSession === 'all'}\n leftSection={<IconLogout size={14} />}\n >\n {labels.endOtherSessions || 'Encerrar todas as outras sessões'}\n </Button>\n </Group>\n )}\n </>\n )}\n </Stack>\n </Card>\n </Collapse>\n </>\n )}\n </Stack>\n </Box>\n )}\n\n {/* Custom Sections */}\n {customSections}\n </>\n )\n\n // Renderizar como Modal\n if (variant === 'modal') {\n return (\n <Modal\n opened={opened}\n onClose={onClose}\n size={width + 50}\n withCloseButton\n radius=\"md\"\n overlayProps={{ backgroundOpacity: 0.55, blur: 3 }}\n title={\n <Group gap=\"md\">\n <ThemeIcon\n size={44}\n variant=\"light\"\n >\n <IconUserCircle size={24} />\n </ThemeIcon>\n <Box>\n <Title order={4}>{title}</Title>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n >\n {subtitle}\n </Text>\n </Box>\n </Group>\n }\n {...containerProps}\n >\n <Divider mb=\"md\" />\n {profileContent}\n </Modal>\n )\n }\n\n // Renderizar como Card\n return (\n <Paper\n withBorder\n // shadow=\"md\"\n p=\"md\"\n w={width}\n radius=\"md\"\n {...containerProps}\n >\n <Stack gap=\"sm\">\n {/* Header */}\n <Group gap=\"md\">\n {logo ? (\n <Image\n src={logo}\n alt=\"Auth\"\n h={logoHeight}\n fit=\"contain\"\n />\n ) : (\n <ThemeIcon\n size={44}\n variant=\"light\"\n >\n <IconUserCircle size={24} />\n </ThemeIcon>\n )}\n <Box>\n <Title order={4}>{title}</Title>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n >\n {subtitle}\n </Text>\n </Box>\n </Group>\n\n <Divider />\n\n {profileContent}\n </Stack>\n </Paper>\n )\n}\n","import { useAuth } from '../../AuthProvider.jsx'\n\n/**\n * Renderiza children apenas quando o usuário está autenticado\n * Equivalente ao <SignedIn> do Clerk\n */\nexport function SignedIn({ children }) {\n const { user, loading } = useAuth()\n if (loading || !user) return null\n return children\n}\n\nexport default SignedIn\n","import { useAuth } from '../../AuthProvider.jsx'\n\n/**\n * Renderiza children apenas quando o usuário NÃO está autenticado\n * Equivalente ao <SignedOut> do Clerk\n */\nexport function SignedOut({ children }) {\n const { user, loading } = useAuth()\n if (loading || user) return null\n return children\n}\n\nexport default SignedOut\n","import { useAuth } from '../../AuthProvider.jsx'\n\n/**\n * Renderiza children enquanto a autenticação está carregando\n * Equivalente ao <ClerkLoading> do Clerk\n */\nexport function AuthLoading({ children }) {\n const { loading } = useAuth()\n if (!loading) return null\n return children\n}\n\nexport default AuthLoading\n","import { useAuth } from '../../AuthProvider.jsx'\n\n/**\n * Renderiza children quando a autenticação terminou de carregar\n * Equivalente ao <ClerkLoaded> do Clerk\n */\nexport function AuthLoaded({ children }) {\n const { loading } = useAuth()\n if (loading) return null\n return children\n}\n\nexport default AuthLoaded\n","import { useNavigate } from 'react-router-dom'\n\n/**\n * Botão unstyled para navegação para página de login\n * Equivalente ao <SignInButton> do Clerk\n */\nexport function SignInButton({ children, redirectTo = '/login', ...props }) {\n const navigate = useNavigate()\n\n return (\n <button\n onClick={() => navigate(redirectTo)}\n {...props}\n >\n {children || 'Sign In'}\n </button>\n )\n}\n\nexport default SignInButton\n","import { useNavigate } from 'react-router-dom'\n\n/**\n * Botão unstyled para navegação para página de registro\n * Equivalente ao <SignUpButton> do Clerk\n */\nexport function SignUpButton({ children, redirectTo = '/register', ...props }) {\n const navigate = useNavigate()\n\n return (\n <button\n onClick={() => navigate(redirectTo)}\n {...props}\n >\n {children || 'Sign Up'}\n </button>\n )\n}\n\nexport default SignUpButton\n","import { useSignOut } from '../../AuthProvider.jsx'\n\n/**\n * Botão unstyled para fazer logout\n * Equivalente ao <SignOutButton> do Clerk\n */\nexport function SignOutButton({ children, onSignOut, ...props }) {\n const signOut = useSignOut()\n\n const handleClick = async () => {\n await signOut()\n onSignOut?.()\n }\n\n return (\n <button\n onClick={handleClick}\n {...props}\n >\n {children || 'Sign Out'}\n </button>\n )\n}\n\nexport default SignOutButton\n"],"names":["API_BASE","API_KEY","INTERNAL_MODE","configure","apiKey","internal","api","route","opts","cleanRoute","startsWith","url","token","getStoredToken","headers","Accept","Authorization","res","fetch","credentials","data","status","json","catch","ok","errorMessage","message","error","detail","statusText","JSON","stringify","Object","assign","Error","window","localStorage","getItem","setStoredToken","setItem","removeItem","handleAuthResponse","result","session","sessionToken","decodeJWT","parts","split","length","base64Url","base64","replace","jsonPayload","atob","Buffer","from","toString","parse","isTokenExpired","payload","exp","now","Date","isExpired","console","log","diff","isAuthenticated","valid","getCurrentUser","id","sub","email","name","signUp","password","method","body","signIn","signOut","refreshToken","sendMagicLink","callbackURL","callback","location","origin","verifyMagicLink","encodeURIComponent","forgotPassword","redirectTo","redirect","resetPassword","newPassword","verifyEmail","resendVerification","getSession","listSessions","revokeSession","revokeOtherSessions","getApplicationInfo","warn","updateProfile","changePassword","currentPassword","changeEmail","newEmail","socialRedirect","provider","href","useAuthStore","create","set","get","user","loading","sessions","currentSession","loadingStates","magicLink","applicationInfo","setLoading","key","value","state","fetchApplicationInfo","appInfo","init","sessionData","sessionError","err","sessionId","isCurrent","isLast","filter","s","startRefresh","refreshInterval","setInterval","timeUntilExpiry","addEventListener","clearInterval","checkTokenValidity","setUser","AuthContext","createContext","AuthProvider","children","onError","useMemo","useEffect","handleStorageChange","event","setState","handleSessionRevoked","removeEventListener","interval","contextValue","_jsx","Provider","useAuth","useShallow","useSignIn","useSignUp","useSignOut","useCheckToken","useMagicLink","verifying","usePasswordReset","useEmailVerification","resending","useSession","useAuthLoading","useUser","loadingUpdateProfile","loadingChangePassword","loadingChangeEmail","useProfile","useSessions","loadingListSessions","loadingRevokeSession","useApplicationLogo","image","Protect","fallback","Navigate","to","Outlet","AuthCard","title","subtitle","logo","logoHeight","width","variant","opened","onClose","modalProps","props","content","_jsxs","Stack","gap","Image","src","alt","h","fit","Title","order","Text","size","c","Modal","withCloseButton","radius","overlayProps","backgroundOpacity","blur","Paper","withBorder","shadow","p","w","SignIn","showMagicLink","showForgotPassword","showSocialLogin","showSignUpLink","signUpUrl","onSuccess","onMagicLinkSent","onForgotPasswordSent","onSocialLogin","labels","cardProps","loadingSignIn","loadingMagicLink","loadingResetPassword","applicationLogo","finalLogo","defaultLogo","form","useForm","initialValues","validate","test","invalidEmail","passwordTooShort","handleSubmit","values","handleMagicLink","setFieldError","emailRequired","handleForgotPassword","isLoading","onSubmit","TextInput","label","placeholder","emailPlaceholder","leftSection","IconMail","getInputProps","disabled","PasswordInput","passwordPlaceholder","IconLock","Anchor","ta","onClick","style","cursor","sendingReset","Button","type","fullWidth","rightSection","IconArrowRight","signInButton","_Fragment","Divider","orContinueWith","magicLinkButton","Group","grow","IconBrandGoogle","IconBrandGithub","Center","noAccount","createAccount","SignUp","requireName","showSignInLink","signInUrl","confirmPassword","nameRequired","passwordMismatch","namePlaceholder","IconUser","confirmPasswordPlaceholder","signUpButton","hasAccount","MagicLink","onSent","IconSend","sendButton","backTo","MagicLinkCallback","propToken","redirectDelay","setStatus","useState","setErrorMessage","verifyingTokenRef","useRef","verify","urlParams","URLSearchParams","search","noToken","current","setTimeout","verificationFailed","align","Loader","pleaseWait","IconCheck","color","success","redirecting","authenticated","IconX","failed","invalidLink","ForgotPassword","rememberedPassword","ResetPassword","setToken","setSuccess","urlToken","successTitle","successMessage","component","goToSignIn","newPasswordPlaceholder","resetButton","VerifyEmail","onResent","tokenEmail","setTokenEmail","loadingResend","e","handleResend","targetEmail","verification","missingToken","verified","invalidToken","toLowerCase","includes","IconRefresh","resend","UserProfile","onProfileUpdate","onPasswordChange","onEmailChange","showAvatar","showName","showEmail","showPassword","showSessions","maxAvatarSize","customSections","containerProps","editingSection","setEditingSection","parseUserAgent","ua","browser","os","handleRevokeSession","isCurrentSession","dispatchEvent","CustomEvent","notifications","show","sessionRevoked","response","errorTitle","sessionRevokeFailed","handleRevokeOtherSessions","otherSessionsRevoked","otherSessionsRevokeFailed","passwordForm","v","currentPasswordRequired","newPasswordRequired","passwordMinLength","emailForm","emailInvalid","nameForm","avatarPreview","setAvatarPreview","avatarFile","setAvatarFile","handleAvatarFileChange","file","avatarInvalidType","avatarTooLarge","Math","round","reader","FileReader","onloadend","readAsDataURL","setValues","handleToggleSection","section","reset","handleChangePassword","passwordChanged","passwordChangeFailed","handleChangeEmail","emailVerificationSent","emailChangeFailed","handleChangeName","nameUpdated","nameUpdateFailed","handleChangeAvatar","avatarRequired","avatarUpdated","avatarUpdateFailed","handleRemoveAvatar","avatarRemoved","avatarRemoveFailed","SectionHeader","icon","Icon","sectionTitle","description","mb","ThemeIcon","Box","fw","SettingRow","action","actionLabel","expanded","Card","justify","wrap","flex","flexShrink","Tooltip","position","cancel","profileContent","profileSection","profileDescription","avatar","update","updateAvatar","Avatar","Collapse","in","accept","display","onChange","target","files","clickToChange","document","getElementById","click","borderRadius","bottom","right","border","IconPhoto","avatarHint","removePhoto","IconTrash","remove","save","change","changeName","IconPencil","notDefined","newEmailPlaceholder","IconShield","securitySection","securityDescription","IconKey","currentPasswordPlaceholder","passwordDescription","close","manage","manageSessions","IconDevices","loadingSessions","noSessionsFound","map","sessionItem","deviceInfo","userAgent","createdDate","createdAt","borderColor","undefined","backgroundColor","IconDeviceMobile","Badge","thisDevice","ipAddress","unknownIP","toLocaleDateString","at","toLocaleTimeString","hour","minute","signOutAndEnd","endSession","IconLogout","end","endOtherSessions","IconUserCircle","SignedIn","SignedOut","AuthLoading","AuthLoaded","SignInButton","navigate","useNavigate","SignUpButton","SignOutButton","onSignOut","handleClick"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/authSdk.js","../src/authStore.js","../src/AuthProvider.jsx","../src/Protect.jsx","../src/components/AuthCard.jsx","../src/assets/logotipo.webp","../src/components/SignIn.jsx","../src/components/SignUp.jsx","../src/components/MagicLink.jsx","../src/components/MagicLinkCallback.jsx","../src/components/ForgotPassword.jsx","../src/components/ResetPassword.jsx","../src/components/VerifyEmail.jsx","../src/components/UserProfile.jsx","../src/components/control/SignedIn.jsx","../src/components/control/SignedOut.jsx","../src/components/control/AuthLoading.jsx","../src/components/control/AuthLoaded.jsx","../src/components/unstyled/SignInButton.jsx","../src/components/unstyled/SignUpButton.jsx","../src/components/unstyled/SignOutButton.jsx"],"sourcesContent":["// Config - API Base URL fixa para o serviço de autenticação\nlet API_BASE = 'https://manager.myauth.click'\nlet API_KEY = null\nlet INTERNAL_MODE = false // Modo interno: não exige API Key (para aplicações same-domain)\n\n// Permite configurar API key e modo interno externamente (chamado pelo AuthProvider)\nexport function configure({ apiKey, apiUrl, internal = false }) {\n if (apiKey) API_KEY = apiKey\n if (apiUrl) API_BASE = apiUrl.endsWith('/') ? apiUrl.slice(0, -1) : apiUrl\n INTERNAL_MODE = internal\n}\n\nexport const isInternal = () => INTERNAL_MODE\n\n// Cache para JWKS\nlet jwksCache = null\nlet jwksCacheExpiry = 0\n\n// helper fetch pré-configurado\nasync function api(route, opts = {}) {\n // Garante que a rota comece com /\n const cleanRoute = route.startsWith('/') ? route : `/${route}`\n\n // Constrói URL completa (API_BASE já teve trailing slash removido no configure)\n const url = `${API_BASE}${cleanRoute}`\n\n const token = getStoredToken()\n const headers = {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n ...opts.headers,\n }\n\n // Adiciona Authorization header se tiver token\n if (token) {\n headers.Authorization = `Bearer ${token}`\n }\n\n // Adiciona API Key se configurada e não estiver em modo interno\n if (API_KEY && !INTERNAL_MODE) {\n headers['X-API-Key'] = API_KEY\n }\n\n const res = await fetch(url, {\n headers,\n credentials: 'include', // Required for sending session cookies\n ...opts,\n })\n\n // Converte JSON automaticamente e lança erro legível\n const data = res.status !== 204 ? await res.json().catch(() => ({})) : null\n\n if (!res.ok) {\n let errorMessage = data?.message || data?.error || data?.detail || res.statusText\n\n // Se a mensagem for um objeto, tenta extrair string ou stringify\n if (typeof errorMessage === 'object') {\n errorMessage = errorMessage.message || JSON.stringify(errorMessage)\n }\n\n throw Object.assign(new Error(errorMessage), { res, data })\n }\n return data\n}\n\n// Gerenciamento de token no localStorage\nfunction getStoredToken() {\n if (typeof window === 'undefined') return null\n return window.localStorage.getItem('auth:token')\n}\n\nfunction setStoredToken(token) {\n if (typeof window === 'undefined') return\n if (token) {\n window.localStorage.setItem('auth:token', token)\n } else {\n window.localStorage.removeItem('auth:token')\n }\n}\n// Helper para processar resposta de autenticação e salvar token\nfunction handleAuthResponse(result) {\n // Tenta encontrar o token em vários lugares possíveis\n const token = result.token || result.session?.token || result.session?.sessionToken\n\n if (token) {\n setStoredToken(token)\n }\n\n return result\n}\n// Busca JWKS do servidor\nasync function fetchJWKS() {\n const now = Date.now()\n if (jwksCache && now < jwksCacheExpiry) {\n return jwksCache\n }\n\n try {\n const response = await fetch(`${API_BASE}/.well-known/jwks.json`)\n const jwks = await response.json()\n jwksCache = jwks\n jwksCacheExpiry = now + 5 * 60 * 1000 // Cache por 5 minutos\n return jwks\n } catch (error) {\n console.error('Erro ao buscar JWKS:', error)\n return null\n }\n}\n\n// Decodifica JWT (apenas payload, sem verificação de assinatura)\nexport function decodeJWT(token) {\n try {\n const parts = token.split('.')\n if (parts.length !== 3) return null\n\n // Safe base64 decode\n const base64Url = parts[1]\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/')\n\n // Verifica ambiente para decodificar\n const jsonPayload = typeof window !== 'undefined' ? window.atob(base64) : Buffer.from(base64, 'base64').toString()\n\n return JSON.parse(jsonPayload)\n } catch {\n return null\n }\n}\n\n// Verifica se o token está expirado\nfunction isTokenExpired(token) {\n const payload = decodeJWT(token)\n\n // Se não for um JWT válido (payload null), assumimos que é um token opaco (session token)\n // Nesse caso, deixamos o servidor validar via 401\n if (!payload) return false\n\n if (!payload.exp) return false\n\n const now = Date.now()\n const exp = payload.exp * 1000\n const isExpired = now >= exp\n\n if (isExpired) {\n console.log('[AuthSDK] Token expired:', { now, exp, diff: exp - now })\n }\n\n return isExpired\n}\n\n// Verifica se o usuário está autenticado\nexport function isAuthenticated() {\n const token = getStoredToken()\n const valid = token && !isTokenExpired(token)\n return valid\n}\n\n// Obtém dados do usuário do token\nexport function getCurrentUser() {\n const token = getStoredToken()\n if (!token || isTokenExpired(token)) return null\n\n const payload = decodeJWT(token)\n return payload\n ? {\n id: payload.sub,\n email: payload.email,\n name: payload.name,\n ...payload,\n }\n : null\n}\n\n/*--- métodos de autenticação -------------------*/\nexport const signUp = async (email, password, name = '') => {\n const result = await api('/auth/sign-up/email', {\n method: 'POST',\n body: JSON.stringify({ email, password, name }),\n })\n\n return handleAuthResponse(result)\n}\n\nexport const signIn = async (email, password) => {\n const result = await api('/auth/sign-in/email', {\n method: 'POST',\n body: JSON.stringify({ email, password }),\n })\n\n return handleAuthResponse(result)\n}\n\nexport const signOut = async () => {\n try {\n await api('/auth/sign-out', { method: 'POST' })\n } catch {\n // Ignora erros de logout no servidor\n } finally {\n setStoredToken(null)\n }\n}\n\nexport const refreshToken = async () => {\n try {\n const result = await api('/auth/refresh', { method: 'POST' })\n return handleAuthResponse(result)\n } catch (error) {\n setStoredToken(null)\n throw error\n }\n}\n\n/*--- Magic Link ---------------------------------*/\nexport const sendMagicLink = async (email, callbackURL) => {\n const callback = callbackURL || (typeof window !== 'undefined' ? `${window.location.origin}/auth/magic-link/verify` : '/auth/magic-link/verify')\n\n return await api('/auth/sign-in/magic-link', {\n method: 'POST',\n body: JSON.stringify({ email, callbackURL: callback }),\n })\n}\n\nexport const verifyMagicLink = async token => {\n const result = await api(`/auth/magic-link/verify?token=${encodeURIComponent(token)}`)\n\n return handleAuthResponse(result)\n}\n\n/*--- Password Reset -----------------------------*/\nexport const forgotPassword = async (email, redirectTo) => {\n const redirect = redirectTo || (typeof window !== 'undefined' ? `${window.location.origin}/auth/reset-password` : '/auth/reset-password')\n\n return await api('/auth/request-password-reset', {\n method: 'POST',\n body: JSON.stringify({ email, redirectTo: redirect }),\n })\n}\n\nexport const resetPassword = async (token, newPassword) => {\n return await api('/auth/reset-password', {\n method: 'POST',\n body: JSON.stringify({ token, newPassword }),\n })\n}\n\n/*--- Email Verification -------------------------*/\nexport const verifyEmail = async token => {\n const result = await api(`/auth/verify-email?token=${encodeURIComponent(token)}`)\n\n return handleAuthResponse(result)\n}\n\nexport const resendVerification = async (email, callbackURL) => {\n const callback = callbackURL || (typeof window !== 'undefined' ? `${window.location.origin}/auth/verify-email` : '/auth/verify-email')\n\n return await api('/auth/send-verification-email', {\n method: 'POST',\n body: JSON.stringify({ email, callbackURL: callback }),\n })\n}\n\n/*--- Session ------------------------------------*/\nexport const getSession = async () => {\n return await api('/auth/session')\n}\n\nexport const listSessions = async () => {\n return await api('/auth/list-sessions')\n}\n\nexport const revokeSession = async id => {\n return await api('/auth/revoke-session-by-id', {\n method: 'POST',\n body: JSON.stringify({ id }),\n })\n}\n\nexport const revokeOtherSessions = async () => {\n return await api('/auth/revoke-other-sessions', {\n method: 'POST',\n })\n}\n\n/*--- Application Info ----------------------------*/\nexport const getApplicationInfo = async () => {\n try {\n const data = await api('/application/by-api-key')\n return data?.data || null\n } catch (error) {\n console.warn('[AuthSDK] Failed to fetch application info:', error.message)\n return null\n }\n}\n\n/*--- Profile Management ---------------------------*/\nexport const updateProfile = async data => {\n return await api('/auth/update-user', {\n method: 'POST',\n body: JSON.stringify(data),\n })\n}\n\nexport const changePassword = async (currentPassword, newPassword, revokeOtherSessions = false) => {\n return await api('/auth/change-password', {\n method: 'POST',\n body: JSON.stringify({ currentPassword, newPassword, revokeOtherSessions }),\n })\n}\n\nexport const changeEmail = async (newEmail, callbackURL) => {\n const callback = callbackURL || (typeof window !== 'undefined' ? `${window.location.origin}/auth/verify-email` : '/auth/verify-email')\n\n return await api('/auth/change-email', {\n method: 'POST',\n body: JSON.stringify({ newEmail, callbackURL: callback }),\n })\n}\n\n/* Social login redirect (ex.: Google) -----------*/\nexport function socialRedirect(provider, redirectTo = typeof window !== 'undefined' ? window.location.href : '/') {\n if (typeof window === 'undefined') return\n window.location = `${API_BASE}/auth/sign-in/${provider}?redirect=${encodeURIComponent(redirectTo)}`\n}\n","import { create } from 'zustand'\nimport * as api from './authSdk.js'\n\n// Estado: { user, loading, error }\nexport const useAuthStore = create((set, get) => ({\n user: null,\n loading: true,\n error: null,\n\n // Session management\n sessions: [],\n currentSession: null,\n\n // Loading states granulares\n loadingStates: {\n signIn: false,\n signUp: false,\n signOut: false,\n magicLink: false,\n verifyMagicLink: false,\n resetPassword: false,\n verifyEmail: false,\n resendVerification: false,\n updateProfile: false,\n changePassword: false,\n changeEmail: false,\n listSessions: false,\n revokeSession: null, // null or sessionId being revoked\n },\n\n // Application info (logo, nome, etc)\n applicationInfo: null,\n\n // Helper para atualizar loading states\n setLoading: (key, value) =>\n set(state => ({\n loadingStates: { ...state.loadingStates, [key]: value },\n })),\n\n // Buscar informações da aplicação\n fetchApplicationInfo: async () => {\n try {\n const appInfo = await api.getApplicationInfo()\n set({ applicationInfo: appInfo })\n } catch (error) {\n console.warn('[AuthStore] Failed to fetch application info:', error)\n set({ applicationInfo: null })\n }\n },\n\n /* Init ao montar o Provider */\n init: async () => {\n const { fetchApplicationInfo } = get()\n\n try {\n // Buscar application info primeiro (não bloqueia o init)\n // Apenas se não estiver em modo interno (dashboard)\n if (!api.isInternal()) {\n fetchApplicationInfo()\n }\n\n let user = null\n\n // PRIMEIRO: Tenta buscar sessão do servidor (funciona com cookies)\n // Isso é essencial para Better Auth que usa session cookies\n try {\n const sessionData = await api.getSession()\n if (sessionData?.user) {\n user = sessionData.user\n }\n if (sessionData?.session) {\n set({ currentSession: sessionData.session })\n }\n } catch (sessionError) {\n // Se falhar (401), continua para verificar localStorage token\n console.log('[AuthStore] Server session not found, checking local token')\n }\n\n // SEGUNDO: Se não encontrou sessão via cookies, verifica localStorage token (JWT)\n if (!user && api.isAuthenticated()) {\n user = api.getCurrentUser()\n }\n\n set({ user, loading: false })\n } catch (error) {\n console.error('Erro na inicialização:', error)\n set({ user: null, loading: false })\n }\n },\n\n /* Ações de Autenticação */\n signUp: async (email, password, name) => {\n const { setLoading } = get()\n setLoading('signUp', true)\n set({ error: null })\n\n try {\n const result = await api.signUp(email, password, name)\n const user = api.getCurrentUser()\n set({ user, loading: false })\n setLoading('signUp', false)\n return result\n } catch (err) {\n set({ error: err })\n setLoading('signUp', false)\n throw err\n }\n },\n\n signIn: async (email, password) => {\n const { setLoading } = get()\n setLoading('signIn', true)\n set({ error: null })\n\n try {\n const result = await api.signIn(email, password)\n\n // Tenta obter usuário do token (se JWT)\n let user = api.getCurrentUser()\n\n // Se não encontrou no token (sessão opaca), busca do servidor\n if (!user) {\n const sessionData = await api.getSession()\n if (sessionData?.user) user = sessionData.user\n if (sessionData?.session) {\n set({ currentSession: sessionData.session })\n }\n }\n\n set({ user, loading: false })\n setLoading('signIn', false)\n return result\n } catch (err) {\n set({ error: err })\n setLoading('signIn', false)\n throw err\n }\n },\n\n signOut: async () => {\n const { setLoading } = get()\n setLoading('signOut', true)\n\n try {\n await api.signOut()\n set({ user: null })\n // Sincronizar logout entre abas\n if (typeof window !== 'undefined') {\n window.localStorage.setItem('auth:logout', Date.now())\n }\n } finally {\n setLoading('signOut', false)\n }\n },\n\n /* Magic Link */\n sendMagicLink: async (email, callbackURL) => {\n const { setLoading } = get()\n setLoading('magicLink', true)\n set({ error: null })\n\n try {\n const result = await api.sendMagicLink(email, callbackURL)\n setLoading('magicLink', false)\n return result\n } catch (err) {\n set({ error: err })\n setLoading('magicLink', false)\n throw err\n }\n },\n\n verifyMagicLink: async token => {\n const { setLoading } = get()\n setLoading('verifyMagicLink', true)\n set({ error: null })\n\n try {\n const result = await api.verifyMagicLink(token)\n\n let user = result.user\n\n // Se não veio no resultado, tenta pegar do token ou do servidor\n if (!user) {\n user = api.getCurrentUser()\n if (!user) {\n const session = await api.getSession()\n if (session?.user) user = session.user\n }\n }\n\n if (user) {\n set({ user, loading: false })\n }\n\n setLoading('verifyMagicLink', false)\n return result\n } catch (err) {\n set({ error: err })\n setLoading('verifyMagicLink', false)\n throw err\n }\n },\n\n /* Password Reset */\n forgotPassword: async (email, redirectTo) => {\n const { setLoading } = get()\n setLoading('resetPassword', true)\n set({ error: null })\n\n try {\n const result = await api.forgotPassword(email, redirectTo)\n setLoading('resetPassword', false)\n return result\n } catch (err) {\n set({ error: err })\n setLoading('resetPassword', false)\n throw err\n }\n },\n\n resetPassword: async (token, newPassword) => {\n const { setLoading } = get()\n setLoading('resetPassword', true)\n set({ error: null })\n\n try {\n const result = await api.resetPassword(token, newPassword)\n setLoading('resetPassword', false)\n return result\n } catch (err) {\n set({ error: err })\n setLoading('resetPassword', false)\n throw err\n }\n },\n\n /* Email Verification */\n verifyEmail: async token => {\n const { setLoading } = get()\n setLoading('verifyEmail', true)\n set({ error: null })\n\n try {\n const result = await api.verifyEmail(token)\n if (result.user) {\n set({ user: result.user, loading: false })\n }\n setLoading('verifyEmail', false)\n return result\n } catch (err) {\n set({ error: err })\n setLoading('verifyEmail', false)\n throw err\n }\n },\n\n resendVerification: async (email, callbackURL) => {\n const { setLoading } = get()\n setLoading('resendVerification', true)\n set({ error: null })\n\n try {\n const result = await api.resendVerification(email, callbackURL)\n setLoading('resendVerification', false)\n return result\n } catch (err) {\n set({ error: err })\n setLoading('resendVerification', false)\n throw err\n }\n },\n\n /* Session */\n getSession: async () => {\n try {\n const sessionData = await api.getSession()\n // Store current session for comparison (includes id)\n if (sessionData?.session) {\n set({ currentSession: sessionData.session })\n }\n return sessionData\n } catch (err) {\n set({ error: err })\n throw err\n }\n },\n\n listSessions: async () => {\n const { setLoading } = get()\n setLoading('listSessions', true)\n set({ error: null })\n\n try {\n const result = await api.listSessions()\n set({ sessions: result || [] })\n setLoading('listSessions', false)\n return result\n } catch (err) {\n set({ error: err, sessions: [] })\n setLoading('listSessions', false)\n throw err\n }\n },\n\n revokeSession: async sessionId => {\n const { setLoading, currentSession, sessions, signOut } = get()\n setLoading('revokeSession', sessionId)\n set({ error: null })\n\n try {\n // Detect if current session OR last remaining session\n const isCurrent = sessionId === currentSession?.id\n const isLast = sessions.length === 1 && sessions[0].id === sessionId\n\n // Se for a sessão atual ou a última, faz logout normal\n if (isCurrent || isLast) {\n await signOut()\n // signOut já limpa loading states e erros no finally, mas\n // como estamos dentro do fluxo deste método, garantimos:\n setLoading('revokeSession', null)\n return\n }\n\n await api.revokeSession(sessionId)\n\n // Remove a sessão revogada da lista local\n set(state => ({\n sessions: state.sessions.filter(s => s.id !== sessionId),\n }))\n\n setLoading('revokeSession', null)\n } catch (err) {\n set({ error: err })\n setLoading('revokeSession', null)\n throw err\n }\n },\n\n revokeOtherSessions: async () => {\n const { setLoading, listSessions } = get()\n setLoading('revokeSession', 'all')\n set({ error: null })\n\n try {\n await api.revokeOtherSessions()\n // Refresh sessions list after revocation\n await listSessions()\n setLoading('revokeSession', null)\n } catch (err) {\n set({ error: err })\n setLoading('revokeSession', null)\n throw err\n }\n },\n\n /* Refresh do token em background */\n startRefresh: () => {\n if (typeof window === 'undefined') return\n\n const refreshInterval = setInterval(async () => {\n try {\n // Se o usuário está autenticado mas o token está próximo do vencimento\n if (api.isAuthenticated()) {\n const token = window.localStorage.getItem('auth:token')\n if (token) {\n // Decodifica o token para verificar tempo de expiração\n const base64Url = token.split('.')[1]\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/')\n const jsonPayload = window.atob(base64)\n const payload = JSON.parse(jsonPayload)\n const now = Date.now() / 1000\n const timeUntilExpiry = payload.exp - now\n\n // Se o token expira em menos de 5 minutos, faz refresh\n if (timeUntilExpiry < 300) {\n // 5 minutos\n await api.refreshToken()\n const user = api.getCurrentUser()\n set({ user })\n }\n }\n }\n } catch (error) {\n console.error('Erro no refresh automático:', error)\n // Em caso de erro, faz logout\n set({ user: null })\n window.localStorage.removeItem('auth:token')\n }\n }, 4 * 60 * 1000) // Verifica a cada 4 minutos\n\n // Limpa o intervalo quando necessário\n if (typeof window !== 'undefined') {\n window.addEventListener('beforeunload', () => {\n clearInterval(refreshInterval)\n })\n }\n },\n\n /* Verifica se o token ainda é válido */\n checkTokenValidity: () => {\n if (!api.isAuthenticated()) {\n set({ user: null })\n return false\n }\n return true\n },\n\n /* Atualizar usuário manualmente */\n setUser: user => set({ user }),\n\n /* Profile Management */\n updateProfile: async data => {\n const { setLoading } = get()\n setLoading('updateProfile', true)\n set({ error: null })\n\n try {\n const result = await api.updateProfile(data)\n // Atualiza o user no store com os novos dados\n set(state => ({\n user: state.user ? { ...state.user, ...data } : null,\n }))\n setLoading('updateProfile', false)\n return result\n } catch (err) {\n set({ error: err })\n setLoading('updateProfile', false)\n throw err\n }\n },\n\n changePassword: async (currentPassword, newPassword, revokeOtherSessions = false) => {\n const { setLoading } = get()\n setLoading('changePassword', true)\n set({ error: null })\n\n try {\n const result = await api.changePassword(currentPassword, newPassword, revokeOtherSessions)\n setLoading('changePassword', false)\n return result\n } catch (err) {\n set({ error: err })\n setLoading('changePassword', false)\n throw err\n }\n },\n\n changeEmail: async (newEmail, callbackURL) => {\n const { setLoading } = get()\n setLoading('changeEmail', true)\n set({ error: null })\n\n try {\n const result = await api.changeEmail(newEmail, callbackURL)\n setLoading('changeEmail', false)\n return result\n } catch (err) {\n set({ error: err })\n setLoading('changeEmail', false)\n throw err\n }\n },\n}))\n","import { createContext, useEffect, useMemo } from 'react'\nimport { useShallow } from 'zustand/react/shallow'\nimport { useAuthStore } from './authStore.js'\nimport { configure } from './authSdk.js'\n\nconst AuthContext = createContext() // só para ter o Provider em JSX\n\nexport function AuthProvider({\n children,\n apiKey, // API Key para header X-API-Key (obrigatória exceto em modo internal)\n apiUrl, // URL do manager (opcional, padrão: https://manager.myauth.click)\n internal = false, // Modo interno: não exige API Key (para aplicações same-domain como dashboard)\n onError, // Callback de erro global\n}) {\n // Validação de props obrigatórias\n // apiKey só é obrigatória se não estiver em modo internal\n if (!internal && !apiKey) {\n throw new Error('[@riligar/auth-react] apiKey é obrigatória no AuthProvider. ' + 'Obtenha sua API Key no dashboard em https://dashboard.myauth.click')\n }\n\n const init = useAuthStore(s => s.init)\n const startRefresh = useAuthStore(s => s.startRefresh)\n const checkTokenValidity = useAuthStore(s => s.checkTokenValidity)\n\n // Configura SDK com apiKey, apiUrl e modo interno\n // Usamos useMemo para garantir que a configuração ocorra ANTES dos efeitos dos componentes filhos\n useMemo(() => {\n configure({ apiKey, apiUrl, internal })\n }, [apiKey, apiUrl, internal])\n\n useEffect(() => {\n init()\n startRefresh()\n }, [init, startRefresh])\n\n // Sincronização entre abas - escuta logout e mudanças no token\n useEffect(() => {\n if (typeof window === 'undefined') return\n\n const handleStorageChange = event => {\n if (event.key === 'auth:logout') {\n // Limpa o user do store - a aplicação redireciona automaticamente quando user é null\n useAuthStore.setState({ user: null, currentSession: null, sessions: [] })\n }\n // Se o token mudou em outra aba, verifica validade\n if (event.key === 'auth:token') {\n checkTokenValidity()\n }\n }\n\n // Escuta evento de sessão revogada (quando o usuário revoga sua própria sessão)\n const handleSessionRevoked = () => {\n // Limpa o usuário do store\n useAuthStore.setState({ user: null, currentSession: null, sessions: [] })\n // Dispara evento de logout para sincronizar entre abas\n localStorage.setItem('auth:logout', Date.now())\n }\n\n window.addEventListener('storage', handleStorageChange)\n window.addEventListener('auth:session-revoked', handleSessionRevoked)\n return () => {\n window.removeEventListener('storage', handleStorageChange)\n window.removeEventListener('auth:session-revoked', handleSessionRevoked)\n }\n }, [checkTokenValidity])\n\n // Verifica validade do token periodicamente\n useEffect(() => {\n if (typeof window === 'undefined') return\n\n const interval = setInterval(() => {\n checkTokenValidity()\n }, 30 * 1000) // Verifica a cada 30 segundos\n\n return () => clearInterval(interval)\n }, [checkTokenValidity])\n\n // Contexto com onError callback\n const contextValue = useMemo(() => ({ onError }), [onError])\n\n return <AuthContext.Provider value={contextValue}>{children}</AuthContext.Provider>\n}\n\n/* Hooks \"facade\" que a app vai usar */\nexport const useAuth = () =>\n useAuthStore(\n useShallow(s => ({\n user: s.user,\n loading: s.loading,\n error: s.error,\n isAuthenticated: s.user !== null,\n }))\n )\n\n// Auth Actions\nexport const useSignIn = () => useAuthStore(s => s.signIn)\nexport const useSignUp = () => useAuthStore(s => s.signUp)\nexport const useSignOut = () => useAuthStore(s => s.signOut)\nexport const useCheckToken = () => useAuthStore(s => s.checkTokenValidity)\n\n// Magic Link Hook\nexport const useMagicLink = () =>\n useAuthStore(\n useShallow(s => ({\n sendMagicLink: s.sendMagicLink,\n verifyMagicLink: s.verifyMagicLink,\n loading: s.loadingStates.magicLink,\n verifying: s.loadingStates.verifyMagicLink,\n error: s.error,\n }))\n )\n\n// Password Reset Hook\nexport const usePasswordReset = () =>\n useAuthStore(\n useShallow(s => ({\n forgotPassword: s.forgotPassword,\n resetPassword: s.resetPassword,\n loading: s.loadingStates.resetPassword,\n error: s.error,\n }))\n )\n\n// Email Verification Hook\nexport const useEmailVerification = () =>\n useAuthStore(\n useShallow(s => ({\n verifyEmail: s.verifyEmail,\n resendVerification: s.resendVerification,\n loading: s.loadingStates.verifyEmail,\n resending: s.loadingStates.resendVerification,\n error: s.error,\n }))\n )\n\n// Session Hook\nexport const useSession = () =>\n useAuthStore(\n useShallow(s => ({\n getSession: s.getSession,\n user: s.user,\n setUser: s.setUser,\n }))\n )\n\n// Loading States Hook\nexport const useAuthLoading = () => useAuthStore(s => s.loadingStates)\n\n// Profile Management Hook (novo nome estilo Clerk)\nexport const useUser = () =>\n useAuthStore(\n useShallow(s => ({\n user: s.user,\n updateProfile: s.updateProfile,\n changePassword: s.changePassword,\n changeEmail: s.changeEmail,\n loadingUpdateProfile: s.loadingStates.updateProfile,\n loadingChangePassword: s.loadingStates.changePassword,\n loadingChangeEmail: s.loadingStates.changeEmail,\n error: s.error,\n }))\n )\n\n// Alias deprecado para backwards compatibility\nexport const useProfile = useUser\n\n// Sessions Management Hook\nexport const useSessions = () =>\n useAuthStore(\n useShallow(s => ({\n currentSession: s.currentSession,\n sessions: s.sessions,\n getSession: s.getSession,\n listSessions: s.listSessions,\n revokeSession: s.revokeSession,\n revokeOtherSessions: s.revokeOtherSessions,\n loadingListSessions: s.loadingStates.listSessions,\n loadingRevokeSession: s.loadingStates.revokeSession,\n error: s.error,\n }))\n )\n\n// Application Logo Hook\nexport const useApplicationLogo = () => {\n const applicationInfo = useAuthStore(s => s.applicationInfo)\n // Retorna o logo da aplicação ou null (componentes usam fallback padrão)\n return applicationInfo?.image || null\n}\n","import { Navigate, Outlet } from 'react-router-dom'\nimport { useAuth } from './AuthProvider.jsx'\n\nexport default function Protect({ fallback = <p>⌛ Carregando...</p>, redirectTo = '/login' }) {\n const { user, loading } = useAuth()\n\n if (loading) return fallback\n if (!user)\n return (\n <Navigate\n to={redirectTo}\n replace\n />\n )\n\n return <Outlet />\n}\n","import { Paper, Stack, Image, Title, Text, Modal, Box, Divider, ThemeIcon, Group } from '@mantine/core'\n\n/**\n * Container wrapper para componentes de autenticação\n * Suporta renderização como Card (Paper) ou Modal\n *\n * @param {object} props\n * @param {'card'|'modal'} [props.variant='card'] - Modo de renderização\n * @param {boolean} [props.opened] - Controla visibilidade do modal (apenas para variant=\"modal\")\n * @param {function} [props.onClose] - Callback ao fechar modal (apenas para variant=\"modal\")\n * @param {object} [props.modalProps] - Props adicionais para o Modal\n */\nexport default function AuthCard({\n children,\n title,\n subtitle,\n logo,\n logoHeight = 28,\n width = 350,\n\n // Variant props\n variant = 'card',\n opened,\n onClose,\n modalProps = {},\n\n ...props\n}) {\n // Conteúdo interno compartilhado entre Card e Modal\n const content = (\n <Stack gap=\"sm\">\n {(logo || title || subtitle) && (\n <Stack gap=\"xs\">\n {logo && (\n <Image\n src={logo}\n alt=\"Auth\"\n h={logoHeight}\n fit=\"contain\"\n />\n )}\n\n {title && <Title order={3}>{title}</Title>}\n\n {subtitle && (\n <Text\n size=\"sm\"\n c=\"dimmed\"\n >\n {subtitle}\n </Text>\n )}\n </Stack>\n )}\n\n {children}\n </Stack>\n )\n\n // Renderizar como Modal\n if (variant === 'modal') {\n return (\n <Modal\n opened={opened}\n onClose={onClose}\n size={width + 50}\n withCloseButton\n radius=\"md\"\n overlayProps={{ backgroundOpacity: 0.55, blur: 3 }}\n title={\n logo ? (\n <Image\n src={logo}\n alt=\"Auth\"\n h={logoHeight}\n fit=\"contain\"\n />\n ) : title ? (\n <Title order={4}>{title}</Title>\n ) : null\n }\n {...modalProps}\n >\n {/* Quando em modal, não repetir logo/title no content */}\n <Stack gap=\"sm\">\n {subtitle && (\n <Text\n size=\"sm\"\n c=\"dimmed\"\n >\n {subtitle}\n </Text>\n )}\n {children}\n </Stack>\n </Modal>\n )\n }\n\n // Renderizar como Card (default)\n return (\n <Paper\n withBorder\n shadow=\"md\"\n p={24}\n w={width}\n radius=\"md\"\n {...props}\n >\n {content}\n </Paper>\n )\n}\n","var img = \"data:image/webp;base64,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\";\n export default img;","import { useState } from 'react'\nimport { TextInput, PasswordInput, Button, Stack, Anchor, Divider, Group, Center, Text } from '@mantine/core'\nimport { useForm } from '@mantine/form'\nimport { IconMail, IconLock, IconArrowRight, IconBrandGoogle, IconBrandGithub } from '@tabler/icons-react'\nimport { useAuthStore } from '../authStore.js'\nimport { useApplicationLogo } from '../AuthProvider.jsx'\nimport AuthCard from './AuthCard.jsx'\n\nimport defaultLogo from '../assets/logotipo.webp'\n\n/**\n * Formulário de Sign In completo com Mantine\n * Suporta email/password, magic link, social login\n *\n * @param {object} props\n * @param {'card'|'modal'} [props.variant='card'] - Modo de renderização\n * @param {boolean} [props.opened] - Controla visibilidade (apenas para variant=\"modal\")\n * @param {function} [props.onClose] - Callback ao fechar (apenas para variant=\"modal\")\n */\nexport default function SignIn({\n // Configuração\n logo, // Removido default, será calculado abaixo\n title = 'Entrar',\n subtitle = 'Acesse sua conta para continuar',\n\n // Variant\n variant = 'card',\n opened,\n onClose,\n modalProps = {},\n\n // Features\n showMagicLink = true,\n showForgotPassword = true,\n showSocialLogin = false,\n showSignUpLink = true,\n\n // Links\n signUpUrl = '/auth/signup',\n\n // Callbacks\n onSuccess,\n onError,\n onMagicLinkSent,\n onForgotPasswordSent,\n onSocialLogin,\n\n // Custom labels\n labels = {},\n\n ...cardProps\n}) {\n const signIn = useAuthStore(s => s.signIn)\n const sendMagicLink = useAuthStore(s => s.sendMagicLink)\n const forgotPassword = useAuthStore(s => s.forgotPassword)\n const loadingSignIn = useAuthStore(s => s.loadingStates.signIn)\n const loadingMagicLink = useAuthStore(s => s.loadingStates.magicLink)\n const loadingResetPassword = useAuthStore(s => s.loadingStates.resetPassword)\n\n // Hook para buscar logo da aplicação\n const applicationLogo = useApplicationLogo()\n const finalLogo = logo || applicationLogo || defaultLogo\n\n const form = useForm({\n initialValues: {\n email: '',\n password: '',\n },\n validate: {\n email: value => (/^\\S+@\\S+$/.test(value) ? null : labels.invalidEmail || 'Email inválido'),\n password: value => (value.length < 6 ? labels.passwordTooShort || 'A senha deve ter pelo menos 6 caracteres' : null),\n },\n })\n\n const handleSubmit = async values => {\n try {\n const result = await signIn(values.email, values.password)\n onSuccess?.(result)\n } catch (error) {\n onError?.(error)\n }\n }\n\n const handleMagicLink = async () => {\n if (!form.values.email) {\n form.setFieldError('email', labels.emailRequired || 'Email obrigatório')\n return\n }\n\n try {\n await sendMagicLink(form.values.email)\n onMagicLinkSent?.(form.values.email)\n } catch (error) {\n onError?.(error)\n }\n }\n\n const handleForgotPassword = async () => {\n if (!form.values.email) {\n form.setFieldError('email', labels.emailRequired || 'Email obrigatório')\n return\n }\n\n try {\n await forgotPassword(form.values.email)\n onForgotPasswordSent?.(form.values.email)\n } catch (error) {\n onError?.(error)\n }\n }\n\n const isLoading = loadingSignIn || loadingMagicLink || loadingResetPassword\n\n return (\n <AuthCard\n logo={finalLogo}\n title={title}\n subtitle={subtitle}\n variant={variant}\n opened={opened}\n onClose={onClose}\n modalProps={modalProps}\n {...cardProps}\n >\n <form onSubmit={form.onSubmit(handleSubmit)}>\n <Stack gap=\"sm\">\n <TextInput\n label={labels.email || 'Email'}\n placeholder={labels.emailPlaceholder || 'seu@email.com'}\n leftSection={<IconMail size={16} />}\n {...form.getInputProps('email')}\n disabled={isLoading}\n />\n\n <PasswordInput\n label={labels.password || 'Senha'}\n placeholder={labels.passwordPlaceholder || 'Sua senha'}\n leftSection={<IconLock size={16} />}\n {...form.getInputProps('password')}\n disabled={isLoading}\n />\n\n {showForgotPassword && (\n <Anchor\n size=\"sm\"\n ta=\"right\"\n onClick={handleForgotPassword}\n style={{ cursor: 'pointer' }}\n c={loadingResetPassword ? 'dimmed' : 'blue'}\n >\n {loadingResetPassword ? labels.sendingReset || 'Enviando...' : labels.forgotPassword || 'Esqueceu a senha?'}\n </Anchor>\n )}\n\n <Button\n type=\"submit\"\n fullWidth\n loading={loadingSignIn}\n rightSection={<IconArrowRight size={16} />}\n >\n {labels.signInButton || 'Entrar'}\n </Button>\n </Stack>\n </form>\n\n {showMagicLink && (\n <>\n <Divider label={labels.orContinueWith || 'Ou continue com'} />\n <Button\n variant=\"light\"\n fullWidth\n loading={loadingMagicLink}\n leftSection={<IconMail size={16} />}\n onClick={handleMagicLink}\n disabled={isLoading || !form.values.email}\n >\n {labels.magicLinkButton || 'Enviar Link Mágico'}\n </Button>\n </>\n )}\n\n {showSocialLogin && (\n <>\n <Divider />\n <Group grow>\n <Button\n variant=\"light\"\n leftSection={<IconBrandGoogle size={16} />}\n onClick={() => onSocialLogin?.('google')}\n disabled={isLoading}\n >\n Google\n </Button>\n <Button\n variant=\"light\"\n leftSection={<IconBrandGithub size={16} />}\n onClick={() => onSocialLogin?.('github')}\n disabled={isLoading}\n >\n GitHub\n </Button>\n </Group>\n </>\n )}\n\n {showSignUpLink && (\n <Center>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n >\n {labels.noAccount || 'Não tem uma conta?'} <Anchor href={signUpUrl}>{labels.createAccount || 'Criar conta'}</Anchor>\n </Text>\n </Center>\n )}\n </AuthCard>\n )\n}\n","import { TextInput, PasswordInput, Button, Stack, Anchor, Center, Text, Divider, Group } from '@mantine/core'\nimport { useForm } from '@mantine/form'\nimport { IconMail, IconLock, IconUser, IconArrowRight, IconBrandGoogle, IconBrandGithub } from '@tabler/icons-react'\nimport { useAuthStore } from '../authStore.js'\nimport { useApplicationLogo } from '../AuthProvider.jsx'\nimport AuthCard from './AuthCard.jsx'\n\nimport defaultLogo from '../assets/logotipo.webp'\n\n/**\n * Formulário de Sign Up com Mantine\n *\n * @param {object} props\n * @param {'card'|'modal'} [props.variant='card'] - Modo de renderização\n * @param {boolean} [props.opened] - Controla visibilidade (apenas para variant=\"modal\")\n * @param {function} [props.onClose] - Callback ao fechar (apenas para variant=\"modal\")\n */\nexport default function SignUp({\n // Configuração\n logo,\n title = 'Criar Conta',\n subtitle = 'Preencha os dados para se cadastrar',\n\n // Variant\n variant = 'card',\n opened,\n onClose,\n modalProps = {},\n\n // Features\n requireName = true,\n showSignInLink = true,\n showSocialLogin = false,\n\n // Links\n signInUrl = '/auth/signin',\n\n // Callbacks\n onSuccess,\n onError,\n onSocialLogin,\n\n // Custom labels\n labels = {},\n\n ...cardProps\n}) {\n const signUp = useAuthStore(s => s.signUp)\n const loading = useAuthStore(s => s.loadingStates.signUp)\n\n // Hook para buscar logo da aplicação\n const applicationLogo = useApplicationLogo()\n const finalLogo = logo || applicationLogo || defaultLogo\n\n const form = useForm({\n initialValues: {\n name: '',\n email: '',\n password: '',\n confirmPassword: '',\n },\n validate: {\n name: value => (requireName && !value ? labels.nameRequired || 'Nome obrigatório' : null),\n email: value => (/^\\S+@\\S+$/.test(value) ? null : labels.invalidEmail || 'Email inválido'),\n password: value => (value.length < 6 ? labels.passwordTooShort || 'A senha deve ter pelo menos 6 caracteres' : null),\n confirmPassword: (value, values) => (value !== values.password ? labels.passwordMismatch || 'As senhas não coincidem' : null),\n },\n })\n\n const handleSubmit = async values => {\n try {\n const result = await signUp(values.email, values.password, values.name)\n onSuccess?.(result)\n } catch (error) {\n onError?.(error)\n }\n }\n\n return (\n <AuthCard\n logo={finalLogo}\n title={title}\n subtitle={subtitle}\n variant={variant}\n opened={opened}\n onClose={onClose}\n modalProps={modalProps}\n {...cardProps}\n >\n <form onSubmit={form.onSubmit(handleSubmit)}>\n <Stack gap=\"sm\">\n {requireName && (\n <TextInput\n label={labels.name || 'Nome'}\n placeholder={labels.namePlaceholder || 'Seu nome'}\n leftSection={<IconUser size={16} />}\n {...form.getInputProps('name')}\n disabled={loading}\n />\n )}\n\n <TextInput\n label={labels.email || 'Email'}\n placeholder={labels.emailPlaceholder || 'seu@email.com'}\n leftSection={<IconMail size={16} />}\n {...form.getInputProps('email')}\n disabled={loading}\n />\n\n <PasswordInput\n label={labels.password || 'Senha'}\n placeholder={labels.passwordPlaceholder || 'Crie uma senha'}\n leftSection={<IconLock size={16} />}\n {...form.getInputProps('password')}\n disabled={loading}\n />\n\n <PasswordInput\n label={labels.confirmPassword || 'Confirmar Senha'}\n placeholder={labels.confirmPasswordPlaceholder || 'Repita a senha'}\n leftSection={<IconLock size={16} />}\n {...form.getInputProps('confirmPassword')}\n disabled={loading}\n />\n\n <Button\n type=\"submit\"\n fullWidth\n loading={loading}\n rightSection={<IconArrowRight size={16} />}\n >\n {labels.signUpButton || 'Criar Conta'}\n </Button>\n </Stack>\n </form>\n\n {showSocialLogin && (\n <>\n <Divider label={labels.orContinueWith || 'Ou continue com'} />\n <Group grow>\n <Button\n variant=\"light\"\n leftSection={<IconBrandGoogle size={16} />}\n onClick={() => onSocialLogin?.('google')}\n disabled={loading}\n >\n Google\n </Button>\n <Button\n variant=\"light\"\n leftSection={<IconBrandGithub size={16} />}\n onClick={() => onSocialLogin?.('github')}\n disabled={loading}\n >\n GitHub\n </Button>\n </Group>\n </>\n )}\n\n {showSignInLink && (\n <Center>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n >\n {labels.hasAccount || 'Já tem uma conta?'} <Anchor href={signInUrl}>{labels.signIn || 'Entrar'}</Anchor>\n </Text>\n </Center>\n )}\n </AuthCard>\n )\n}\n","import { TextInput, Button, Stack, Anchor, Center, Text } from '@mantine/core'\nimport { useForm } from '@mantine/form'\nimport { IconMail, IconSend } from '@tabler/icons-react'\nimport { useAuthStore } from '../authStore.js'\nimport { useApplicationLogo } from '../AuthProvider.jsx'\nimport AuthCard from './AuthCard.jsx'\n\nimport defaultLogo from '../assets/logotipo.webp'\n\n/**\n * Formulário para envio de Magic Link\n *\n * @param {object} props\n * @param {'card'|'modal'} [props.variant='card'] - Modo de renderização\n * @param {boolean} [props.opened] - Controla visibilidade (apenas para variant=\"modal\")\n * @param {function} [props.onClose] - Callback ao fechar (apenas para variant=\"modal\")\n */\nexport default function MagicLink({\n // Configuração\n logo,\n title = 'Login sem Senha',\n subtitle = 'Receba um link de acesso no seu email',\n\n // Variant\n variant = 'card',\n opened,\n onClose,\n modalProps = {},\n\n // Features\n showSignInLink = true,\n\n // Links\n signInUrl = '/auth/signin',\n\n // Callbacks\n onSent,\n onError,\n\n // Custom labels\n labels = {},\n\n ...cardProps\n}) {\n const sendMagicLink = useAuthStore(s => s.sendMagicLink)\n const loading = useAuthStore(s => s.loadingStates.magicLink)\n\n // Hook para buscar logo da aplicação\n const applicationLogo = useApplicationLogo()\n const finalLogo = logo || applicationLogo || defaultLogo\n\n const form = useForm({\n initialValues: {\n email: '',\n },\n validate: {\n email: value => (/^\\S+@\\S+$/.test(value) ? null : labels.invalidEmail || 'Email inválido'),\n },\n })\n\n const handleSubmit = async values => {\n try {\n await sendMagicLink(values.email)\n onSent?.(values.email)\n } catch (error) {\n onError?.(error)\n }\n }\n\n return (\n <AuthCard\n logo={finalLogo}\n title={title}\n subtitle={subtitle}\n variant={variant}\n opened={opened}\n onClose={onClose}\n modalProps={modalProps}\n {...cardProps}\n >\n <form onSubmit={form.onSubmit(handleSubmit)}>\n <Stack gap=\"sm\">\n <TextInput\n label={labels.email || 'Email'}\n placeholder={labels.emailPlaceholder || 'seu@email.com'}\n leftSection={<IconMail size={16} />}\n {...form.getInputProps('email')}\n disabled={loading}\n />\n\n <Button\n type=\"submit\"\n fullWidth\n loading={loading}\n leftSection={<IconSend size={16} />}\n >\n {labels.sendButton || 'Enviar Link Mágico'}\n </Button>\n </Stack>\n </form>\n\n {showSignInLink && (\n <Center>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n >\n {labels.backTo || 'Voltar para'} <Anchor href={signInUrl}>{labels.signIn || 'login com senha'}</Anchor>\n </Text>\n </Center>\n )}\n </AuthCard>\n )\n}\n","import { useEffect, useState, useRef } from 'react'\nimport { Stack, Loader, Title, Text } from '@mantine/core'\nimport { IconCheck, IconX } from '@tabler/icons-react'\nimport { useAuthStore } from '../authStore.js'\nimport { useApplicationLogo } from '../AuthProvider.jsx'\nimport AuthCard from './AuthCard.jsx'\n\nimport defaultLogo from '../assets/logotipo.webp'\n\n/**\n * Componente de verificação de Magic Link\n * Extrai token da URL e verifica automaticamente\n */\nexport default function MagicLinkCallback({\n // Configuração\n logo,\n\n // Token pode ser passado diretamente ou extraído da URL\n token: propToken,\n\n // Callbacks\n onSuccess,\n onError,\n\n // Redirect após sucesso/erro\n redirectTo,\n redirectDelay = 2000,\n\n // Custom labels\n labels = {},\n\n ...cardProps\n}) {\n const [status, setStatus] = useState('verifying') // verifying, success, error\n const [errorMessage, setErrorMessage] = useState('')\n const verifyMagicLink = useAuthStore(s => s.verifyMagicLink)\n\n // Hook para buscar logo da aplicação\n const applicationLogo = useApplicationLogo()\n const finalLogo = logo || applicationLogo || defaultLogo\n\n const verifyingTokenRef = useRef(null)\n\n useEffect(() => {\n const verify = async () => {\n // Pega token da prop ou da URL\n let token = propToken\n if (!token && typeof window !== 'undefined') {\n const urlParams = new URLSearchParams(window.location.search)\n token = urlParams.get('token')\n }\n\n if (!token) {\n setStatus('error')\n setErrorMessage(labels.noToken || 'Token não encontrado na URL')\n onError?.(new Error('No token'))\n return\n }\n\n // Evita verificar o mesmo token duas vezes (React Strict Mode ou re-renders)\n if (verifyingTokenRef.current === token) return\n verifyingTokenRef.current = token\n\n try {\n const result = await verifyMagicLink(token)\n setStatus('success')\n onSuccess?.(result)\n\n if (redirectTo) {\n setTimeout(() => {\n window.location.href = redirectTo\n }, redirectDelay)\n }\n } catch (error) {\n setStatus('error')\n setErrorMessage(error.message || labels.verificationFailed || 'Verificação falhou')\n onError?.(error)\n }\n }\n\n verify()\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [propToken, redirectTo, redirectDelay])\n\n return (\n <AuthCard\n logo={finalLogo}\n {...cardProps}\n >\n {status === 'verifying' && (\n <Stack\n align=\"center\"\n gap=\"sm\"\n >\n <Loader size=\"lg\" />\n <Title order={4}>{labels.verifying || 'Verificando Link Mágico'}</Title>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n ta=\"center\"\n >\n {labels.pleaseWait || 'Aguarde enquanto autenticamos você...'}\n </Text>\n </Stack>\n )}\n\n {status === 'success' && (\n <Stack\n align=\"center\"\n gap=\"sm\"\n >\n <IconCheck\n size={48}\n color=\"var(--mantine-color-green-6)\"\n />\n <Title order={4}>{labels.success || 'Autenticado com Sucesso!'}</Title>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n ta=\"center\"\n >\n {redirectTo ? labels.redirecting || 'Redirecionando...' : labels.authenticated || 'Você está autenticado.'}\n </Text>\n </Stack>\n )}\n\n {status === 'error' && (\n <Stack\n align=\"center\"\n gap=\"sm\"\n >\n <IconX\n size={48}\n color=\"var(--mantine-color-red-6)\"\n />\n <Title order={4}>{labels.failed || 'Falha na Autenticação'}</Title>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n ta=\"center\"\n >\n {errorMessage || labels.invalidLink || 'O link é inválido ou expirou.'}\n </Text>\n </Stack>\n )}\n </AuthCard>\n )\n}\n","import { TextInput, Button, Stack, Anchor, Center, Text } from '@mantine/core'\nimport { useForm } from '@mantine/form'\nimport { IconMail, IconSend } from '@tabler/icons-react'\nimport { useAuthStore } from '../authStore.js'\nimport { useApplicationLogo } from '../AuthProvider.jsx'\nimport AuthCard from './AuthCard.jsx'\n\nimport defaultLogo from '../assets/logotipo.webp'\n\n/**\n * Formulário para solicitar reset de senha\n *\n * @param {object} props\n * @param {'card'|'modal'} [props.variant='card'] - Modo de renderização\n * @param {boolean} [props.opened] - Controla visibilidade (apenas para variant=\"modal\")\n * @param {function} [props.onClose] - Callback ao fechar (apenas para variant=\"modal\")\n */\nexport default function ForgotPassword({\n // Configuração\n logo,\n title = 'Recuperar Senha',\n subtitle = 'Enviaremos um link para redefinir sua senha',\n\n // Variant\n variant = 'card',\n opened,\n onClose,\n modalProps = {},\n\n // Features\n showSignInLink = true,\n\n // Links\n signInUrl = '/auth/signin',\n\n // Callbacks\n onSent,\n onError,\n\n // Custom labels\n labels = {},\n\n ...cardProps\n}) {\n const forgotPassword = useAuthStore(s => s.forgotPassword)\n const loading = useAuthStore(s => s.loadingStates.resetPassword)\n\n // Hook para buscar logo da aplicação\n const applicationLogo = useApplicationLogo()\n const finalLogo = logo || applicationLogo || defaultLogo\n\n const form = useForm({\n initialValues: {\n email: '',\n },\n validate: {\n email: value => (/^\\S+@\\S+$/.test(value) ? null : labels.invalidEmail || 'Email inválido'),\n },\n })\n\n const handleSubmit = async values => {\n try {\n await forgotPassword(values.email)\n onSent?.(values.email)\n } catch (error) {\n onError?.(error)\n }\n }\n\n return (\n <AuthCard\n logo={finalLogo}\n title={title}\n subtitle={subtitle}\n variant={variant}\n opened={opened}\n onClose={onClose}\n modalProps={modalProps}\n {...cardProps}\n >\n <form onSubmit={form.onSubmit(handleSubmit)}>\n <Stack gap=\"sm\">\n <TextInput\n label={labels.email || 'Email'}\n placeholder={labels.emailPlaceholder || 'seu@email.com'}\n leftSection={<IconMail size={16} />}\n {...form.getInputProps('email')}\n disabled={loading}\n />\n\n <Button\n type=\"submit\"\n fullWidth\n loading={loading}\n leftSection={<IconSend size={16} />}\n >\n {labels.sendButton || 'Enviar Link de Recuperação'}\n </Button>\n </Stack>\n </form>\n\n {showSignInLink && (\n <Center>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n >\n {labels.rememberedPassword || 'Lembrou a senha?'} <Anchor href={signInUrl}>{labels.signIn || 'Entrar'}</Anchor>\n </Text>\n </Center>\n )}\n </AuthCard>\n )\n}\n","import { useState, useEffect } from 'react'\nimport { PasswordInput, Button, Stack, Text, Title } from '@mantine/core'\nimport { useForm } from '@mantine/form'\nimport { IconLock, IconCheck } from '@tabler/icons-react'\nimport { useAuthStore } from '../authStore.js'\nimport { useApplicationLogo } from '../AuthProvider.jsx'\nimport AuthCard from './AuthCard.jsx'\n\nimport defaultLogo from '../assets/logotipo.webp'\n\n/**\n * Formulário para redefinir senha com token\n */\nexport default function ResetPassword({\n // Configuração\n logo,\n title = 'Nova Senha',\n subtitle = 'Crie uma nova senha para sua conta',\n\n // Token pode ser passado diretamente ou extraído da URL\n token: propToken,\n\n // Callbacks\n onSuccess,\n onError,\n\n // Redirect após sucesso\n signInUrl = '/auth/signin',\n\n // Custom labels\n labels = {},\n\n ...cardProps\n}) {\n const [token, setToken] = useState(propToken || '')\n const [success, setSuccess] = useState(false)\n const resetPassword = useAuthStore(s => s.resetPassword)\n const loading = useAuthStore(s => s.loadingStates.resetPassword)\n\n // Hook para buscar logo da aplicação\n const applicationLogo = useApplicationLogo()\n const finalLogo = logo || applicationLogo || defaultLogo\n\n // Extrai token da URL se não foi passado como prop\n useEffect(() => {\n if (!propToken && typeof window !== 'undefined') {\n const urlParams = new URLSearchParams(window.location.search)\n const urlToken = urlParams.get('token')\n if (urlToken) setToken(urlToken)\n }\n }, [propToken])\n\n const form = useForm({\n initialValues: {\n password: '',\n confirmPassword: '',\n },\n validate: {\n password: value => (value.length < 6 ? labels.passwordTooShort || 'A senha deve ter pelo menos 6 caracteres' : null),\n confirmPassword: (value, values) => (value !== values.password ? labels.passwordMismatch || 'As senhas não coincidem' : null),\n },\n })\n\n const handleSubmit = async values => {\n if (!token) {\n onError?.(new Error('Token não encontrado'))\n return\n }\n\n try {\n await resetPassword(token, values.password)\n setSuccess(true)\n onSuccess?.()\n } catch (error) {\n onError?.(error)\n }\n }\n\n if (success) {\n return (\n <AuthCard\n logo={finalLogo}\n {...cardProps}\n >\n <Stack\n align=\"center\"\n gap=\"sm\"\n >\n <IconCheck\n size={48}\n color=\"var(--mantine-color-green-6)\"\n />\n <Title order={4}>{labels.successTitle || 'Senha Redefinida!'}</Title>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n ta=\"center\"\n >\n {labels.successMessage || 'Sua senha foi alterada com sucesso.'}\n </Text>\n <Button\n component=\"a\"\n href={signInUrl}\n fullWidth\n >\n {labels.goToSignIn || 'Ir para Login'}\n </Button>\n </Stack>\n </AuthCard>\n )\n }\n\n if (!token) {\n return (\n <AuthCard\n logo={finalLogo}\n {...cardProps}\n >\n <Stack\n align=\"center\"\n gap=\"sm\"\n >\n <Text c=\"red\">{labels.noToken || 'Token não encontrado na URL'}</Text>\n <Button\n component=\"a\"\n href={signInUrl}\n variant=\"light\"\n fullWidth\n >\n {labels.goToSignIn || 'Voltar para Login'}\n </Button>\n </Stack>\n </AuthCard>\n )\n }\n\n return (\n <AuthCard\n logo={finalLogo}\n title={title}\n subtitle={subtitle}\n {...cardProps}\n >\n <form onSubmit={form.onSubmit(handleSubmit)}>\n <Stack gap=\"sm\">\n <PasswordInput\n label={labels.newPassword || 'Nova Senha'}\n placeholder={labels.newPasswordPlaceholder || 'Crie uma nova senha'}\n leftSection={<IconLock size={16} />}\n {...form.getInputProps('password')}\n disabled={loading}\n />\n\n <PasswordInput\n label={labels.confirmPassword || 'Confirmar Senha'}\n placeholder={labels.confirmPasswordPlaceholder || 'Repita a nova senha'}\n leftSection={<IconLock size={16} />}\n {...form.getInputProps('confirmPassword')}\n disabled={loading}\n />\n\n <Button\n type=\"submit\"\n fullWidth\n loading={loading}\n >\n {labels.resetButton || 'Redefinir Senha'}\n </Button>\n </Stack>\n </form>\n </AuthCard>\n )\n}\n","import { useEffect, useState, useRef } from 'react'\nimport { Stack, Loader, Button, Text, Title } from '@mantine/core'\nimport { IconCheck, IconX, IconRefresh, IconMail } from '@tabler/icons-react'\nimport { useAuthStore } from '../authStore.js'\nimport { useApplicationLogo } from '../AuthProvider.jsx'\nimport { decodeJWT } from '../authSdk.js'\nimport AuthCard from './AuthCard.jsx'\nimport defaultLogo from '../assets/logotipo.webp'\n\n/**\n * Card de verificação de email\n * Verifica token automaticamente e permite reenvio\n */\nexport default function VerifyEmail({\n // Configuração\n logo,\n\n // Token pode ser passado diretamente ou extraído da URL\n token: propToken,\n\n // Email para reenvio (opcional)\n email,\n\n // Callbacks\n onSuccess,\n onError,\n onResent,\n\n // Redirect após sucesso\n redirectTo,\n redirectDelay = 2000,\n\n // Custom labels\n labels = {},\n\n ...cardProps\n}) {\n const [status, setStatus] = useState('verifying') // verifying, success, error\n const [errorMessage, setErrorMessage] = useState('')\n const [tokenEmail, setTokenEmail] = useState(null) // Novo estado para email do token\n\n const verifyEmail = useAuthStore(s => s.verifyEmail)\n const resendVerification = useAuthStore(s => s.resendVerification)\n const loadingResend = useAuthStore(s => s.loadingStates.resendVerification)\n const user = useAuthStore(s => s.user)\n\n const verifyingTokenRef = useRef(null)\n\n // Hook para buscar logo da aplicação\n const applicationLogo = useApplicationLogo()\n const finalLogo = logo || applicationLogo || defaultLogo\n\n useEffect(() => {\n const verify = async () => {\n // Pega token da prop ou da URL\n let token = propToken\n if (!token && typeof window !== 'undefined') {\n const urlParams = new URLSearchParams(window.location.search)\n token = urlParams.get('token')\n }\n\n if (!token) {\n // Se já mostramos o erro de token faltando, não precisa fazer nada\n if (status === 'missing_token') return\n\n setStatus('missing_token')\n return\n }\n\n // Tenta extrair email do token (mesmo expirado) para permitir reenvio\n try {\n const payload = decodeJWT(token)\n if (payload?.email) {\n setTokenEmail(payload.email)\n }\n } catch (e) {\n // ignore jwt error\n }\n\n // Evita verificar o mesmo token duas vezes (React Strict Mode ou re-renders)\n if (verifyingTokenRef.current === token) return\n verifyingTokenRef.current = token\n\n try {\n const result = await verifyEmail(token)\n setStatus('success')\n onSuccess?.(result)\n\n if (redirectTo) {\n setTimeout(() => {\n window.location.href = redirectTo\n }, redirectDelay)\n }\n } catch (error) {\n // Se der erro, permitimos tentar novamente apenas se o usuário recarregar\n // ou se implementarmos um botão de retry que limpe o ref\n setStatus('error')\n setErrorMessage(error.message || labels.verificationFailed || 'Verificação falhou')\n onError?.(error)\n }\n }\n\n verify()\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [propToken, redirectTo, redirectDelay])\n\n const handleResend = async () => {\n const targetEmail = email || user?.email || tokenEmail\n if (!targetEmail) return\n\n try {\n await resendVerification(targetEmail)\n onResent?.(targetEmail)\n } catch (error) {\n onError?.(error)\n }\n }\n\n return (\n <AuthCard\n logo={finalLogo}\n {...cardProps}\n >\n {status === 'verifying' && (\n <Stack\n align=\"center\"\n gap=\"sm\"\n >\n <Loader size=\"lg\" />\n <Title order={4}>{labels.verifying || 'Verificando Email'}</Title>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n ta=\"center\"\n >\n {labels.pleaseWait || 'Aguarde enquanto verificamos seu email...'}\n </Text>\n </Stack>\n )}\n\n {status === 'missing_token' && (\n <Stack\n align=\"center\"\n gap=\"sm\"\n >\n <IconMail\n size={48}\n color=\"var(--mantine-color-blue-6)\"\n />\n <Title order={4}>{labels.verification || 'Verificação de Email'}</Title>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n ta=\"center\"\n >\n {labels.missingToken || 'Para verificar seu conta, clique no link enviado para seu email.'}\n </Text>\n </Stack>\n )}\n\n {status === 'success' && (\n <Stack\n align=\"center\"\n gap=\"sm\"\n >\n <IconCheck\n size={48}\n color=\"var(--mantine-color-green-6)\"\n />\n <Title order={4}>{labels.success || 'Email Verificado!'}</Title>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n ta=\"center\"\n >\n {redirectTo ? labels.redirecting || 'Redirecionando...' : labels.verified || 'Seu email foi verificado com sucesso.'}\n </Text>\n </Stack>\n )}\n\n {status === 'error' && (\n <Stack\n align=\"center\"\n gap=\"sm\"\n >\n <IconX\n size={48}\n color=\"var(--mantine-color-red-6)\"\n />\n <Title order={4}>{labels.failed || 'Verificação Falhou'}</Title>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n ta=\"center\"\n >\n {errorMessage || labels.invalidToken || 'O link é inválido ou expirou.'}\n </Text>\n\n {/* Só mostra botão de reenvio se o token expirou e temos o email (via prop, user ou token) */}\n {(email || user?.email || tokenEmail) && errorMessage?.toLowerCase().includes('expired') && (\n <Button\n variant=\"light\"\n leftSection={<IconRefresh size={16} />}\n onClick={handleResend}\n loading={loadingResend}\n fullWidth\n >\n {labels.resend || 'Solicitar novo link'}\n </Button>\n )}\n </Stack>\n )}\n </AuthCard>\n )\n}\n","import { useState, useEffect } from 'react'\nimport { Modal, Group, Stack, Text, Avatar, Box, Anchor, ThemeIcon, Title, Divider, Card, TextInput, PasswordInput, Button, Collapse, Tooltip, Paper, Image, Badge } from '@mantine/core'\nimport { useForm } from '@mantine/form'\nimport { notifications } from '@mantine/notifications'\nimport { IconUser, IconShield, IconUserCircle, IconKey, IconMail, IconCheck, IconX, IconPhoto, IconPencil, IconTrash, IconDevices, IconDeviceMobile, IconLogout } from '@tabler/icons-react'\n\nimport { useProfile, useSessions } from '../AuthProvider.jsx'\n\n/**\n * Componente de gerenciamento de conta do usuário\n * Permite editar avatar, nome, email e senha\n * Suporta renderização como Card ou Modal\n *\n * @param {object} props\n * @param {'card'|'modal'} [props.variant='modal'] - Modo de renderização\n * @param {boolean} [props.opened] - Controla visibilidade (apenas para variant=\"modal\")\n * @param {function} [props.onClose] - Callback ao fechar (apenas para variant=\"modal\")\n */\nexport default function UserProfile({\n // Variant\n variant = 'modal',\n opened,\n onClose,\n\n // Callbacks\n onProfileUpdate,\n onPasswordChange,\n onEmailChange,\n onError,\n\n // Features toggle\n showAvatar = true,\n showName = true,\n showEmail = true,\n showPassword = true,\n showSessions = true,\n\n // Customização\n labels = {},\n title = 'Account',\n subtitle = 'Manage your account info.',\n logo,\n logoHeight = 28,\n width = 500,\n\n // Avatar config\n maxAvatarSize = 500 * 1024, // 500KB\n\n // Custom sections (React nodes to render after built-in sections)\n customSections,\n\n ...containerProps\n}) {\n // Local state - which section is expanded\n const [editingSection, setEditingSection] = useState(null) // 'password' | 'email' | 'name' | 'avatar' | null\n\n // Hook para profile\n const { user, updateProfile, changePassword, changeEmail, loadingUpdateProfile, loadingChangePassword, loadingChangeEmail } = useProfile()\n\n // Hook para sessions\n const { currentSession, sessions, listSessions, getSession, revokeSession, revokeOtherSessions, loadingListSessions, loadingRevokeSession } = useSessions()\n\n // Load sessions when opened (modal) or component mounts (card), and when sessions section is opened\n useEffect(() => {\n if (showSessions && (variant === 'card' || opened)) {\n // Fetch current session first to get the session ID, then list all sessions\n getSession().catch(err => console.warn('Failed to get current session:', err))\n listSessions().catch(err => console.warn('Failed to load sessions:', err))\n }\n }, [opened, showSessions, variant])\n\n // Helper to parse user agent string\n const parseUserAgent = ua => {\n if (!ua) return { browser: 'Unknown Browser', os: 'Unknown OS' }\n\n let browser = 'Unknown Browser'\n let os = 'Unknown OS'\n\n // Detect browser\n if (ua.includes('Chrome') && !ua.includes('Edg')) browser = 'Chrome'\n else if (ua.includes('Firefox')) browser = 'Firefox'\n else if (ua.includes('Safari') && !ua.includes('Chrome')) browser = 'Safari'\n else if (ua.includes('Edg')) browser = 'Edge'\n else if (ua.includes('Opera') || ua.includes('OPR')) browser = 'Opera'\n\n // Detect OS\n if (ua.includes('Windows')) os = 'Windows'\n else if (ua.includes('Mac OS')) os = 'macOS'\n else if (ua.includes('Linux')) os = 'Linux'\n else if (ua.includes('Android')) os = 'Android'\n else if (ua.includes('iPhone') || ua.includes('iPad')) os = 'iOS'\n\n return { browser, os }\n }\n\n // Session handlers\n const handleRevokeSession = async sessionId => {\n // Check if revoking current session\n const isCurrentSession = sessionId === currentSession?.id || sessions.length === 1\n\n // If revoking current session, handle logout immediately after revocation\n if (isCurrentSession) {\n try {\n await revokeSession(sessionId)\n } catch (error) {\n // Even if it fails, we're revoking our own session, so just logout\n // The server already revoked our session\n }\n // Clear auth state and redirect\n localStorage.removeItem('auth:token')\n window.dispatchEvent(new CustomEvent('auth:session-revoked'))\n if (variant === 'modal') onClose?.()\n return\n }\n\n // Revoking another session\n try {\n await revokeSession(sessionId)\n\n notifications.show({\n title: labels.successTitle || 'Sucesso',\n message: labels.sessionRevoked || 'Sessão encerrada com sucesso',\n color: 'green',\n })\n } catch (error) {\n // Check for 401 error (our SDK uses error.res, axios uses error.response)\n const status = error.res?.status || error.response?.status\n if (status === 401) {\n // This means our session was revoked, not the target one - do logout\n localStorage.removeItem('auth:token')\n window.dispatchEvent(new CustomEvent('auth:session-revoked'))\n if (variant === 'modal') onClose?.()\n return\n }\n\n notifications.show({\n title: labels.errorTitle || 'Erro',\n message: error.message || labels.sessionRevokeFailed || 'Falha ao encerrar sessão',\n color: 'red',\n })\n onError?.(error)\n }\n }\n\n const handleRevokeOtherSessions = async () => {\n try {\n await revokeOtherSessions()\n notifications.show({\n title: labels.successTitle || 'Sucesso',\n message: labels.otherSessionsRevoked || 'Todas as outras sessões foram encerradas',\n color: 'green',\n })\n } catch (error) {\n notifications.show({\n title: labels.errorTitle || 'Erro',\n message: error.message || labels.otherSessionsRevokeFailed || 'Falha ao encerrar sessões',\n color: 'red',\n })\n onError?.(error)\n }\n }\n\n // Password form\n const passwordForm = useForm({\n initialValues: {\n currentPassword: '',\n newPassword: '',\n confirmPassword: '',\n },\n validate: {\n currentPassword: v => (!v ? labels.currentPasswordRequired || 'Senha atual obrigatória' : null),\n newPassword: v => {\n if (!v) return labels.newPasswordRequired || 'Nova senha obrigatória'\n if (v.length < 8) return labels.passwordMinLength || 'Mínimo 8 caracteres'\n return null\n },\n confirmPassword: (v, values) => (v !== values.newPassword ? labels.passwordMismatch || 'Senhas não coincidem' : null),\n },\n })\n\n // Email form\n const emailForm = useForm({\n initialValues: {\n newEmail: '',\n },\n validate: {\n newEmail: v => {\n if (!v) return labels.emailRequired || 'Email obrigatório'\n if (!/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(v)) return labels.emailInvalid || 'Email inválido'\n return null\n },\n },\n })\n\n // Name form\n const nameForm = useForm({\n initialValues: {\n name: '',\n },\n validate: {\n name: v => (!v ? labels.nameRequired || 'Nome obrigatório' : null),\n },\n })\n\n // Avatar state (base64)\n const [avatarPreview, setAvatarPreview] = useState(null)\n const [avatarFile, setAvatarFile] = useState(null)\n\n // Handle file selection and convert to base64\n const handleAvatarFileChange = file => {\n if (!file) {\n setAvatarPreview(null)\n setAvatarFile(null)\n return\n }\n\n // Validate file type\n if (!file.type.startsWith('image/')) {\n notifications.show({\n title: labels.errorTitle || 'Erro',\n message: labels.avatarInvalidType || 'Por favor, selecione uma imagem válida',\n color: 'red',\n })\n return\n }\n\n // Validate file size\n if (file.size > maxAvatarSize) {\n notifications.show({\n title: labels.errorTitle || 'Erro',\n message: labels.avatarTooLarge || `Imagem muito grande. Máximo ${Math.round(maxAvatarSize / 1024)}KB.`,\n color: 'red',\n })\n return\n }\n\n setAvatarFile(file)\n\n // Convert to base64\n const reader = new FileReader()\n reader.onloadend = () => {\n setAvatarPreview(reader.result)\n }\n reader.readAsDataURL(file)\n }\n\n // Populate forms when user data is available or section opens\n useEffect(() => {\n if (editingSection === 'name' && user?.name) {\n nameForm.setValues({ name: user.name })\n }\n if (editingSection === 'avatar' && user?.image) {\n setAvatarPreview(user.image)\n }\n }, [editingSection, user])\n\n const handleToggleSection = section => {\n if (editingSection === section) {\n setEditingSection(null)\n passwordForm.reset()\n emailForm.reset()\n nameForm.reset()\n setAvatarPreview(null)\n setAvatarFile(null)\n } else {\n setEditingSection(section)\n }\n }\n\n const handleChangePassword = async values => {\n try {\n await changePassword(values.currentPassword, values.newPassword)\n notifications.show({\n title: labels.successTitle || 'Sucesso',\n message: labels.passwordChanged || 'Senha alterada com sucesso',\n color: 'green',\n })\n passwordForm.reset()\n setEditingSection(null)\n onPasswordChange?.()\n } catch (error) {\n notifications.show({\n title: labels.errorTitle || 'Erro',\n message: error.message || labels.passwordChangeFailed || 'Falha ao alterar senha',\n color: 'red',\n })\n onError?.(error)\n }\n }\n\n const handleChangeEmail = async values => {\n try {\n await changeEmail(values.newEmail)\n notifications.show({\n title: labels.successTitle || 'Sucesso',\n message: labels.emailVerificationSent || 'Verifique seu novo email para confirmar a alteração',\n color: 'green',\n })\n emailForm.reset()\n setEditingSection(null)\n onEmailChange?.(values.newEmail)\n } catch (error) {\n notifications.show({\n title: labels.errorTitle || 'Erro',\n message: error.message || labels.emailChangeFailed || 'Falha ao alterar email',\n color: 'red',\n })\n onError?.(error)\n }\n }\n\n const handleChangeName = async values => {\n try {\n await updateProfile({ name: values.name })\n notifications.show({\n title: labels.successTitle || 'Sucesso',\n message: labels.nameUpdated || 'Nome atualizado com sucesso',\n color: 'green',\n })\n nameForm.reset()\n setEditingSection(null)\n onProfileUpdate?.({ name: values.name })\n } catch (error) {\n notifications.show({\n title: labels.errorTitle || 'Erro',\n message: error.message || labels.nameUpdateFailed || 'Falha ao atualizar nome',\n color: 'red',\n })\n onError?.(error)\n }\n }\n\n const handleChangeAvatar = async () => {\n if (!avatarPreview) {\n notifications.show({\n title: labels.errorTitle || 'Erro',\n message: labels.avatarRequired || 'Selecione uma imagem',\n color: 'red',\n })\n return\n }\n\n try {\n await updateProfile({ image: avatarPreview })\n notifications.show({\n title: labels.successTitle || 'Sucesso',\n message: labels.avatarUpdated || 'Foto de perfil atualizada com sucesso',\n color: 'green',\n })\n setAvatarPreview(null)\n setAvatarFile(null)\n setEditingSection(null)\n onProfileUpdate?.({ image: avatarPreview })\n } catch (error) {\n notifications.show({\n title: labels.errorTitle || 'Erro',\n message: error.message || labels.avatarUpdateFailed || 'Falha ao atualizar foto',\n color: 'red',\n })\n onError?.(error)\n }\n }\n\n const handleRemoveAvatar = async () => {\n try {\n await updateProfile({ image: '' })\n notifications.show({\n title: labels.successTitle || 'Sucesso',\n message: labels.avatarRemoved || 'Foto de perfil removida',\n color: 'green',\n })\n setAvatarPreview(null)\n setAvatarFile(null)\n setEditingSection(null)\n onProfileUpdate?.({ image: '' })\n } catch (error) {\n notifications.show({\n title: labels.errorTitle || 'Erro',\n message: error.message || labels.avatarRemoveFailed || 'Falha ao remover foto',\n color: 'red',\n })\n onError?.(error)\n }\n }\n\n // Reusable Section Header\n const SectionHeader = ({ icon: Icon, sectionTitle, description }) => (\n <Group\n gap=\"sm\"\n mb=\"lg\"\n >\n <ThemeIcon\n size={36}\n variant=\"light\"\n >\n <Icon size={18} />\n </ThemeIcon>\n <Box>\n <Text\n fw={600}\n size=\"md\"\n >\n {sectionTitle}\n </Text>\n {description && (\n <Text\n size=\"xs\"\n c=\"dimmed\"\n >\n {description}\n </Text>\n )}\n </Box>\n </Group>\n )\n\n // Reusable Row component\n const SettingRow = ({ label, children, action, actionLabel, onClick, expanded }) => (\n <Card p=\"xs\">\n <Group\n justify=\"space-between\"\n wrap=\"nowrap\"\n >\n <Group\n gap=\"xl\"\n wrap=\"nowrap\"\n flex={1}\n >\n <Text\n size=\"sm\"\n c=\"dimmed\"\n w={100}\n style={{ flexShrink: 0 }}\n >\n {label}\n </Text>\n <Box flex={1}>{children}</Box>\n </Group>\n {action && (\n <Tooltip\n label={actionLabel || action}\n position=\"left\"\n >\n <Anchor\n size=\"sm\"\n fw={500}\n onClick={onClick}\n c={expanded ? 'red' : 'blue'}\n >\n {expanded ? labels.cancel || 'Cancel' : action}\n </Anchor>\n </Tooltip>\n )}\n </Group>\n </Card>\n )\n\n // Conteúdo interno compartilhado\n const profileContent = (\n <>\n {/* Profile Section */}\n {(showAvatar || showName || showEmail) && (\n <Box mb=\"xl\">\n <SectionHeader\n icon={IconUser}\n sectionTitle={labels.profileSection || 'Profile'}\n description={labels.profileDescription || 'Your personal information'}\n />\n <Stack gap=\"sm\">\n {/* Avatar Row */}\n {showAvatar && (\n <>\n <SettingRow\n label={labels.avatar || 'Avatar'}\n action={labels.update || 'Update'}\n actionLabel={labels.updateAvatar || 'Update your profile picture'}\n onClick={() => handleToggleSection('avatar')}\n expanded={editingSection === 'avatar'}\n >\n <Group gap=\"md\">\n <Avatar\n src={user?.image}\n name={user?.name || user?.email}\n size={48}\n radius=\"xl\"\n color=\"initials\"\n />\n </Group>\n </SettingRow>\n\n {/* Avatar Change Form */}\n <Collapse in={editingSection === 'avatar'}>\n <Card\n p=\"md\"\n withBorder\n >\n <Stack\n gap=\"md\"\n align=\"center\"\n >\n {/* Hidden file input */}\n <input\n type=\"file\"\n id=\"avatar-upload\"\n accept=\"image/*\"\n style={{ display: 'none' }}\n onChange={e => handleAvatarFileChange(e.target.files?.[0])}\n />\n\n {/* Clickable Avatar with overlay */}\n <Tooltip\n label={labels.clickToChange || 'Clique para alterar'}\n position=\"bottom\"\n >\n <Box\n onClick={() => document.getElementById('avatar-upload')?.click()}\n style={{\n position: 'relative',\n cursor: 'pointer',\n borderRadius: '50%',\n }}\n >\n <Avatar\n src={avatarPreview || user?.image}\n name={user?.name || user?.email}\n size={100}\n radius={100}\n color=\"initials\"\n />\n {/* Camera overlay */}\n <ThemeIcon\n size={32}\n radius=\"xl\"\n color=\"blue\"\n style={{\n position: 'absolute',\n bottom: 0,\n right: 0,\n border: '2px solid var(--mantine-color-body)',\n }}\n >\n <IconPhoto size={16} />\n </ThemeIcon>\n </Box>\n </Tooltip>\n\n <Text\n size=\"xs\"\n c=\"dimmed\"\n ta=\"center\"\n >\n {labels.avatarHint || `Máximo ${Math.round(maxAvatarSize / 1024)}KB • JPG, PNG, GIF, WebP`}\n </Text>\n\n <Group\n justify=\"center\"\n gap=\"sm\"\n >\n {/* Remove button - only show if user has image */}\n {user?.image && (\n <Tooltip label={labels.removePhoto || 'Remover foto'}>\n <Button\n variant=\"light\"\n color=\"red\"\n size=\"xs\"\n onClick={handleRemoveAvatar}\n loading={loadingUpdateProfile}\n leftSection={<IconTrash size={14} />}\n >\n {labels.remove || 'Remover'}\n </Button>\n </Tooltip>\n )}\n <Button\n variant=\"default\"\n size=\"xs\"\n onClick={() => handleToggleSection('avatar')}\n >\n {labels.cancel || 'Cancelar'}\n </Button>\n <Button\n size=\"xs\"\n loading={loadingUpdateProfile}\n leftSection={<IconCheck size={14} />}\n onClick={handleChangeAvatar}\n disabled={!avatarPreview || avatarPreview === user?.image}\n >\n {labels.save || 'Salvar'}\n </Button>\n </Group>\n </Stack>\n </Card>\n </Collapse>\n </>\n )}\n\n {/* Name Row */}\n {showName && (\n <>\n <SettingRow\n label={labels.name || 'Nome'}\n action={labels.change || 'Change'}\n actionLabel={labels.changeName || 'Change your display name'}\n onClick={() => handleToggleSection('name')}\n expanded={editingSection === 'name'}\n >\n <Group gap=\"xs\">\n <IconPencil\n size={16}\n color=\"var(--mantine-color-dimmed)\"\n />\n <Text size=\"sm\">{user?.name || labels.notDefined || 'Não definido'}</Text>\n </Group>\n </SettingRow>\n\n {/* Name Change Form */}\n <Collapse in={editingSection === 'name'}>\n <Card\n p=\"md\"\n withBorder\n >\n <form onSubmit={nameForm.onSubmit(handleChangeName)}>\n <Stack gap=\"sm\">\n <TextInput\n label={labels.name || 'Nome'}\n placeholder={labels.namePlaceholder || 'Digite seu nome'}\n leftSection={<IconUser size={16} />}\n {...nameForm.getInputProps('name')}\n />\n <Group\n justify=\"flex-end\"\n gap=\"sm\"\n >\n <Button\n variant=\"default\"\n size=\"xs\"\n onClick={() => handleToggleSection('name')}\n leftSection={<IconX size={14} />}\n >\n {labels.cancel || 'Cancelar'}\n </Button>\n <Button\n type=\"submit\"\n size=\"xs\"\n loading={loadingUpdateProfile}\n leftSection={<IconCheck size={14} />}\n >\n {labels.save || 'Salvar'}\n </Button>\n </Group>\n </Stack>\n </form>\n </Card>\n </Collapse>\n </>\n )}\n\n {/* Email Row with inline edit */}\n {showEmail && (\n <>\n <SettingRow\n label={labels.email || 'Email'}\n action={labels.change || 'Change'}\n actionLabel={labels.changeEmail || 'Change your email'}\n onClick={() => handleToggleSection('email')}\n expanded={editingSection === 'email'}\n >\n <Group gap=\"xs\">\n <IconMail\n size={16}\n color=\"var(--mantine-color-dimmed)\"\n />\n <Text size=\"sm\">{user?.email || 'email@exemplo.com'}</Text>\n </Group>\n </SettingRow>\n\n {/* Email Change Form */}\n <Collapse in={editingSection === 'email'}>\n <Card\n p=\"md\"\n withBorder\n >\n <form onSubmit={emailForm.onSubmit(handleChangeEmail)}>\n <Stack gap=\"sm\">\n <TextInput\n label={labels.newEmail || 'Novo Email'}\n placeholder={labels.newEmailPlaceholder || 'Digite o novo email'}\n leftSection={<IconMail size={16} />}\n {...emailForm.getInputProps('newEmail')}\n />\n <Group\n justify=\"flex-end\"\n gap=\"sm\"\n >\n <Button\n variant=\"default\"\n size=\"xs\"\n onClick={() => handleToggleSection('email')}\n leftSection={<IconX size={14} />}\n >\n {labels.cancel || 'Cancelar'}\n </Button>\n <Button\n type=\"submit\"\n size=\"xs\"\n loading={loadingChangeEmail}\n leftSection={<IconCheck size={14} />}\n >\n {labels.save || 'Salvar'}\n </Button>\n </Group>\n </Stack>\n </form>\n </Card>\n </Collapse>\n </>\n )}\n </Stack>\n </Box>\n )}\n\n {/* Security Section */}\n {(showPassword || showSessions) && (\n <Box mb=\"md\">\n <SectionHeader\n icon={IconShield}\n sectionTitle={labels.securitySection || 'Security'}\n description={labels.securityDescription || 'Protect your account'}\n />\n <Stack gap=\"sm\">\n {/* Password Row */}\n {showPassword && (\n <>\n <SettingRow\n label={labels.password || 'Password'}\n action={labels.change || 'Change'}\n actionLabel={labels.changePassword || 'Change your password'}\n onClick={() => handleToggleSection('password')}\n expanded={editingSection === 'password'}\n >\n <Group gap=\"xs\">\n <IconKey\n size={16}\n color=\"var(--mantine-color-dimmed)\"\n />\n <Text\n size=\"sm\"\n c=\"dimmed\"\n >\n ••••••••••••\n </Text>\n </Group>\n </SettingRow>\n\n {/* Password Change Form */}\n <Collapse in={editingSection === 'password'}>\n <Card\n p=\"md\"\n withBorder\n >\n <form onSubmit={passwordForm.onSubmit(handleChangePassword)}>\n <Stack gap=\"sm\">\n <PasswordInput\n label={labels.currentPassword || 'Senha Atual'}\n placeholder={labels.currentPasswordPlaceholder || 'Digite sua senha atual'}\n {...passwordForm.getInputProps('currentPassword')}\n />\n <PasswordInput\n label={labels.newPassword || 'Nova Senha'}\n placeholder={labels.newPasswordPlaceholder || 'Digite a nova senha'}\n description={labels.passwordDescription || 'Mínimo 8 caracteres'}\n {...passwordForm.getInputProps('newPassword')}\n />\n <PasswordInput\n label={labels.confirmPassword || 'Confirmar Nova Senha'}\n placeholder={labels.confirmPasswordPlaceholder || 'Confirme a nova senha'}\n {...passwordForm.getInputProps('confirmPassword')}\n />\n <Group\n justify=\"flex-end\"\n gap=\"xs\"\n >\n <Button\n variant=\"default\"\n size=\"xs\"\n onClick={() => handleToggleSection('password')}\n leftSection={<IconX size={14} />}\n >\n {labels.cancel || 'Cancelar'}\n </Button>\n <Button\n type=\"submit\"\n size=\"xs\"\n loading={loadingChangePassword}\n leftSection={<IconCheck size={14} />}\n >\n {labels.save || 'Salvar'}\n </Button>\n </Group>\n </Stack>\n </form>\n </Card>\n </Collapse>\n </>\n )}\n\n {/* Active Sessions Row */}\n {showSessions && (\n <>\n <SettingRow\n label={labels.sessions || 'Sessions'}\n action={editingSection === 'sessions' ? labels.close || 'Close' : labels.manage || 'Manage'}\n actionLabel={labels.manageSessions || 'Manage your active sessions'}\n onClick={() => handleToggleSection('sessions')}\n expanded={editingSection === 'sessions'}\n >\n <Group gap=\"xs\">\n <IconDevices\n size={16}\n color=\"var(--mantine-color-dimmed)\"\n />\n <Text\n size=\"sm\"\n c=\"dimmed\"\n >\n {sessions.length > 0 ? `${sessions.length} active session${sessions.length > 1 ? 's' : ''}` : loadingListSessions ? 'Loading...' : 'No sessions'}\n </Text>\n </Group>\n </SettingRow>\n\n {/* Sessions List */}\n <Collapse in={editingSection === 'sessions'}>\n <Card\n p=\"md\"\n withBorder\n >\n <Stack gap=\"md\">\n {loadingListSessions ? (\n <Text\n size=\"sm\"\n c=\"dimmed\"\n ta=\"center\"\n >\n {labels.loadingSessions || 'Carregando sessões...'}\n </Text>\n ) : sessions.length === 0 ? (\n <Text\n size=\"sm\"\n c=\"dimmed\"\n ta=\"center\"\n >\n {labels.noSessionsFound || 'Nenhuma sessão encontrada'}\n </Text>\n ) : (\n <>\n {sessions.map(sessionItem => {\n const isCurrentSession = sessionItem.id === currentSession?.id\n const deviceInfo = parseUserAgent(sessionItem.userAgent)\n const createdDate = new Date(sessionItem.createdAt)\n\n return (\n <Card\n key={sessionItem.id}\n p=\"sm\"\n style={{\n borderColor: isCurrentSession ? 'var(--mantine-color-blue-5)' : undefined,\n backgroundColor: isCurrentSession ? 'var(--mantine-color-blue-light)' : undefined,\n }}\n >\n <Group\n justify=\"space-between\"\n wrap=\"nowrap\"\n >\n <Group\n gap=\"sm\"\n wrap=\"nowrap\"\n style={{ flex: 1 }}\n >\n <ThemeIcon\n size={36}\n variant=\"light\"\n color={isCurrentSession ? 'blue' : 'gray'}\n >\n <IconDeviceMobile size={18} />\n </ThemeIcon>\n <Box style={{ flex: 1 }}>\n <Group gap=\"xs\">\n <Text\n size=\"sm\"\n fw={500}\n >\n {deviceInfo.browser}\n </Text>\n {isCurrentSession && (\n <Badge\n size=\"xs\"\n variant=\"filled\"\n color=\"blue\"\n >\n {labels.thisDevice || 'Este dispositivo'}\n </Badge>\n )}\n </Group>\n <Text\n size=\"xs\"\n c=\"dimmed\"\n >\n {deviceInfo.os} • {sessionItem.ipAddress || labels.unknownIP || 'IP desconhecido'}\n </Text>\n <Text\n size=\"xs\"\n c=\"dimmed\"\n >\n {labels.createdAt || 'Criada em'} {createdDate.toLocaleDateString('pt-BR')} {labels.at || 'às'}{' '}\n {createdDate.toLocaleTimeString('pt-BR', { hour: '2-digit', minute: '2-digit' })}\n </Text>\n </Box>\n </Group>\n <Tooltip label={isCurrentSession ? labels.signOutAndEnd || 'Encerrar e sair' : labels.endSession || 'Encerrar sessão'}>\n <Button\n variant=\"light\"\n color=\"red\"\n size=\"xs\"\n onClick={() => handleRevokeSession(sessionItem.id)}\n loading={loadingRevokeSession === sessionItem.id}\n leftSection={<IconLogout size={14} />}\n >\n {labels.end || 'Encerrar'}\n </Button>\n </Tooltip>\n </Group>\n </Card>\n )\n })}\n\n {sessions.length > 1 && (\n <Group justify=\"flex-end\">\n <Button\n variant=\"light\"\n color=\"red\"\n size=\"xs\"\n onClick={handleRevokeOtherSessions}\n loading={loadingRevokeSession === 'all'}\n leftSection={<IconLogout size={14} />}\n >\n {labels.endOtherSessions || 'Encerrar todas as outras sessões'}\n </Button>\n </Group>\n )}\n </>\n )}\n </Stack>\n </Card>\n </Collapse>\n </>\n )}\n </Stack>\n </Box>\n )}\n\n {/* Custom Sections */}\n {customSections}\n </>\n )\n\n // Renderizar como Modal\n if (variant === 'modal') {\n return (\n <Modal\n opened={opened}\n onClose={onClose}\n size={width + 50}\n withCloseButton\n radius=\"md\"\n overlayProps={{ backgroundOpacity: 0.55, blur: 3 }}\n title={\n <Group gap=\"md\">\n <ThemeIcon\n size={44}\n variant=\"light\"\n >\n <IconUserCircle size={24} />\n </ThemeIcon>\n <Box>\n <Title order={4}>{title}</Title>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n >\n {subtitle}\n </Text>\n </Box>\n </Group>\n }\n {...containerProps}\n >\n <Divider mb=\"md\" />\n {profileContent}\n </Modal>\n )\n }\n\n // Renderizar como Card\n return (\n <Paper\n withBorder\n // shadow=\"md\"\n p=\"md\"\n w={width}\n radius=\"md\"\n {...containerProps}\n >\n <Stack gap=\"sm\">\n {/* Header */}\n <Group gap=\"md\">\n {logo ? (\n <Image\n src={logo}\n alt=\"Auth\"\n h={logoHeight}\n fit=\"contain\"\n />\n ) : (\n <ThemeIcon\n size={44}\n variant=\"light\"\n >\n <IconUserCircle size={24} />\n </ThemeIcon>\n )}\n <Box>\n <Title order={4}>{title}</Title>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n >\n {subtitle}\n </Text>\n </Box>\n </Group>\n\n <Divider />\n\n {profileContent}\n </Stack>\n </Paper>\n )\n}\n","import { useAuth } from '../../AuthProvider.jsx'\n\n/**\n * Renderiza children apenas quando o usuário está autenticado\n * Equivalente ao <SignedIn> do Clerk\n */\nexport function SignedIn({ children }) {\n const { user, loading } = useAuth()\n if (loading || !user) return null\n return children\n}\n\nexport default SignedIn\n","import { useAuth } from '../../AuthProvider.jsx'\n\n/**\n * Renderiza children apenas quando o usuário NÃO está autenticado\n * Equivalente ao <SignedOut> do Clerk\n */\nexport function SignedOut({ children }) {\n const { user, loading } = useAuth()\n if (loading || user) return null\n return children\n}\n\nexport default SignedOut\n","import { useAuth } from '../../AuthProvider.jsx'\n\n/**\n * Renderiza children enquanto a autenticação está carregando\n * Equivalente ao <ClerkLoading> do Clerk\n */\nexport function AuthLoading({ children }) {\n const { loading } = useAuth()\n if (!loading) return null\n return children\n}\n\nexport default AuthLoading\n","import { useAuth } from '../../AuthProvider.jsx'\n\n/**\n * Renderiza children quando a autenticação terminou de carregar\n * Equivalente ao <ClerkLoaded> do Clerk\n */\nexport function AuthLoaded({ children }) {\n const { loading } = useAuth()\n if (loading) return null\n return children\n}\n\nexport default AuthLoaded\n","import { useNavigate } from 'react-router-dom'\n\n/**\n * Botão unstyled para navegação para página de login\n * Equivalente ao <SignInButton> do Clerk\n */\nexport function SignInButton({ children, redirectTo = '/login', ...props }) {\n const navigate = useNavigate()\n\n return (\n <button\n onClick={() => navigate(redirectTo)}\n {...props}\n >\n {children || 'Sign In'}\n </button>\n )\n}\n\nexport default SignInButton\n","import { useNavigate } from 'react-router-dom'\n\n/**\n * Botão unstyled para navegação para página de registro\n * Equivalente ao <SignUpButton> do Clerk\n */\nexport function SignUpButton({ children, redirectTo = '/register', ...props }) {\n const navigate = useNavigate()\n\n return (\n <button\n onClick={() => navigate(redirectTo)}\n {...props}\n >\n {children || 'Sign Up'}\n </button>\n )\n}\n\nexport default SignUpButton\n","import { useSignOut } from '../../AuthProvider.jsx'\n\n/**\n * Botão unstyled para fazer logout\n * Equivalente ao <SignOutButton> do Clerk\n */\nexport function SignOutButton({ children, onSignOut, ...props }) {\n const signOut = useSignOut()\n\n const handleClick = async () => {\n await signOut()\n onSignOut?.()\n }\n\n return (\n <button\n onClick={handleClick}\n {...props}\n >\n {children || 'Sign Out'}\n </button>\n )\n}\n\nexport default SignOutButton\n"],"names":["API_BASE","API_KEY","INTERNAL_MODE","configure","apiKey","apiUrl","internal","endsWith","slice","isInternal","api","route","opts","cleanRoute","startsWith","url","token","getStoredToken","headers","Accept","Authorization","res","fetch","credentials","data","status","json","catch","ok","errorMessage","message","error","detail","statusText","JSON","stringify","Object","assign","Error","window","localStorage","getItem","setStoredToken","setItem","removeItem","handleAuthResponse","result","session","sessionToken","decodeJWT","parts","split","length","base64Url","base64","replace","jsonPayload","atob","Buffer","from","toString","parse","isTokenExpired","payload","exp","now","Date","isExpired","console","log","diff","isAuthenticated","valid","getCurrentUser","id","sub","email","name","signUp","password","method","body","signIn","signOut","refreshToken","sendMagicLink","callbackURL","callback","location","origin","verifyMagicLink","encodeURIComponent","forgotPassword","redirectTo","redirect","resetPassword","newPassword","verifyEmail","resendVerification","getSession","listSessions","revokeSession","revokeOtherSessions","getApplicationInfo","warn","updateProfile","changePassword","currentPassword","changeEmail","newEmail","socialRedirect","provider","href","useAuthStore","create","set","get","user","loading","sessions","currentSession","loadingStates","magicLink","applicationInfo","setLoading","key","value","state","fetchApplicationInfo","appInfo","init","sessionData","sessionError","err","sessionId","isCurrent","isLast","filter","s","startRefresh","refreshInterval","setInterval","timeUntilExpiry","addEventListener","clearInterval","checkTokenValidity","setUser","AuthContext","createContext","AuthProvider","children","onError","useMemo","useEffect","handleStorageChange","event","setState","handleSessionRevoked","removeEventListener","interval","contextValue","_jsx","Provider","useAuth","useShallow","useSignIn","useSignUp","useSignOut","useCheckToken","useMagicLink","verifying","usePasswordReset","useEmailVerification","resending","useSession","useAuthLoading","useUser","loadingUpdateProfile","loadingChangePassword","loadingChangeEmail","useProfile","useSessions","loadingListSessions","loadingRevokeSession","useApplicationLogo","image","Protect","fallback","Navigate","to","Outlet","AuthCard","title","subtitle","logo","logoHeight","width","variant","opened","onClose","modalProps","props","content","_jsxs","Stack","gap","Image","src","alt","h","fit","Title","order","Text","size","c","Modal","withCloseButton","radius","overlayProps","backgroundOpacity","blur","Paper","withBorder","shadow","p","w","SignIn","showMagicLink","showForgotPassword","showSocialLogin","showSignUpLink","signUpUrl","onSuccess","onMagicLinkSent","onForgotPasswordSent","onSocialLogin","labels","cardProps","loadingSignIn","loadingMagicLink","loadingResetPassword","applicationLogo","finalLogo","defaultLogo","form","useForm","initialValues","validate","test","invalidEmail","passwordTooShort","handleSubmit","values","handleMagicLink","setFieldError","emailRequired","handleForgotPassword","isLoading","onSubmit","TextInput","label","placeholder","emailPlaceholder","leftSection","IconMail","getInputProps","disabled","PasswordInput","passwordPlaceholder","IconLock","Anchor","ta","onClick","style","cursor","sendingReset","Button","type","fullWidth","rightSection","IconArrowRight","signInButton","_Fragment","Divider","orContinueWith","magicLinkButton","Group","grow","IconBrandGoogle","IconBrandGithub","Center","noAccount","createAccount","SignUp","requireName","showSignInLink","signInUrl","confirmPassword","nameRequired","passwordMismatch","namePlaceholder","IconUser","confirmPasswordPlaceholder","signUpButton","hasAccount","MagicLink","onSent","IconSend","sendButton","backTo","MagicLinkCallback","propToken","redirectDelay","setStatus","useState","setErrorMessage","verifyingTokenRef","useRef","verify","urlParams","URLSearchParams","search","noToken","current","setTimeout","verificationFailed","align","Loader","pleaseWait","IconCheck","color","success","redirecting","authenticated","IconX","failed","invalidLink","ForgotPassword","rememberedPassword","ResetPassword","setToken","setSuccess","urlToken","successTitle","successMessage","component","goToSignIn","newPasswordPlaceholder","resetButton","VerifyEmail","onResent","tokenEmail","setTokenEmail","loadingResend","e","handleResend","targetEmail","verification","missingToken","verified","invalidToken","toLowerCase","includes","IconRefresh","resend","UserProfile","onProfileUpdate","onPasswordChange","onEmailChange","showAvatar","showName","showEmail","showPassword","showSessions","maxAvatarSize","customSections","containerProps","editingSection","setEditingSection","parseUserAgent","ua","browser","os","handleRevokeSession","isCurrentSession","dispatchEvent","CustomEvent","notifications","show","sessionRevoked","response","errorTitle","sessionRevokeFailed","handleRevokeOtherSessions","otherSessionsRevoked","otherSessionsRevokeFailed","passwordForm","v","currentPasswordRequired","newPasswordRequired","passwordMinLength","emailForm","emailInvalid","nameForm","avatarPreview","setAvatarPreview","avatarFile","setAvatarFile","handleAvatarFileChange","file","avatarInvalidType","avatarTooLarge","Math","round","reader","FileReader","onloadend","readAsDataURL","setValues","handleToggleSection","section","reset","handleChangePassword","passwordChanged","passwordChangeFailed","handleChangeEmail","emailVerificationSent","emailChangeFailed","handleChangeName","nameUpdated","nameUpdateFailed","handleChangeAvatar","avatarRequired","avatarUpdated","avatarUpdateFailed","handleRemoveAvatar","avatarRemoved","avatarRemoveFailed","SectionHeader","icon","Icon","sectionTitle","description","mb","ThemeIcon","Box","fw","SettingRow","action","actionLabel","expanded","Card","justify","wrap","flex","flexShrink","Tooltip","position","cancel","profileContent","profileSection","profileDescription","avatar","update","updateAvatar","Avatar","Collapse","in","accept","display","onChange","target","files","clickToChange","document","getElementById","click","borderRadius","bottom","right","border","IconPhoto","avatarHint","removePhoto","IconTrash","remove","save","change","changeName","IconPencil","notDefined","newEmailPlaceholder","IconShield","securitySection","securityDescription","IconKey","currentPasswordPlaceholder","passwordDescription","close","manage","manageSessions","IconDevices","loadingSessions","noSessionsFound","map","sessionItem","deviceInfo","userAgent","createdDate","createdAt","borderColor","undefined","backgroundColor","IconDeviceMobile","Badge","thisDevice","ipAddress","unknownIP","toLocaleDateString","at","toLocaleTimeString","hour","minute","signOutAndEnd","endSession","IconLogout","end","endOtherSessions","IconUserCircle","SignedIn","SignedOut","AuthLoading","AuthLoaded","SignInButton","navigate","useNavigate","SignUpButton","SignOutButton","onSignOut","handleClick"],"mappings":"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"}
|