@riligar/auth-react 1.3.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.esm.js +89 -52
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +89 -52
- 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","../node_modules/zustand/esm/vanilla.mjs","../node_modules/zustand/esm/react.mjs","../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"],"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 if (!res.ok) throw Object.assign(new Error(data?.error ?? res.statusText), { res, data })\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)\nfunction 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 console.log('[AuthSDK] isAuthenticated check:', { hasToken: !!token, valid })\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/* 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","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const api = { setState, getState, getInitialState, subscribe };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = ((createState) => createState ? createStoreImpl(createState) : createStoreImpl);\n\nexport { createStore };\n","import React from 'react';\nimport { createStore } from 'zustand/vanilla';\n\nconst identity = (arg) => arg;\nfunction useStore(api, selector = identity) {\n const slice = React.useSyncExternalStore(\n api.subscribe,\n React.useCallback(() => selector(api.getState()), [api, selector]),\n React.useCallback(() => selector(api.getInitialState()), [api, selector])\n );\n React.useDebugValue(slice);\n return slice;\n}\nconst createImpl = (createState) => {\n const api = createStore(createState);\n const useBoundStore = (selector) => useStore(api, selector);\n Object.assign(useBoundStore, api);\n return useBoundStore;\n};\nconst create = ((createState) => createState ? createImpl(createState) : createImpl);\n\nexport { create, useStore };\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 },\n\n // Helper para atualizar loading states\n setLoading: (key, value) =>\n set(state => ({\n loadingStates: { ...state.loadingStates, [key]: value },\n })),\n\n /* Init ao montar o Provider */\n init: async () => {\n try {\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","import { createContext, useEffect, useMemo } from 'react'\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 useEffect(() => {\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(s => ({\n user: s.user,\n loading: s.loading,\n error: s.error,\n isAuthenticated: s.user !== null,\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 const sendMagicLink = useAuthStore(s => s.sendMagicLink)\n const verifyMagicLink = useAuthStore(s => s.verifyMagicLink)\n const loading = useAuthStore(s => s.loadingStates.magicLink)\n const verifying = useAuthStore(s => s.loadingStates.verifyMagicLink)\n const error = useAuthStore(s => s.error)\n\n return { sendMagicLink, verifyMagicLink, loading, verifying, error }\n}\n\n// Password Reset Hook\nexport const usePasswordReset = () => {\n const forgotPassword = useAuthStore(s => s.forgotPassword)\n const resetPassword = useAuthStore(s => s.resetPassword)\n const loading = useAuthStore(s => s.loadingStates.resetPassword)\n const error = useAuthStore(s => s.error)\n\n return { forgotPassword, resetPassword, loading, error }\n}\n\n// Email Verification Hook\nexport const useEmailVerification = () => {\n const verifyEmail = useAuthStore(s => s.verifyEmail)\n const resendVerification = useAuthStore(s => s.resendVerification)\n const loading = useAuthStore(s => s.loadingStates.verifyEmail)\n const resending = useAuthStore(s => s.loadingStates.resendVerification)\n const error = useAuthStore(s => s.error)\n\n return { verifyEmail, resendVerification, loading, resending, error }\n}\n\n// Session Hook\nexport const useSession = () => {\n const getSession = useAuthStore(s => s.getSession)\n const user = useAuthStore(s => s.user)\n const setUser = useAuthStore(s => s.setUser)\n\n return { getSession, user, setUser }\n}\n\n// Loading States Hook\nexport const useAuthLoading = () => useAuthStore(s => s.loadingStates)\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 = 32, 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 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 = defaultLogo,\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 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={logo}\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 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 = defaultLogo,\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 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={logo}\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 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 = defaultLogo,\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 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={logo}\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 } from 'react'\nimport { Stack, Loader, Title, Text } from '@mantine/core'\nimport { IconCheck, IconX } from '@tabler/icons-react'\nimport { useAuthStore } from '../authStore.js'\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 = defaultLogo,\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 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 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 }, [propToken, verifyMagicLink, onSuccess, onError, redirectTo, redirectDelay, labels])\n\n return (\n <AuthCard\n logo={logo}\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 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 = defaultLogo,\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 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={logo}\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 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 = defaultLogo,\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 // 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={logo}\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={logo}\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={logo}\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 } from 'react'\nimport { Stack, Loader, Button, Text, Title } from '@mantine/core'\nimport { IconCheck, IconX, IconRefresh } from '@tabler/icons-react'\nimport { useAuthStore } from '../authStore.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 = defaultLogo,\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 verifyEmail = useAuthStore(s => s.verifyEmail)\n const resendVerification = useAuthStore(s => s.resendVerification)\n const loadingResend = useAuthStore(s => s.loadingStates.resendVerification)\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 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 setStatus('error')\n setErrorMessage(error.message || labels.verificationFailed || 'Verificação falhou')\n onError?.(error)\n }\n }\n\n verify()\n }, [propToken, verifyEmail, onSuccess, onError, redirectTo, redirectDelay, labels])\n\n const handleResend = async () => {\n if (!email) return\n\n try {\n await resendVerification(email)\n onResent?.(email)\n } catch (error) {\n onError?.(error)\n }\n }\n\n return (\n <AuthCard\n logo={logo}\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 === '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 {email && (\n <Button\n variant=\"light\"\n leftSection={<IconRefresh size={16} />}\n onClick={handleResend}\n loading={loadingResend}\n fullWidth\n >\n {labels.resend || 'Reenviar Email de Verificação'}\n </Button>\n )}\n </Stack>\n )}\n </AuthCard>\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","Object","assign","Error","error","statusText","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","JSON","parse","isTokenExpired","payload","exp","now","Date","isExpired","diff","isAuthenticated","valid","getCurrentUser","id","sub","email","name","signUp","password","method","body","stringify","signIn","signOut","refreshToken","sendMagicLink","callbackURL","callback","origin","verifyMagicLink","encodeURIComponent","forgotPassword","redirectTo","redirect","resetPassword","newPassword","verifyEmail","resendVerification","getSession","socialRedirect","provider","href","React","useAuthStore","create","set","get","user","loading","loadingStates","magicLink","setLoading","value","state","init","sessionError","err","startRefresh","refreshInterval","setInterval","timeUntilExpiry","addEventListener","clearInterval","checkTokenValidity","setUser","AuthContext","createContext","AuthProvider","children","onError","s","useEffect","handleStorageChange","event","reload","removeEventListener","interval","contextValue","useMemo","createElement","Provider","useAuth","useSignIn","useSignUp","useSignOut","useCheckToken","useMagicLink","verifying","usePasswordReset","useEmailVerification","resending","useSession","useAuthLoading","ProtectedRoute","fallback","Navigate","to","Outlet","AuthCard","title","subtitle","logo","logoHeight","width","props","Paper","_extends","withBorder","shadow","p","w","radius","Stack","gap","Image","src","alt","h","fit","Title","order","Text","size","c","SignInForm","defaultLogo","showMagicLink","showForgotPassword","showSocialLogin","showSignUpLink","signUpUrl","onSuccess","onMagicLinkSent","onForgotPasswordSent","onSocialLogin","labels","cardProps","loadingSignIn","loadingMagicLink","loadingResetPassword","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","errorMessage","setErrorMessage","verify","urlParams","URLSearchParams","search","noToken","setTimeout","message","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","loadingResend","handleResend","verified","invalidToken","IconRefresh","resend"],"mappings":"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","x_google_ignoreList":[1,2]}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/authSdk.js","../node_modules/zustand/esm/vanilla.mjs","../node_modules/zustand/esm/react.mjs","../src/authStore.js","../node_modules/zustand/esm/vanilla/shallow.mjs","../node_modules/zustand/esm/react/shallow.mjs","../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"],"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 if (!res.ok) throw Object.assign(new Error(data?.error ?? res.statusText), { res, data })\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)\nfunction 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 console.log('[AuthSDK] isAuthenticated check:', { hasToken: !!token, valid })\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/* 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","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const api = { setState, getState, getInitialState, subscribe };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = ((createState) => createState ? createStoreImpl(createState) : createStoreImpl);\n\nexport { createStore };\n","import React from 'react';\nimport { createStore } from 'zustand/vanilla';\n\nconst identity = (arg) => arg;\nfunction useStore(api, selector = identity) {\n const slice = React.useSyncExternalStore(\n api.subscribe,\n React.useCallback(() => selector(api.getState()), [api, selector]),\n React.useCallback(() => selector(api.getInitialState()), [api, selector])\n );\n React.useDebugValue(slice);\n return slice;\n}\nconst createImpl = (createState) => {\n const api = createStore(createState);\n const useBoundStore = (selector) => useStore(api, selector);\n Object.assign(useBoundStore, api);\n return useBoundStore;\n};\nconst create = ((createState) => createState ? createImpl(createState) : createImpl);\n\nexport { create, useStore };\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 },\n\n // Helper para atualizar loading states\n setLoading: (key, value) =>\n set(state => ({\n loadingStates: { ...state.loadingStates, [key]: value },\n })),\n\n /* Init ao montar o Provider */\n init: async () => {\n try {\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","const isIterable = (obj) => Symbol.iterator in obj;\nconst hasIterableEntries = (value) => (\n // HACK: avoid checking entries type\n \"entries\" in value\n);\nconst compareEntries = (valueA, valueB) => {\n const mapA = valueA instanceof Map ? valueA : new Map(valueA.entries());\n const mapB = valueB instanceof Map ? valueB : new Map(valueB.entries());\n if (mapA.size !== mapB.size) {\n return false;\n }\n for (const [key, value] of mapA) {\n if (!mapB.has(key) || !Object.is(value, mapB.get(key))) {\n return false;\n }\n }\n return true;\n};\nconst compareIterables = (valueA, valueB) => {\n const iteratorA = valueA[Symbol.iterator]();\n const iteratorB = valueB[Symbol.iterator]();\n let nextA = iteratorA.next();\n let nextB = iteratorB.next();\n while (!nextA.done && !nextB.done) {\n if (!Object.is(nextA.value, nextB.value)) {\n return false;\n }\n nextA = iteratorA.next();\n nextB = iteratorB.next();\n }\n return !!nextA.done && !!nextB.done;\n};\nfunction shallow(valueA, valueB) {\n if (Object.is(valueA, valueB)) {\n return true;\n }\n if (typeof valueA !== \"object\" || valueA === null || typeof valueB !== \"object\" || valueB === null) {\n return false;\n }\n if (Object.getPrototypeOf(valueA) !== Object.getPrototypeOf(valueB)) {\n return false;\n }\n if (isIterable(valueA) && isIterable(valueB)) {\n if (hasIterableEntries(valueA) && hasIterableEntries(valueB)) {\n return compareEntries(valueA, valueB);\n }\n return compareIterables(valueA, valueB);\n }\n return compareEntries(\n { entries: () => Object.entries(valueA) },\n { entries: () => Object.entries(valueB) }\n );\n}\n\nexport { shallow };\n","import React from 'react';\nimport { shallow } from 'zustand/vanilla/shallow';\n\nfunction useShallow(selector) {\n const prev = React.useRef(void 0);\n return (state) => {\n const next = selector(state);\n return shallow(prev.current, next) ? prev.current : prev.current = next;\n };\n}\n\nexport { useShallow };\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 useEffect(() => {\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","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 = 32, 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 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 = defaultLogo,\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 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={logo}\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 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 = defaultLogo,\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 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={logo}\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 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 = defaultLogo,\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 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={logo}\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 } from 'react'\nimport { Stack, Loader, Title, Text } from '@mantine/core'\nimport { IconCheck, IconX } from '@tabler/icons-react'\nimport { useAuthStore } from '../authStore.js'\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 = defaultLogo,\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 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 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 }, [propToken, verifyMagicLink, onSuccess, onError, redirectTo, redirectDelay, labels])\n\n return (\n <AuthCard\n logo={logo}\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 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 = defaultLogo,\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 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={logo}\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 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 = defaultLogo,\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 // 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={logo}\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={logo}\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={logo}\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 } from 'react'\nimport { Stack, Loader, Button, Text, Title } from '@mantine/core'\nimport { IconCheck, IconX, IconRefresh } from '@tabler/icons-react'\nimport { useAuthStore } from '../authStore.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 = defaultLogo,\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 verifyEmail = useAuthStore(s => s.verifyEmail)\n const resendVerification = useAuthStore(s => s.resendVerification)\n const loadingResend = useAuthStore(s => s.loadingStates.resendVerification)\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 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 setStatus('error')\n setErrorMessage(error.message || labels.verificationFailed || 'Verificação falhou')\n onError?.(error)\n }\n }\n\n verify()\n }, [propToken, verifyEmail, onSuccess, onError, redirectTo, redirectDelay, labels])\n\n const handleResend = async () => {\n if (!email) return\n\n try {\n await resendVerification(email)\n onResent?.(email)\n } catch (error) {\n onError?.(error)\n }\n }\n\n return (\n <AuthCard\n logo={logo}\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 === '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 {email && (\n <Button\n variant=\"light\"\n leftSection={<IconRefresh size={16} />}\n onClick={handleResend}\n loading={loadingResend}\n fullWidth\n >\n {labels.resend || 'Reenviar Email de Verificação'}\n </Button>\n )}\n </Stack>\n )}\n </AuthCard>\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","Object","assign","Error","error","statusText","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","JSON","parse","isTokenExpired","payload","exp","now","Date","isExpired","diff","isAuthenticated","valid","getCurrentUser","id","sub","email","name","signUp","password","method","body","stringify","signIn","signOut","refreshToken","sendMagicLink","callbackURL","callback","origin","verifyMagicLink","encodeURIComponent","forgotPassword","redirectTo","redirect","resetPassword","newPassword","verifyEmail","resendVerification","getSession","socialRedirect","provider","href","React","useAuthStore","create","set","get","user","loading","loadingStates","magicLink","setLoading","value","state","init","sessionError","err","startRefresh","refreshInterval","setInterval","timeUntilExpiry","addEventListener","clearInterval","checkTokenValidity","setUser","AuthContext","createContext","AuthProvider","children","onError","s","useEffect","handleStorageChange","event","reload","removeEventListener","interval","contextValue","useMemo","createElement","Provider","useAuth","useShallow","useSignIn","useSignUp","useSignOut","useCheckToken","useMagicLink","verifying","usePasswordReset","useEmailVerification","resending","useSession","useAuthLoading","ProtectedRoute","fallback","Navigate","to","Outlet","AuthCard","title","subtitle","logo","logoHeight","width","props","Paper","_extends","withBorder","shadow","p","w","radius","Stack","gap","Image","src","alt","h","fit","Title","order","Text","size","c","SignInForm","defaultLogo","showMagicLink","showForgotPassword","showSocialLogin","showSignUpLink","signUpUrl","onSuccess","onMagicLinkSent","onForgotPasswordSent","onSocialLogin","labels","cardProps","loadingSignIn","loadingMagicLink","loadingResetPassword","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","errorMessage","setErrorMessage","verify","urlParams","URLSearchParams","search","noToken","setTimeout","message","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","loadingResend","handleResend","verified","invalidToken","IconRefresh","resend"],"mappings":"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","x_google_ignoreList":[1,2,4,5]}
|