@riligar/auth-react 1.10.0 → 1.11.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/README.md +100 -85
- package/dist/index.esm.js +118 -14
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +144 -22
- 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/ProtectedRoute.jsx","../src/components/AuthCard.jsx","../src/assets/logotipo.webp","../src/components/SignInForm.jsx","../src/components/SignUpForm.jsx","../src/components/MagicLinkForm.jsx","../src/components/MagicLinkVerify.jsx","../src/components/ForgotPasswordForm.jsx","../src/components/ResetPasswordForm.jsx","../src/components/VerifyEmailCard.jsx","../src/components/AccountModal.jsx"],"sourcesContent":["// Config - pode ser sobrescrita pelo AuthProvider\n// Tenta detectar ambiente Vite, mas falha graciosamente se não existir\nconst getEnvVar = key => {\n try {\n if (typeof import.meta !== 'undefined' && import.meta.env && import.meta.env[key]) {\n return import.meta.env[key]\n }\n } catch (e) {\n // ignore\n }\n return null\n}\n\nlet API_BASE = (typeof window !== 'undefined' && window?.location ? getEnvVar('VITE_API_BASE') : null) || 'http://localhost:3000'\n\nlet API_KEY = null\n\n// Permite configurar a API base e key externamente (chamado pelo AuthProvider)\nexport function configure({ apiUrl, apiKey }) {\n if (apiUrl) API_BASE = apiUrl.replace(/\\/$/, '') // Remove trailing slash\n if (apiKey) API_KEY = apiKey\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\n if (API_KEY) {\n headers['X-API-Key'] = API_KEY\n }\n\n const res = await fetch(url, {\n headers,\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 console.log('[AuthSDK] Handling Auth Response:', {\n hasToken: !!result.token,\n hasSessionToken: !!result.session?.token,\n hasSessionSessionToken: !!result.session?.sessionToken,\n extractedToken: token,\n })\n\n if (token) {\n console.log('[AuthSDK] Saving token to storage')\n setStoredToken(token)\n } else {\n console.warn('[AuthSDK] No token found in response', result)\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/forget-password', {\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\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 // 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 },\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 // Verifica se há um token válido\n if (api.isAuthenticated()) {\n // Tenta extrair usuário do token (JWT)\n let user = api.getCurrentUser()\n\n // Se o token for opaco (não-JWT), getCurrentUser retorna null.\n // Precisamos buscar a sessão no servidor.\n if (!user) {\n try {\n const session = await api.getSession()\n if (session?.user) {\n user = session.user\n }\n } catch (sessionError) {\n console.warn('[AuthStore] Failed to fetch session:', sessionError)\n }\n }\n\n if (user) {\n set({ user, loading: false })\n } else {\n set({ user: null, loading: false })\n }\n } else {\n set({ user: null, loading: false })\n }\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 session = await api.getSession()\n if (session?.user) user = session.user\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 return await api.getSession()\n } catch (err) {\n set({ error: err })\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 apiUrl, // URL base da API (OBRIGATÓRIA)\n apiKey, // API Key para header X-API-Key (OBRIGATÓRIA)\n onError, // Callback de erro global\n}) {\n // Validação de props obrigatórias\n if (!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 if (!apiUrl) {\n throw new Error('[@riligar/auth-react] apiUrl é obrigatória no AuthProvider. ' + 'Use a URL do seu servidor de autenticação.')\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 apiUrl e apiKey\n // Configura SDK com apiUrl e apiKey\n // Usamos useMemo para garantir que a configuração ocorra ANTES dos efeitos dos componentes filhos\n useMemo(() => {\n configure({ apiUrl, apiKey })\n }, [apiUrl, apiKey])\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 window.location.reload()\n }\n // Se o token mudou em outra aba, recarrega\n if (event.key === 'auth:token') {\n checkTokenValidity()\n }\n }\n\n window.addEventListener('storage', handleStorageChange)\n return () => window.removeEventListener('storage', handleStorageChange)\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\nexport const useProfile = () =>\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// 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 ProtectedRoute({\n fallback = <p>⌛ Carregando...</p>,\n redirectTo = \"/login\"\n}) {\n const { user, loading } = useAuth();\n\n if (loading) return fallback;\n if (!user) return <Navigate to={redirectTo} replace />;\n\n return <Outlet />;\n} ","import { Paper, Stack, Image, Title, Text } from '@mantine/core'\n\n/**\n * Container wrapper para componentes de autenticação\n * Usa Mantine Paper com estilo consistente\n */\nexport default function AuthCard({ children, title, subtitle, logo, logoHeight = 28, width = 350, ...props }) {\n return (\n <Paper\n withBorder\n shadow=\"md\"\n p={24}\n w={width}\n radius=\"md\"\n {...props}\n >\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 </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 */\nexport default function SignInForm({\n // Configuração\n logo, // Removido default, será calculado abaixo\n title = 'Entrar',\n subtitle = 'Acesse sua conta para continuar',\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 {...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 */\nexport default function SignUpForm({\n // Configuração\n logo,\n title = 'Criar Conta',\n subtitle = 'Preencha os dados para se cadastrar',\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 {...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 */\nexport default function MagicLinkForm({\n // Configuração\n logo,\n title = 'Login sem Senha',\n subtitle = 'Receba um link de acesso no seu email',\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 {...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 MagicLinkVerify({\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 */\nexport default function ForgotPasswordForm({\n // Configuração\n logo,\n title = 'Recuperar Senha',\n subtitle = 'Enviaremos um link para redefinir sua senha',\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 {...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 ResetPasswordForm({\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 VerifyEmailCard({\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 } from '@mantine/core'\nimport { useForm } from '@mantine/form'\nimport { notifications } from '@mantine/notifications'\nimport { IconUser, IconShield, IconUserCircle, IconKey, IconMail, IconCheck, IconX, IconPhoto, IconPencil, IconTrash } from '@tabler/icons-react'\n\nimport { useProfile } from '../AuthProvider.jsx'\n\n/**\n * Modal de gerenciamento de conta do usuário\n * Permite editar avatar, nome, email e senha\n */\nexport default function AccountModal({\n // Controle do 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\n // Customização\n labels = {},\n title = 'Account',\n subtitle = 'Manage your account info.',\n\n // Avatar config\n maxAvatarSize = 500 * 1024, // 500KB\n\n ...modalProps\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 // 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 return (\n <Modal\n opened={opened}\n onClose={onClose}\n size={550}\n withCloseButton\n radius=\"lg\"\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 {...modalProps}\n >\n <Divider mb=\"md\" />\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 && (\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 <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 </Stack>\n </Box>\n )}\n </Modal>\n )\n}\n"],"names":["getEnvVar","key","import","meta","env","e","API_BASE","window","location","API_KEY","configure","apiUrl","apiKey","replace","api","route","opts","cleanRoute","startsWith","url","token","getStoredToken","headers","Accept","Authorization","res","fetch","data","status","json","catch","ok","errorMessage","message","error","detail","statusText","JSON","stringify","Object","assign","Error","localStorage","getItem","setStoredToken","setItem","removeItem","handleAuthResponse","result","session","sessionToken","console","log","hasToken","hasSessionToken","hasSessionSessionToken","extractedToken","warn","decodeJWT","parts","split","length","base64Url","base64","jsonPayload","atob","Buffer","from","toString","parse","isTokenExpired","payload","exp","now","Date","isExpired","diff","isAuthenticated","valid","getCurrentUser","id","sub","email","name","signUp","password","method","body","signIn","signOut","refreshToken","sendMagicLink","callbackURL","callback","origin","verifyMagicLink","encodeURIComponent","forgotPassword","redirectTo","redirect","resetPassword","newPassword","verifyEmail","resendVerification","getSession","getApplicationInfo","updateProfile","changePassword","currentPassword","revokeOtherSessions","changeEmail","newEmail","socialRedirect","provider","href","useAuthStore","create","set","get","user","loading","loadingStates","magicLink","applicationInfo","setLoading","value","state","fetchApplicationInfo","appInfo","init","sessionError","err","startRefresh","refreshInterval","setInterval","timeUntilExpiry","addEventListener","clearInterval","checkTokenValidity","setUser","AuthContext","createContext","AuthProvider","children","onError","s","useMemo","useEffect","handleStorageChange","event","reload","removeEventListener","interval","contextValue","_jsx","Provider","useAuth","useShallow","useSignIn","useSignUp","useSignOut","useCheckToken","useMagicLink","verifying","usePasswordReset","useEmailVerification","resending","useSession","useAuthLoading","useProfile","loadingUpdateProfile","loadingChangePassword","loadingChangeEmail","useApplicationLogo","image","ProtectedRoute","fallback","Navigate","to","Outlet","AuthCard","title","subtitle","logo","logoHeight","width","props","Paper","withBorder","shadow","p","w","radius","_jsxs","Stack","gap","Image","src","alt","h","fit","Title","order","Text","size","c","SignInForm","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","variant","magicLinkButton","Group","grow","IconBrandGoogle","IconBrandGithub","Center","noAccount","createAccount","SignUpForm","requireName","showSignInLink","signInUrl","confirmPassword","nameRequired","passwordMismatch","namePlaceholder","IconUser","confirmPasswordPlaceholder","signUpButton","hasAccount","MagicLinkForm","onSent","IconSend","sendButton","backTo","MagicLinkVerify","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","ForgotPasswordForm","rememberedPassword","ResetPasswordForm","setToken","setSuccess","urlToken","successTitle","successMessage","component","goToSignIn","newPasswordPlaceholder","resetButton","VerifyEmailCard","onResent","tokenEmail","setTokenEmail","loadingResend","handleResend","targetEmail","verification","missingToken","verified","invalidToken","toLowerCase","includes","IconRefresh","resend","AccountModal","opened","onClose","onProfileUpdate","onPasswordChange","onEmailChange","showAvatar","showName","showEmail","showPassword","maxAvatarSize","modalProps","editingSection","setEditingSection","passwordForm","v","currentPasswordRequired","newPasswordRequired","passwordMinLength","emailForm","emailInvalid","nameForm","avatarPreview","setAvatarPreview","avatarFile","setAvatarFile","handleAvatarFileChange","file","notifications","show","errorTitle","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","Modal","withCloseButton","overlayProps","backgroundOpacity","blur","IconUserCircle","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"],"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 - pode ser sobrescrita pelo AuthProvider\n// Tenta detectar ambiente Vite, mas falha graciosamente se não existir\nconst getEnvVar = key => {\n try {\n if (typeof import.meta !== 'undefined' && import.meta.env && import.meta.env[key]) {\n return import.meta.env[key]\n }\n } catch (e) {\n // ignore\n }\n return null\n}\n\nlet API_BASE = (typeof window !== 'undefined' && window?.location ? getEnvVar('VITE_API_BASE') : null) || 'http://localhost:3000'\n\nlet API_KEY = null\n\n// Permite configurar a API base e key externamente (chamado pelo AuthProvider)\nexport function configure({ apiUrl, apiKey }) {\n if (apiUrl) API_BASE = apiUrl.replace(/\\/$/, '') // Remove trailing slash\n if (apiKey) API_KEY = apiKey\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\n if (API_KEY) {\n headers['X-API-Key'] = API_KEY\n }\n\n const res = await fetch(url, {\n headers,\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 console.log('[AuthSDK] Handling Auth Response:', {\n hasToken: !!result.token,\n hasSessionToken: !!result.session?.token,\n hasSessionSessionToken: !!result.session?.sessionToken,\n extractedToken: token,\n })\n\n if (token) {\n console.log('[AuthSDK] Saving token to storage')\n setStoredToken(token)\n } else {\n console.warn('[AuthSDK] No token found in response', result)\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/forget-password', {\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\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 // 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 },\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 // Verifica se há um token válido\n if (api.isAuthenticated()) {\n // Tenta extrair usuário do token (JWT)\n let user = api.getCurrentUser()\n\n // Se o token for opaco (não-JWT), getCurrentUser retorna null.\n // Precisamos buscar a sessão no servidor.\n if (!user) {\n try {\n const session = await api.getSession()\n if (session?.user) {\n user = session.user\n }\n } catch (sessionError) {\n console.warn('[AuthStore] Failed to fetch session:', sessionError)\n }\n }\n\n if (user) {\n set({ user, loading: false })\n } else {\n set({ user: null, loading: false })\n }\n } else {\n set({ user: null, loading: false })\n }\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 session = await api.getSession()\n if (session?.user) user = session.user\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 return await api.getSession()\n } catch (err) {\n set({ error: err })\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 apiUrl, // URL base da API (OBRIGATÓRIA)\n apiKey, // API Key para header X-API-Key (OBRIGATÓRIA)\n onError, // Callback de erro global\n}) {\n // Validação de props obrigatórias\n if (!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 if (!apiUrl) {\n throw new Error('[@riligar/auth-react] apiUrl é obrigatória no AuthProvider. ' + 'Use a URL do seu servidor de autenticação.')\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 apiUrl e apiKey\n // Configura SDK com apiUrl e apiKey\n // Usamos useMemo para garantir que a configuração ocorra ANTES dos efeitos dos componentes filhos\n useMemo(() => {\n configure({ apiUrl, apiKey })\n }, [apiUrl, apiKey])\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 window.location.reload()\n }\n // Se o token mudou em outra aba, recarrega\n if (event.key === 'auth:token') {\n checkTokenValidity()\n }\n }\n\n window.addEventListener('storage', handleStorageChange)\n return () => window.removeEventListener('storage', handleStorageChange)\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// 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 } from '@mantine/core'\n\n/**\n * Container wrapper para componentes de autenticação\n * Usa Mantine Paper com estilo consistente\n */\nexport default function AuthCard({ children, title, subtitle, logo, logoHeight = 28, width = 350, ...props }) {\n return (\n <Paper\n withBorder\n shadow=\"md\"\n p={24}\n w={width}\n radius=\"md\"\n {...props}\n >\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 </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 */\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 // 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 {...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 */\nexport default function SignUp({\n // Configuração\n logo,\n title = 'Criar Conta',\n subtitle = 'Preencha os dados para se cadastrar',\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 {...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 */\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 // 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 {...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 */\nexport default function ForgotPassword({\n // Configuração\n logo,\n title = 'Recuperar Senha',\n subtitle = 'Enviaremos um link para redefinir sua senha',\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 {...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 } from '@mantine/core'\nimport { useForm } from '@mantine/form'\nimport { notifications } from '@mantine/notifications'\nimport { IconUser, IconShield, IconUserCircle, IconKey, IconMail, IconCheck, IconX, IconPhoto, IconPencil, IconTrash } from '@tabler/icons-react'\n\nimport { useProfile } from '../AuthProvider.jsx'\n\n/**\n * Modal de gerenciamento de conta do usuário\n * Permite editar avatar, nome, email e senha\n */\nexport default function UserProfile({\n // Controle do 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\n // Customização\n labels = {},\n title = 'Account',\n subtitle = 'Manage your account info.',\n\n // Avatar config\n maxAvatarSize = 500 * 1024, // 500KB\n\n ...modalProps\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 // 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 return (\n <Modal\n opened={opened}\n onClose={onClose}\n size={550}\n withCloseButton\n radius=\"lg\"\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 {...modalProps}\n >\n <Divider mb=\"md\" />\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 && (\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 <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 </Stack>\n </Box>\n )}\n </Modal>\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":["getEnvVar","key","import","meta","env","e","API_BASE","window","location","API_KEY","configure","apiUrl","apiKey","replace","api","route","opts","cleanRoute","startsWith","url","token","getStoredToken","headers","Accept","Authorization","res","fetch","data","status","json","catch","ok","errorMessage","message","error","detail","statusText","JSON","stringify","Object","assign","Error","localStorage","getItem","setStoredToken","setItem","removeItem","handleAuthResponse","result","session","sessionToken","console","log","hasToken","hasSessionToken","hasSessionSessionToken","extractedToken","warn","decodeJWT","parts","split","length","base64Url","base64","jsonPayload","atob","Buffer","from","toString","parse","isTokenExpired","payload","exp","now","Date","isExpired","diff","isAuthenticated","valid","getCurrentUser","id","sub","email","name","signUp","password","method","body","signIn","signOut","refreshToken","sendMagicLink","callbackURL","callback","origin","verifyMagicLink","encodeURIComponent","forgotPassword","redirectTo","redirect","resetPassword","newPassword","verifyEmail","resendVerification","getSession","getApplicationInfo","updateProfile","changePassword","currentPassword","revokeOtherSessions","changeEmail","newEmail","socialRedirect","provider","href","useAuthStore","create","set","get","user","loading","loadingStates","magicLink","applicationInfo","setLoading","value","state","fetchApplicationInfo","appInfo","init","sessionError","err","startRefresh","refreshInterval","setInterval","timeUntilExpiry","addEventListener","clearInterval","checkTokenValidity","setUser","AuthContext","createContext","AuthProvider","children","onError","s","useMemo","useEffect","handleStorageChange","event","reload","removeEventListener","interval","contextValue","_jsx","Provider","useAuth","useShallow","useSignIn","useSignUp","useSignOut","useCheckToken","useMagicLink","verifying","usePasswordReset","useEmailVerification","resending","useSession","useAuthLoading","useUser","loadingUpdateProfile","loadingChangePassword","loadingChangeEmail","useProfile","useApplicationLogo","image","Protect","fallback","Navigate","to","Outlet","AuthCard","title","subtitle","logo","logoHeight","width","props","Paper","withBorder","shadow","p","w","radius","_jsxs","Stack","gap","Image","src","alt","h","fit","Title","order","Text","size","c","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","variant","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","handleResend","targetEmail","verification","missingToken","verified","invalidToken","toLowerCase","includes","IconRefresh","resend","UserProfile","opened","onClose","onProfileUpdate","onPasswordChange","onEmailChange","showAvatar","showName","showEmail","showPassword","maxAvatarSize","modalProps","editingSection","setEditingSection","passwordForm","v","currentPasswordRequired","newPasswordRequired","passwordMinLength","emailForm","emailInvalid","nameForm","avatarPreview","setAvatarPreview","avatarFile","setAvatarFile","handleAvatarFileChange","file","notifications","show","errorTitle","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","Modal","withCloseButton","overlayProps","backgroundOpacity","blur","IconUserCircle","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","SignedIn","SignedOut","AuthLoading","AuthLoaded","SignInButton","navigate","useNavigate","SignUpButton","SignOutButton","onSignOut","handleClick"],"mappings":"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"}
|