@riligar/auth-react 1.2.0 → 1.3.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.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/authSdk.js","../node_modules/zustand/esm/vanilla.mjs","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js","../node_modules/use-sync-external-store/shim/index.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js","../node_modules/use-sync-external-store/shim/with-selector.js","../node_modules/zustand/esm/index.mjs","../src/authStore.js","../src/AuthProvider.jsx","../src/ProtectedRoute.jsx"],"sourcesContent":["// Ajuste se o back-end estiver em outro domínio/porta\nconst API_BASE = typeof window !== 'undefined' && window?.location\n ? (import.meta?.env?.VITE_API_BASE ?? \"http://localhost:3000\")\n : \"http://localhost:3000\";\n\n// Cache para JWKS\nlet jwksCache = null;\nlet jwksCacheExpiry = 0;\n\n// helper fetch pré-configurado\nasync function api(route, opts = {}) {\n const token = getStoredToken();\n const headers = { \"Content-Type\": \"application/json\", ...opts.headers };\n\n // Adiciona Authorization header se tiver token\n if (token) {\n headers.Authorization = `Bearer ${token}`;\n }\n\n const res = await fetch(`${API_BASE}${route}`, {\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\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 const payload = JSON.parse(atob(parts[1].replace(/-/g, '+').replace(/_/g, '/')));\n return payload;\n } catch {\n return null;\n }\n}\n\n// Verifica se o token está expirado\nfunction isTokenExpired(token) {\n const payload = decodeJWT(token);\n if (!payload || !payload.exp) return true;\n\n return Date.now() >= payload.exp * 1000;\n}\n\n// Verifica se o usuário está autenticado\nexport function isAuthenticated() {\n const token = getStoredToken();\n return token && !isTokenExpired(token);\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 id: payload.sub,\n email: payload.email,\n name: payload.name,\n ...payload\n } : null;\n}\n\n/*--- métodos de autenticação-------------------*/\nexport const signUp = async (email, password) => {\n const result = await api(\"/auth/sign-up\", {\n method: \"POST\",\n body: JSON.stringify({ email, password })\n });\n\n if (result.token) {\n setStoredToken(result.token);\n }\n\n return result;\n};\n\nexport const signIn = async (email, password) => {\n const result = await api(\"/auth/sign-in\", {\n method: \"POST\",\n body: JSON.stringify({ email, password })\n });\n\n if (result.token) {\n setStoredToken(result.token);\n }\n\n return 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 if (result.token) {\n setStoredToken(result.token);\n return result;\n }\n } catch (error) {\n setStoredToken(null);\n throw error;\n }\n};\n\n/* Social login redirect (ex.: Google) ---------*/\nexport function socialRedirect(provider, redirectTo = typeof window !== 'undefined' ? window.location.href : '/') {\n if (typeof window === 'undefined') return;\n // Melhor pegar a URL de redirect dada pelo back-end, mas isso já funciona:\n window.location = `${API_BASE}/auth/sign-in/${provider}?redirect=${encodeURIComponent(redirectTo)}`;\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 destroy = () => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected.\"\n );\n }\n listeners.clear();\n };\n const api = { setState, getState, getInitialState, subscribe, destroy };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\nvar vanilla = (createState) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] Default export is deprecated. Instead use import { createStore } from 'zustand/vanilla'.\"\n );\n }\n return createStore(createState);\n};\n\nexport { createStore, vanilla as default };\n","/**\n * @license React\n * use-sync-external-store-shim.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue;\nfunction useSyncExternalStore$2(subscribe, getSnapshot) {\n var value = getSnapshot(),\n _useState = useState({ inst: { value: value, getSnapshot: getSnapshot } }),\n inst = _useState[0].inst,\n forceUpdate = _useState[1];\n useLayoutEffect(\n function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n },\n [subscribe, value, getSnapshot]\n );\n useEffect(\n function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n });\n },\n [subscribe]\n );\n useDebugValue(value);\n return value;\n}\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n}\nfunction useSyncExternalStore$1(subscribe, getSnapshot) {\n return getSnapshot();\n}\nvar shim =\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ? useSyncExternalStore$1\n : useSyncExternalStore$2;\nexports.useSyncExternalStore =\n void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n","/**\n * @license React\n * use-sync-external-store-shim.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n }\n function useSyncExternalStore$2(subscribe, getSnapshot) {\n didWarnOld18Alpha ||\n void 0 === React.startTransition ||\n ((didWarnOld18Alpha = !0),\n console.error(\n \"You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release.\"\n ));\n var value = getSnapshot();\n if (!didWarnUncachedGetSnapshot) {\n var cachedValue = getSnapshot();\n objectIs(value, cachedValue) ||\n (console.error(\n \"The result of getSnapshot should be cached to avoid an infinite loop\"\n ),\n (didWarnUncachedGetSnapshot = !0));\n }\n cachedValue = useState({\n inst: { value: value, getSnapshot: getSnapshot }\n });\n var inst = cachedValue[0].inst,\n forceUpdate = cachedValue[1];\n useLayoutEffect(\n function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n },\n [subscribe, value, getSnapshot]\n );\n useEffect(\n function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n });\n },\n [subscribe]\n );\n useDebugValue(value);\n return value;\n }\n function checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n }\n function useSyncExternalStore$1(subscribe, getSnapshot) {\n return getSnapshot();\n }\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n var React = require(\"react\"),\n objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue,\n didWarnOld18Alpha = !1,\n didWarnUncachedGetSnapshot = !1,\n shim =\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ? useSyncExternalStore$1\n : useSyncExternalStore$2;\n exports.useSyncExternalStore =\n void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\"),\n shim = require(\"use-sync-external-store/shim\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useSyncExternalStore = shim.useSyncExternalStore,\n useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue;\nexports.useSyncExternalStoreWithSelector = function (\n subscribe,\n getSnapshot,\n getServerSnapshot,\n selector,\n isEqual\n) {\n var instRef = useRef(null);\n if (null === instRef.current) {\n var inst = { hasValue: !1, value: null };\n instRef.current = inst;\n } else inst = instRef.current;\n instRef = useMemo(\n function () {\n function memoizedSelector(nextSnapshot) {\n if (!hasMemo) {\n hasMemo = !0;\n memoizedSnapshot = nextSnapshot;\n nextSnapshot = selector(nextSnapshot);\n if (void 0 !== isEqual && inst.hasValue) {\n var currentSelection = inst.value;\n if (isEqual(currentSelection, nextSnapshot))\n return (memoizedSelection = currentSelection);\n }\n return (memoizedSelection = nextSnapshot);\n }\n currentSelection = memoizedSelection;\n if (objectIs(memoizedSnapshot, nextSnapshot)) return currentSelection;\n var nextSelection = selector(nextSnapshot);\n if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n return (memoizedSnapshot = nextSnapshot), currentSelection;\n memoizedSnapshot = nextSnapshot;\n return (memoizedSelection = nextSelection);\n }\n var hasMemo = !1,\n memoizedSnapshot,\n memoizedSelection,\n maybeGetServerSnapshot =\n void 0 === getServerSnapshot ? null : getServerSnapshot;\n return [\n function () {\n return memoizedSelector(getSnapshot());\n },\n null === maybeGetServerSnapshot\n ? void 0\n : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n }\n ];\n },\n [getSnapshot, getServerSnapshot, selector, isEqual]\n );\n var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n useEffect(\n function () {\n inst.hasValue = !0;\n inst.value = value;\n },\n [value]\n );\n useDebugValue(value);\n return value;\n};\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n }\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n var React = require(\"react\"),\n shim = require(\"use-sync-external-store/shim\"),\n objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useSyncExternalStore = shim.useSyncExternalStore,\n useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue;\n exports.useSyncExternalStoreWithSelector = function (\n subscribe,\n getSnapshot,\n getServerSnapshot,\n selector,\n isEqual\n ) {\n var instRef = useRef(null);\n if (null === instRef.current) {\n var inst = { hasValue: !1, value: null };\n instRef.current = inst;\n } else inst = instRef.current;\n instRef = useMemo(\n function () {\n function memoizedSelector(nextSnapshot) {\n if (!hasMemo) {\n hasMemo = !0;\n memoizedSnapshot = nextSnapshot;\n nextSnapshot = selector(nextSnapshot);\n if (void 0 !== isEqual && inst.hasValue) {\n var currentSelection = inst.value;\n if (isEqual(currentSelection, nextSnapshot))\n return (memoizedSelection = currentSelection);\n }\n return (memoizedSelection = nextSnapshot);\n }\n currentSelection = memoizedSelection;\n if (objectIs(memoizedSnapshot, nextSnapshot))\n return currentSelection;\n var nextSelection = selector(nextSnapshot);\n if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n return (memoizedSnapshot = nextSnapshot), currentSelection;\n memoizedSnapshot = nextSnapshot;\n return (memoizedSelection = nextSelection);\n }\n var hasMemo = !1,\n memoizedSnapshot,\n memoizedSelection,\n maybeGetServerSnapshot =\n void 0 === getServerSnapshot ? null : getServerSnapshot;\n return [\n function () {\n return memoizedSelector(getSnapshot());\n },\n null === maybeGetServerSnapshot\n ? void 0\n : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n }\n ];\n },\n [getSnapshot, getServerSnapshot, selector, isEqual]\n );\n var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n useEffect(\n function () {\n inst.hasValue = !0;\n inst.value = value;\n },\n [value]\n );\n useDebugValue(value);\n return value;\n };\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","import { createStore } from 'zustand/vanilla';\nexport * from 'zustand/vanilla';\nimport ReactExports from 'react';\nimport useSyncExternalStoreExports from 'use-sync-external-store/shim/with-selector.js';\n\nconst { useDebugValue } = ReactExports;\nconst { useSyncExternalStoreWithSelector } = useSyncExternalStoreExports;\nlet didWarnAboutEqualityFn = false;\nconst identity = (arg) => arg;\nfunction useStore(api, selector = identity, equalityFn) {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && equalityFn && !didWarnAboutEqualityFn) {\n console.warn(\n \"[DEPRECATED] Use `createWithEqualityFn` instead of `create` or use `useStoreWithEqualityFn` instead of `useStore`. They can be imported from 'zustand/traditional'. https://github.com/pmndrs/zustand/discussions/1937\"\n );\n didWarnAboutEqualityFn = true;\n }\n const slice = useSyncExternalStoreWithSelector(\n api.subscribe,\n api.getState,\n api.getServerState || api.getInitialState,\n selector,\n equalityFn\n );\n useDebugValue(slice);\n return slice;\n}\nconst createImpl = (createState) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && typeof createState !== \"function\") {\n console.warn(\n \"[DEPRECATED] Passing a vanilla store will be unsupported in a future version. Instead use `import { useStore } from 'zustand'`.\"\n );\n }\n const api = typeof createState === \"function\" ? createStore(createState) : createState;\n const useBoundStore = (selector, equalityFn) => useStore(api, selector, equalityFn);\n Object.assign(useBoundStore, api);\n return useBoundStore;\n};\nconst create = (createState) => createState ? createImpl(createState) : createImpl;\nvar react = (createState) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] Default export is deprecated. Instead use `import { create } from 'zustand'`.\"\n );\n }\n return create(createState);\n};\n\nexport { create, react as default, 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 /* Init ao montar o Provider */\n init: async () => {\n try {\n // Verifica se há um token válido e obtém dados do usuário\n if (api.isAuthenticated()) {\n const user = api.getCurrentUser();\n set({ user, loading: false });\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 */\n signUp: async (email, password) => {\n set({ loading: true, error: null });\n try {\n const result = await api.signUp(email, password);\n const user = api.getCurrentUser();\n set({ user, loading: false });\n return result;\n } catch (err) {\n set({ error: err, loading: false });\n throw err;\n }\n },\n\n signIn: async (email, password) => {\n set({ loading: true, error: null });\n try {\n const result = await api.signIn(email, password);\n const user = api.getCurrentUser();\n set({ user, loading: false });\n return result;\n } catch (err) {\n set({ error: err, loading: false });\n throw err;\n }\n },\n\n signOut: async () => {\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 },\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 payload = JSON.parse(atob(token.split('.')[1].replace(/-/g, '+').replace(/_/g, '/')));\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) { // 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})); ","import { createContext, useEffect } from 'react'\nimport { useAuthStore } from './authStore.js'\n\nconst AuthContext = createContext() // só para ter o Provider em JSX\n\nexport function AuthProvider({ children }) {\n const init = useAuthStore(s => s.init)\n const startRefresh = useAuthStore(s => s.startRefresh)\n const checkTokenValidity = useAuthStore(s => s.checkTokenValidity)\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 return <AuthContext.Provider value={null /* valor irrelevante */}>{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\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","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} "],"names":["API_BASE","window","location","import","VITE_API_BASE","api","route","opts","token","getStoredToken","headers","Authorization","res","fetch","data","status","json","catch","ok","Object","assign","Error","error","statusText","localStorage","getItem","setStoredToken","setItem","removeItem","decodeJWT","parts","split","length","payload","JSON","parse","atob","replace","isTokenExpired","exp","Date","now","isAuthenticated","getCurrentUser","id","sub","email","name","signUp","password","result","method","body","stringify","signIn","signOut","refreshToken","socialRedirect","provider","redirectTo","href","encodeURIComponent","shimModule","require$$0","require$$1","withSelectorModule","ReactExports","useAuthStore","create","set","get","user","loading","init","console","err","startRefresh","refreshInterval","setInterval","timeUntilExpiry","addEventListener","clearInterval","checkTokenValidity","AuthContext","createContext","AuthProvider","children","s","useEffect","handleStorageChange","event","key","reload","removeEventListener","interval","React","createElement","Provider","value","useAuth","useSignIn","useSignUp","useSignOut","useCheckToken","ProtectedRoute","fallback","Navigate","to","Outlet"],"mappings":"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","x_google_ignoreList":[1,2,3,4,5,6,7,8]}
1
+ {"version":3,"file":"index.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,iVBORw0KGgoAAAANSUhEUgAAAjwAAADICAYAAADskzu8AAAQAElEQVR4nOzdCXxcZ3ku8PecM6PF1uZ9kfc4TmKyOMRZHNtYjm1tTlISMC2BQFhCQptAKGEp9Jbc20Jvoe29BUprmqZAAzfgEEJSW4vtxCzGEBKy4uyJsRPvliVZtpbRzLnPK49TR5FG0mjON2d5/r/f8RnPpjNHoznPfN933i8mI3TR+kfjB5wppXGraFLKdVZZIu8Qsc4ScWfh5rFYCoUofxLiuh14T76G9+SzYjsPW5J4OFkUPzipo7zjsZushBARQVVVVRFcZVnWma7rVuCq41j2pVKp+5ubmw9Knvh1u4LOGu4dL1rvxg/L4fNwAKnDL+FqHFQuwKMZbigIehB+Hrcse2PSsTbtHtP8hLznPUkhoshaunRpaXl5+SdxcXz/2xAykggX32lqavq9GObX7QoDezh3mnFn2/wjTuu3Lce5D2HnS9jtlzDsUIAUINtfmnLlr+xe98dz2lbfNeuu1nlCRJFVWlr6XhkgVCgc5xws71uyZEmxGObX7QqDWMZb73DtWTNa3mVL7zewpyeLqy1CrhAFkSWuvt9nI+Zfb7vJ2rn/fuTWV/eMv1fusFJCRFFiaXdRpjvYtl1UVlamX4xMtqYY2S50melnYUlxcXEJnq+gs7Ozu6en50QsFuvctm1bl4TUoIGn8rvtE+KJo5/B/temtSLmHAqNvuBuTUbz8HdmVx5dXLi+/asv3FR2WIjIuLq6ujKsPiAjhL/fToSDDlxsx7I/mUy+3tzcfEiG8a184cKFcW0tGep+A92ntrb2g7i+dLDH9Pb23rd58+a9koXRbFcm1dXVYx3HOQ8Xz8AyG4+feOo27EcpKirqWxRen44Xeh5B6JkTJ048F6YANGDgmfMvR+dIT+/f4bCwTkYwzocoUCyrGG/u2xNOch7e87fv+vi4XUJERqFlIV5YWDjiLmYctN/0f7ROSH19fTsO4M90d3fveOihh14f7LE7d+7smTVr1j4c1KdJBl1dXbsH+LmzsIwb7DEFBQVFkqXRbNdAampqxuO5rsDFxdjmguE8BvfXk4/ergtagBIIpFtLSkq2btiwIfDjHt8yhmfB+vaJVlz+HjvnWmHYofDT9/gfScz9O23VFCIKsjIcuy5HgLoNB/vlme6YSqUezHQ7Woya0brRKoblarsQVC5DePkL3R/DDTv94XHa4lTb0dHxeYTJBRJwbw48d7h2t937WVfca92T4x2IQq/vvY7WzHii9zP6NyBEFGja5QPX4CD9rsHug+6v5xAefoKA0dvvpm50S93b1NTUKHmQi+1C2NFT2t8z0q6vweB5JqDl7GPYn4slwN4UaubObHm3m5Jb9OUJUbToe/6Ts2a0PIa24g1CRGGwFAfp3k2bNv10oBsRHn6xdu3aZ9CtNhGtIS6WtoaGhhbclNfum9FsF1q2/ggBZYXkGJ7TRgh7L8JUDNvyawmgNwKPnqbrukk9G4unu1FUFaF55xsz7mx7/LWPlr8kRBQGK2pra59rbGx8fqAbN27ceBSro+Iz2WxXdXX15WjZynnYOR1anwLbCn4y8PzoR47dlvqS2NYkIYoyy5occ1NfvGi9+zFWZSbyB3SnvNLvKm2R1fE65TJUeZWTrsHyv0+/QmvZlJSUzBjsAbFYrBUtGYfEsGy3C2FnMsLOtTIMWsAQyxEsh7EPtXKz1tXTAc5zZJDZEvQx8P3Nmzc/MdTz62nv2JbyeDxeiseV61ltWMbg8R24XscftXd2drZu27atQ4ZpGPtlN/ZL96n/6/7Az5yG11SCdTta+Z7ue6PMOlG9SCx3BV4Ru7Io2k7WmlrZV1Vc5HdCRHmFA2YKB7JvDnKzjS4cPQOpDge28sGeA7dNRtfWVBz09p+6Tg+eOCB/XAb3Myw/FcOy3S68xndqt1OGx/WFFqweQth4eJDTzW3sp/m439V4rumnXa/jh+5C2HlxsOdOnxGmY3wW6plsA91Hz6Q7ZcyYMTrWSAPXgxpGZAhD7ZdEIvH3WO3F9i/C9i/H8849dRuC1uNYPR3TKSNakq31KZFKph0ihT9026m7aP2jTz9202K28hD5V6qpqekRHGz34CB3m55VNOgdU6m3YbVfQghddmchbJyd6T7YPyew3ImuvV0Z7pZC+HgB639AGLkS+3OlPg6BYT3Czp6BHqCtOcXFxWv0Yqb9P5B0PaAPYft34fJ9CLavSZawnTGEnQ/h4nn9Sxbg/321mexDJW0lCNBrLZ6VRZTm6qmYV+skuUJEvofQsw8HvBeGuNs0CSl8Xl061H0QWu4eIuyczkX4eBAhcWNPT883mpub9wx2R4SdMRqMRhp2TpfuSrsN3VDnSpbQevRhrM4b6DY33XtlO12JydhdFwoR/TfXvSBuFXFMG1FApMeiDAoHvawLAvqcjdeWsXUHweURPd1dRggBaSscyHQfBCMt9viIjJJ2xzmOc72OvZEsIDSVDXkfV+IrpW9yRSJ6gyWFKddZJUQUCO4QY1BxMA18peCBrF69WruzMoa5rq4ur2sKNWPplVHSViL8nq4Uj9iSSq4UInoLfHq+Q4goEHCwrMx0O1o5jkgIoStneqbb8br3eV0xeqBWHvzcNiy/xPU/QrfYv+Gy1jfbjv9nHBeJ3+O5VVVVE8UDMTz9OUJEA7DOEiLyvdra2vOHmmUcWiScxma6EfvFSNBLJBKb4/H4YgSa3yDcPDrYuJ+lS5c2l5WV3ZZpPrLCwkLNJb+QLOlZWXj+V7G0YOnF//sqTiPwuDM4ZRbRQNxZQkR+ZC9btqy8tLR0PC5fhiXjOFQ9HRtdJb+XEBpqbJKeZSUjVFdX9z8HmxFez/RCi87O/tdv2bKl7aqrrvpfDz74YMaft3379mMIqD/F898w2H3QRZex1WowCFp6qv23m5qadg10ewzxr0SIaCBjhYjySgez1tfX/6OMAg7ST6YrF4cO9k/XELcbG6M7VNg55dixY6+Wlw9aNkl/X+WSBbzWBxDGdg12u56KnvWpZEQhVyhEFGg6CSeWZgmv9iFuzyo8ZEOrIaPVbSFa02bKyTIAeuaUfnEcM1RRxH5G3BCDkHR0qDm+WHuHiIhCSas040D7nebm5oMSUghzx9AFlOkusxcuXFiwc+fOHvGOhW6qFdjXq3UKCRmlbGr64DFDTgMS2EnAiIiIMkHg+eFA403CJJlM7sp0u7aszJw5c8jChKNgI+x8EKHr6lyEnWzpvGBD3YeBh4iIQgUHvwPd3d3fbGxs/K2E3NatW3US0IxTZiCMVGl3k3igpqZmBZ7/fMkzhK0hpwFilxYREYWGdmNpZWEEgVckInRQNg74Uwe7XU8BLy8v/3h1dfV6dO8dl9yxEHaWy+DbpfNwbcLFPfj5ezds2PBG8Ue0Cn0VjzWaQRh4iIjItxBeXBywt/S7ehKuWzTQ/bULB8uVq1evfnnLli27JQK0wB9WKzJVXMZtM7D61Nq1a3+wcePGnIRBPFcFQk3FYLfjti0IWL8Sn2DgISIi39KZrhug/9VoIZiAg/jMgR6D661YLHbdunXrvnZ6q4IJaNG4tK6ubkRFSxFYEk1NTVskS9pqg66lzbh4Vab7Yb+MRwi5Bdv3IrbzSVx+Y6Av9lcc23Em7nPuYDV4+kskEhV43KC343naBroeLU0XmW7dUQw8REQUNNrqczcO2LcPdkYPDqiTOzo6NADcLwbh514sI5SupZN14FEITD9DkNGwMneo+2pVagSVt1SmdhxHRgKhqT1T4EGAuvyqq656/vT6PDojOn7OtZIHHLRMRESBg0YfbZ3YlOk+CETLcYAdMgCERAoB5C4xOIXG1q1bj2IfHxvsdgSbM3p7e79YX19/PVrkrkEg+ywC0ocRuDwZQD0UBh4iIgokhJ6foxVh12C3a9cWDrrvx4E2EkVE0wOS78Q+GaoYYa70DRDPdId0uLlQBzdnGlhtAgMPEREFFRoY3Lux7h7sDulJKt8pEbFp06b9CCFfw355UXIIz9eJ59WpG54//fr29vaHcFs2E5S+kOE2VzzAwENERIHV1NTUgm6TBzPdB6Hn0rVr154jEaEtPQgm/4qAsiHLMPKGdNDZhq6oLzc2Nm7DVW8aBL5jx45O7N9/16kdhvuc6Hrbit9ZpoKQnsxozsBDRESBpqc+46D8Uqb74Pb3VlVVFUl0uAgoOxB8voIw8p94/U9h3TGsB7puEssrCCb3dHZ2fgnP80CmiUG1VQn3+1utuZMp+GAbDiYSie8hpG6UPLDm3NniSdMRURjs+uh4T75pEBHlQ319/VQEkwlyclLPsafX7kFY6XEc59Xjx4/v3rZtW69kCT9jNlpwJuK5yvGc+hnajlagFoQvrf+Tt8zBwEOUAQMPEVE4sA4PERERhR4DDxEREYUeAw8RERGFHgMPERERhR4DDxEREYUeA88QbEskbmsVpPCcrNOV5Il5REQULQw8Q5hb7shtFxZJgROOwJNyXfnUtuMIPUJERBQZDDwZaMS5aLIja+cVhKh9R+TuKd2yfW/WNaWIiIgCh1NLZGAh5SyvjIcq7KjVs+JCREQUJQw8GWjQOX9i+BrBNMQVx1hAmIiIooOBJ4OZJbZUloZvF00otmVuGX/1REQUHTzqZXAFun5CMlb5TYrRaLVoModvERFRdDDwZFA3p0DCSM84e/tkB2shIiKKBAaeQZQXWnJBSFtBtNFqfoUjE4r46yciomjgEW8Q505w+goOhtXMUlsmFXPgMhERRQMHcgxiWWW4T90ej9adtyHUPX04Kay7TEQUHHV1dTNc1/2BeMyyrOsaGhpek5Bg4BlAEfbKxVPCv2tWzozLD1/oEZeJh4goMBBExmC1XDyW/jmhwS6tAUwf68jE4vDvmgsmxUJ5FhoREVF/DDwDmFduy7ii8CeByWNOdmsRERGFHQNPPzo7+lnjHCmJR6PpQ+cJIyIiCjsGnn7GIuicj64eOyJdPfVzwllckYiI6HQctNzP2JglCyqikwOnlTgyp9yRl1uTQjRc1dXVY23b3m9ZVol4zHXdmxsbG9cLEdEosIWnn4nFllSWRmdcizbuXDKF43hoZBzHudFE2FH4OX8uRESjxMDTz4oZ8VAXHBxIzZyCyL1mGhULrS6fEHMW1NbW1gsR0SjwMNfPskrve/m+t7NbvvlEl/zkpR7xgxkldt8ZW0TDgfBxDVpd5opZnxIiolHgGJ7TFKFn58JJ3u6Szl5XvvybE5J0ReaW23LN/PyfJTWh2O6bW+v1jpQQDYPx8IGAtbqurm5hQ0PDTiEawpo1axah23WCeMi27T2bNm16QSgwGHhOc/HUmBTGvD1laeeRpPSkc8WeYylJ4HK+u5PKCiw5Z7wjv3g9ISlWXaYMEDouxGqZ5AG60T6D1YeEaAixWOyrWK0RD+H9+E2sbhUKDPZjnGblDO/nz3r0QO8bl7uTIi8czf/ZUXoK/gWTHBkT4/nplFk6dOQFWnneu2rVKk+/tRNReDHwpMWw0/M3pAAAEABJREFUJ66Y5X3g2bEv8ab/P3ogIX5w7oSYlBYw8NDgEDamYLVO8qewoKDgk0JElAUGnrTZpXbfDOJe0vE7Ojv56Z485I/6N9NLbJk2lm8HGhzCxqfQypLvbvBb0K1WKEREI8QjXNq5E2NS4HE5ml3tqTfG75yiXVx+mK1cu7VqZnvfwkXBlA4ZH5P8G4flA0JENEIMPKBTK1w8JSZxj+eTeKU1Kb39GnT2HU9Ja7c/zo4y0aVHweS67kfkZNjwg9uFiGiEGHigvNCSeRWO5/NnPXW4Fy08b27O0f/+od0fgWdeuSNTWY+H3kr/MvwUMhbU1NTUChHRCPDoBlp0T4vveamr1+3r0hrotO9X2vwxjkcD3xp2a1E/CBf1eSg0mJFt2yxESEQjwsADlX2Vhr1t3mnpcmXvAIX9dPzOM0f8M3Fn7Zy48FwtOh3Che/mskIX2xotRChERMMU+cCj43cWTYpJoePtYf5IV0oOd761eUeveak1KQmfVPw7e3xMJrFbi9LSoeIK8Rm0OOl8XpxUlIiGLfJHNq2/c9k078+01bCjoWcg2vpztMsfgacYu+KCiZw9nU5CqPis+BQyz/tZiJCIhivygUdbds6s8PYAr403z7Yk+6aRGEh7j9sXevygAPtj8ZQYDiZCEadhAqHiT8S/CuPx+C1CRDQMkQ88iyY5fWdpeUknCn3iUO+gt2vg0dPT/UB79s6ZgH3CqsuRl65q7Osifwhkf1ZVVcU5AYloSJEPPDVzvJ+tPIkmHh2nM5gOBJ4DJ/wzU/mcMkemsupypKULDQah9WRScXExCxES0ZAi/c1IT8NeYWDC0OMJV147NnigSaZr8fhh5nQ1ZYzVd5r+cy3+OXuMzEqlUtfbtu2XQoND+RyWu4SIfKmmpmY8WmPLkslkha4dx+nB5VYsR7du3XpADIl04JlZavedku61xw8NPn7nlJfbktKD5ON1tefh0HE8l06LycN7En1hjKIHYSdvs6JnYUF1dfWa5ubmzUJEebN06dJSWIlQswj/PT+9nHnq9ljsvyMHQk/fgtZkPTmiBY/5A9a7cNPL+MLV7MXfc6QDzyVTzLz8HXuHnhF9D1qAetCgMtYndf8umRqTGMJXkokncmpra2uwWiABkq4V5KvAg/14AB/ik8VDOEDc0NjY+F3xEL6dT8P+3Ssew2u5AK/lqcFuR6i9HAfI7eIfOpHtqLp929vby7Zv335MAkxPbojH4+/ExXV4v9dIFvC48VhpK9CF+n/8nm/HvtWWn58g/PygqanpF5IDkQ48Kw3NHfXr/b1D3keLEp6cdsIfg4XPGef0ha9u9mpFURCrGOO4XDMfH4wvCRF5bvXq1ecg6HwRQfWPEVS8yBJTsNyMsH0zws9uXL4HXWD/gZaf5yRLkR2ZOr7IkrPGeV9vRgckD2csjJ6pNVAl5nyJo1urzsCAbvIXDQ1YVUvAaCFCfDD6tmYQUVjgM+LtCCAPIuzsxH/f51HY6W8Wls+i5edZtJz+WFsdJQuRDTx6JlKpgVOvX2hNynCLKGc6dT0fOK9W9Gho0PAgwfQBFiIk8saSJUuKEXT+Lz4jHsF/r5Q8wcfTtdiG57Ett8oIu0QiG3jOHu9ImYHA89QIQswTh/zVf7RkWsxIKCR/0DMpsHq/BJcWIvy4EFFOIVysqKio0K4krc3lh1L8pVi+jtaeh9auXTvss0kjGXgK8etaiMDj9fxZ6rf7hx94nm/xVwuPnq110WROMxEV+NakYaFYPIK+/p9gdb94CN/+PsFChBR2iUTCyNkk+nMQdr6Ai9vkZLeSr+DvvSqVSj1RX19/3nDuH8nAo60W2sLjtQ68J19sHf64nF3tKenq9ddZUVfM5DieKEiHhE+KhxB4vo0Pp/XirUlFRUVBbqUiGhJaMo00vTuO83Wsviz+NgufLb9Ea8/5Q90xkoGnrMCWueXev3QdhNwxgiCuZ0S92Oqvbq3FU9mtFQXFxcXXYTVJPIIPpD1NaXpZPIRvfZxFnSgH8LdUK8FQhmUzWnpmZ7pTJAPPgnG2jCvy/qXvPpbqq7I8En6rbqxns80q5TQTEXC7eAgfnNqyo38Mbvqyl87Dt71VQkSRoTWv8GXqIbRWTxzsPpE8kmk3jddtFvrJ/mpbUk6MsIvqdwf9NY5HJxE9d6Ljk+pA5IWampqVWA2rDzwb+BDq7ezsfCPk6GW9TrwVxFpCRDQ689Clfc9gN0Yy8Cye4v34nW4EHZ0uoneEpXWeOjT809hNKIpZcv7EmJEB3pQftm17HQ4e2LZt2+FT/0lffkC8VZ+uKUREEYKWnlVo4b1hoNsiF3gqx6KLpsz7wKNdWa+2jbyQ4JEuV9q6/VOAUJ07wZGyQgaeMEqHgrXirW8P87qcSRci/LQQURT9w0BdW5ELPO+YUSAmGiuOo8H+9SwqJ3cnXdl73F+BZ265IxUMPKGEXHCbePg5oAOUGxsbm/tfr9d5PXgZPlBXV1cmRBQpOjcXura+3v/6yAWe2jlmqgcf7UrJwRMjDy46gegf2v0VePQsrYunsLRJ2GgYwAfDh8Rb/yInh7T156Zv89IYLKOa3JGIggmfbX+Mz7gzTr8uUoFHKysvmmTmwK1VkxNZ5BadQPRln52arlbN4jQTYZNKpW6Wk6HAEzowuaur698Gu11vMzB4+TYWIiSKJM03n+5/RWRoscFCQx99j+7P7nNcBzlrAcIen2WexWjhsdmrFSY2fEI8hG9YPz19sHJ/epveR7w1qbCw8L1CRFF0Q3rKnD6RCjzaLRMzdNR+5kj2X1wPdo68fo/XtFtrMbu1QqO2tvY9WFWKh5LJ5Ppc3Ge0EOw+I0QURcX4+7/u1H8iE3h0/qxFk2NGBiy3drvy2rHsx+EcOO5Ke4+/Ao+6ah6nmQgRT09F1wHJzc3Nm4e6n97HwODl83TyQyGiyMHnyxszu0fmK/vkMbbMKDGT7353oFdGMyXWka6UtPVoYPJXHl09Ky5/85uTU2BQcKF1Zwm6ki4Rb31rhPf9W/GW9uX/TCjI2nHw+sVw7oj3txbSrBAPYVv2YvWyjEIqlfJXpdkQwnth5cKFCwt27tzZE5nAU4mwo6HHhEf2j+49rC1ErV3+a+GpKLLkjHJHdvps+gsaGXwAeFqfJj1Y+c7h3l/vW1RU9NfYLs8+j/RbntYcampqekkokNAa+AxW7xjOfdGip6UQ1oiH8H69r6Gh4VYhvyuYPXt2PQLP/ZHo0tJhO/MM1ZLRmLJjX0JGQysta6jwW+SJWZZcNo3jeIKsurp6JlbXiIdwILg/02Dl/tKDl+8XD1kncboJIm88gy8V92DRltqPYb0Wy/W4/Bms/xNLm+RXvf4TiaNX3D5ZR8bEeGWtkvxK2+jr6Ow8jMDj6ge1+IaDeHwJAs/dz3X77iwyGp70NBKeftFBM/2IByLrY7Bt7xYPIfDcgG/+f4Fv5e1CRKP1Opbv42/3e2g5/f1Qd0ZX+tVY/SX+Di8WwxC4LtV1JFp4ChzpmwDTBJ1OIpGDybBeaPVfC49mr9mljkwZE7l6laGA1p2xWN0oHsIHy0v48NsiI6SP0ceKt8bgZ/ypENFofQVfHGZg+dxwwo5qbGx8AMsl+Bt8F/7bKWb1FSCMxJFrfJElc8vMBJ5n0RWVzEFS0Wkp/DSJ6ClTxlgys5SBJ4gcx7kR365KxEN4/mGP3cnlY0fwM7TyMt/ARFnQrim06FyJoPNFyRJCz314jiW4OOxu79HC3/3Y+vr6qZH4w185I97XHeM1DShPHeqVZA5mhuhIuLKn3X/9RuWFtiyocFiEMHgsfFh5WmhQByt3dnb+u2RJH2ug8nIlurVYiJBohPRvE0GlBi06G2WU8BxPJpNJr6e1eRP8vDOjEXhmmpkWQYsF7j6WyllX1GMH/XfGogadZZVxKXSYeIIE/efX4FvOXPHWfSMZrNxf+rH3ifc+J0Q0Ivj8uKO5ufk3kiN4rv9CiPqumDMt9IFHCw5eOtXM2Gytn3O4M3f9UL/d788SDToeqsBMDyHljokzlL4to5eL5xjKeTU1NcuFiIbrZ+jG+orkmG3bn0foMTV4oyz0gUcnCy2MmWmN2H/c7Qs9ufLU4V7fDVxWOmh5fjkTT1CgC+dCfDtbJh7SAcfom98qo6TPYWDwsn7Q/rkQ0XCcQHeznkGZ88PRpk2b9mP1SzEAf/MloQ88S6ebad3Rd8Le46mcTgnxUqv/5tQ65eozOHt6UCBAmJhLKpctMyZaea5O1yQiogzw+dE0mq7qYWgWM8LdwhOzzY3f0VnOn29J9q1zRc/2Gs2cXF5aNYvzagXBqlWrpmC1TjyUrqz8b5Ij+lwGBi/bnFSUaGj4W7xXPITW50fEALyOcJ9frNNJTCw28xK19s7vj+T+M/rlNn9W+NN9ewa7tXyvoKDgU15O2aDw/D/GN8BWyRF9Ln1O8Rh+xkfQ3VcmRDSo7u7uB8RD6C4zEngk7C0854x3pCRuZvxOInmy6GCuPXnIv3PLLa/kNBN+hoN5IVYfE49lU1k5H885AC1EeJMQ0WAexBeQDvGQfsHB3+ER8V5BaAOPnj79tgmOFBsKPDpY+cCJ3AeeZ48kfVmAUNXMjrMej4/hQ+QjWI0TD6UrKz8sOabPaWLwMlp5PiksREg0IPwNPiZmHBUDQvuHri07Z42LialyMTpDetKDYHKo05WWLn+O45mNLq3K8I97Dyp9598uHkNg8KwlxsvnPk1lbW3te4SI3gJ/gyZaXvTn5KxLPJPQ9kmMK7LkjApzB+NHPKqZo2dptXS5MrFYfOdkqHRkj08HVkdZdXX1WgOFBvUb4FwEhr8WD+C5x1tmZs/VU9TvESJ6E/wNmpr+wUgLT2gDz4QiW6aPNRd4njjoXeDZdzwlC8b5b4DwGAQerXP08J6EJ61blD3HcUwUGtRvZoGfjFNnb0ZAvLy5uflXQm9h27an3aLkX6lUykgLDxwXA0LbH7F4SkyKDBUc1LE7f/ColUPn1NKJRP3ISY+TKi3gQB4/qaurW4jVFULDhoP6pyWAENY8rw+Bg94UoUjCFydjE3yaENoWnqoZ5l6a5qq/vnyMeOW8iY5o8W3Lh7nijApHxqM1rbXbn6fPRxGaoT9r+fHN4mPYX+/UQoRo5dkjAYLftaez3yuEwclCkdTb2+vpGVqmhTLw6DxP50ww99ImFNty3dmFEkVTx1oyo8SSV9qEfGDVqlUTcPD+E6GRsvFtVlt5bpMAMRF4gIEnouLxeKi+OYWyS2vRJEcqCvkN14S4bckVrLrsGwUFBXqadTTT9yjpafxo5RkrAYJwWyoew35h4KFQCGXgWcMDsFGXTWUBQj9IFxq8RSgrCA8laOW5WXLHRNXQGeIx7JeLhCgEQhd4dCDt6tmc2NKkM8fZfTOoU36lUqnrxeNCgxGgZ7fl6s18QjyGMHKBeGjJkiVaEGOVEIVA6I5SWghvZinneDLJtiypnbLgkowAAA/iSURBVMOQmW+cDDMnKmtqat4tuWHiVNuzFy5c6FmTdkVFxbVYscmcQiF0gef8STHh6B3zrprHz8R8qq2trcFqgdCoodUkVwOXTQQee/bs2Z61wLiue60QhUToAs+KSs7vlA+LJsdkQhF3fB4ZKTQYBQg8S+rq6i6UUcLzGCmmBu8TD6xevbocqxohColQBR49M2v+OI4lyQeNOhdM4uDlfEAXzHysqoVyBi0bfyGjhOfwfAxP+uf8UXqsTU7F4/FvIbQF6qw1w/iBFzChSgfTS2yZWMzAkw9a527lzDi7E/PAtm0tNMhdn0PYne/SQoQyCniOvWKAnl1WUVHxeckhvPYrsbpOAgoh8Jh47wyhQAlVOphX7rBbJU90r+s0E+Wsf2SUFhoUj7o0Ig450h5VNyEOus+JIfhZX0BIOVdyQLuyHMe5SwLM0CzfHDMXMKEJPHG8knPGO1Ic4wE3X/TU9BmlbGEzCd0OH8fKu3lNou3G0RQixEHXWODBz4ohpDTW19efJ6NQV1d3RiwW246LkyTAEABNBJ7Z6dpXFBChOTrpRKEXTuLp6Pk0odiSs8Y57NYypKqqKoYD3SeEPKFdRWjl+Zhkqbu7+/diVmUqldpRW1ub1dQiNTU170JQeBKv+20SfC1iAPbXTUKBEZrAoy07C8Yx8ORToWPJokmxvrnMyHvFxcU6xiLQ38QD4FbJ8nPyoYceeh0rE2NJ3qCDjLH8P4SezWidunyo++tgZwSdD+H+v0K4uzcsg5QNdWmpr2D/TRMKhNCMMj+zwu6bxJPyS+cx0/DZnXSFPHe7kKdw4JyLbotrGxoa7pXs/BrLGjEM270aXVyrse3aCvEIrnoU6524/lUsOth2Hv5/NtbLw3gmFlq6jiDAidfSAfPupUuXvnP79u3DDrf4vbx7FO8pylJoEsKa2Sx85wdnVHDgsgn4VrkSq1GN16Bhy7oQIUJFg+QZDsiXYPlTBIBvYr0RV30dy224XBvW084ReHaKOVeUlZU9jVayi4e4n6XdjVieweUNWC8RMio0LTzLprMkgh9o687yyrj8ob1byDujPYOIRmSpFiLEN/LHZYSSyeR/xWKxfxQyavPmzS/id/aaGJhcNW02wuMjCDEbsX4GQfdZLIfxdzpPtwGX5+L6Rbh85mmP0bMrdwgZE4qUMG2sJXPLOXDEL9bMisvdzzLweCVdaHCteK+7s7Nz6rZt21rFh6qqqiqKi4v346KJM2U+h2XEg4H1wIuD4Es42M0XMu3nYriWEH7P+ne5VstinV4aa6AyWbjufevWrfvkhg0bkkJGhKJLa8k0TifhJ0umxaSQ+dMz6bmeTPzt/tCvYUelt+2HYgC+ob9r1apVUyQL+H39QCgftom/VbS1tdUJGROKFp5Vs8zP1P3YgV5JGR6XO6vM7qt143dxx5Kl0+Py0J6EUG6hmb4Mqw+JATjI/6v4nG4jAsUHxGNa5yYej+sg8RHPSN/T0/N1PPYL+hxCJj0kPuc4zvux+i8hIwL/B6gDZE3P4dTW7cotDx+XXsOJ57qzC+VTb8/5lDmeqJnDwOOFVCp1s23bJgoN7mxsbPT9+ALdRoRAHaC6ULx3c3V19R3Nzc0jmhR069atR7CN2hLFitgGNTQ0vIz9fgAXs2qZM0HnQUPXbBFaK7uEPBf4wDMPrR4lcbP9Wa+0JeXgiZTxFp6mXYnABJ5laOEZg3fXiV6h3NHpDkwVGvR9685pdFu/Lh5LFyL8SDY/K5lM/h98m2fgMW89lr8Sn8J7qqi4uPg9uPg9Ic8FfgzP+WjdKTIc23YeSUo+qswcQMg61JmSIBiDEDq/ggN5cqm2tlY/GCvFezpY+T8kINLbamqUvI6fGvE3LLQKPYbV/UJG4b3xNbSiGKm6PArvFzIi0IFHB8aeN9GRAsdcC4+LpPO7g719a9N6kmhdag1I4EEIvWgKhyzkmJFT0XGAuAdN7B0SELqtus1igBYiRPB8p2QB3ZF/iu0MzH4Ng/R74+/E367IdkA8jUygA8+4QrtvhnSTHVrHEq7sas9P6EigD+33R4LRR6QDly/oa33j6XO5oEXKtICcGICfE6TurD6Gtzmr4NnU1LQP2/k/hIzq7u7WLsgD4l9OPB43evp8VAU68EwstqSyxOxLOIRupaPd+Qo8Ik8dTkoyAI08GnPml9syoYiBJxdwoPy0mLGzoaHh1xIw6W02Ul0Xv4vlWohQsoDt/CesNgsZkx4Q/DfiY3hPMfAYEOjAo8UGTc+fte94Slq78zdP1N6OlLR0B6Nba2aZI1PHcn6z0aqurp6J1TViALpdviXB9S9iCLpJRnx6+qmHtre366zkzwkZg6Cp7+t7xb8WpwuKkocCezTSwpVa4M7g8J2+cTt7jqXkWE/+As9+tDAd6QzGxJylBVbfGCu28YxOehoJz/9WcRA+jub/70pAdXZ2fkdfg5ixLttxF+lJJuuwrW0SENjWfQb3rRdSJSUlf4LX0CQ+hVaeDwp5KrCBRzf87ZPNDortSbny3NGk9OaxgaWly0XgCUYLjwadFTPiYjHxZA2tOzq5441iAD5wfxSkwcr96bbraxADtIhgQUHBn0uWGhsbdyHILsfF18X/dmO5HEuQA4/oFA67d+++WvxbkJBlCzwW2MBTUWj+tOfupMjzLfmd9uR4wpUXWs3XAMrWBRNjEmevVtYcx7lR67+IAejOCtxg5f4Mv4Yb04E0K5s2bXoa26szbD8rPoUWkVexWqoBTUJg586dPWgJXIvX9W3xGT0DsK6u7jIhzwT2ULRyZlwcw1vfnXRl97H8t648frBXkgEJPOOKLOMtcSFi4YPZVKHBnU1NTY9IwKVfg5HByzAOgXRU03zomVtYXYbf8y/EZ7BNd3d1db29oaHhNQkRHcSMAHcTwuaVfqvRg+25XsgzgQ08tXMKxLRWdCdpheV8e64FgScoTTxw5Tzzv6swqKmpuVa/9YkB+KD9ZwkJk68FP0u7tUbVaYtA0V5aWroSz/VnWA5K/u1GGFiDUHC9nyePHS2EzY2JRGIh9vnD4hN6tta6detYsdUjgQw8WnBw2XTzrQa/2pvwRcvKq+0p6QpKEw/UzeFs9tlIz4ruOR2Mim/yoSltr6/F1ABbDaQIplfLKOn4EgSMb2Hbz8C2/20+BginWzv+srW19WyEgS0SAVu3bj2A/X5FMpms1gHNWPL5wfooguYN+l4Q8kQgA8854x0pzENBu9/s90fRPx00vWNvcCapGldky1nj+KVlJLTOCw6my8QA/JwfBnmwcn/pwcs/FENyGUx123EA/gKCz1Qc/G4RM91zWpTv8/iZs9Ha9OUdO3Z0SsQ0Nzdvxn6vxe/yXGQe02cq/gy/6zrs+4sRNH8q5JlADq64fFpc8uGZw/4J3r/a1yt1c4PTVbS8MibPtvCLy3BpnRfL0Olt+FmBH6zcn74m7L8PiwH4OVUIqAtxwMpZOEkHUO2a++fa2tpleD21tm2vwv9zMqhVp7jAdt+Hi/diux8U6pP+Hd5QVVV1S0FBQZXjOKvx/1XYX2+zcvgHied7Cqt7ent7v79ly5bdQkZYc+5sCU7fCGjdnbvrSuQyw6FHx+4suafNN2dHzSmz5eF15RIUv96XkA80dvRViw6SXR8dz8448g0ciEsKCwuXIfxchIPm+bjqAhyHzxrGQ1/G8gSWx9Ga8BhaEhqFhq26unoyws8avYj9fjbWk7HfJ2BdOoyHv4jleTzuWTzmuUQisQMhx7dn5oVZ4Fp4po21ZfIY8z1xTx7q9dWp4Dqfl05xofOJBcEU/M6m43f3Bx+c5UYUVOmWn8b08oaamprxaC2oQKuEfgsqQ6jpxAG6FQfZo2i1OCQ0Kujy0sHk308vb7JmzZrp2NcTEWbG6X5PJpPHsG5HMD2mA9KFfCNwgUenk8jHQf4Rn4zfOd2zR5Jy+fRgBJ7xRbbMH+cw8BB5AC02OuDYV6dYR8XmzZv3YrVXyPcCNWhZz/Q5s8Lum7LAJB23/9sD/gs8fgxhg9Hf2cLxjtGpQIiIiE4JVOApwtHy3IkxiRne6iNdKdl33H9DnbbvTQSm4rKG1YumxGRsnImHiIjMC1TgKcHBcuEE86c3a3Xlbh/WvTnc6WIJThfRmejSKilg4CEiIvMCFXjKCy2ZVWp+k587kpSuXv8Fno6E2zd7e1DowOX55azHQ0RE5gUq8CyZHpNiwwUHtctIZ0jv8WEJmeMJkVfaglPbRsfv1M7JTw0lIiKKtkAFnhUzzJ9Upq0or3ekxI9DZbTV6QWEsd4Anfh0OUKrxV4tIiIyLDCnpVt9iyVPHDJ7ZtLhE65vW1E0hD2D7rbfHkgYb/nKlp7xVlFgydHuQNW7JCKigAtMpWU9nE8Za75Bqhd9Wq04OPu1FUUnUi0vtAM1OWdLZ0p6AtIqxUrLREThEJgWHk1l+4+zaF1/3cmT014QERHR4AI5eSgRERHRSDDwEBERUegx8BAREVHoMfAQERFR6DHwEBERUegx8BAREVHoMfAQERFR6DHwEBERUegx8BAREVHoMfAQERFR6DHwEBERUegx8BAREVHoMfAQERFR6DHwEBERUegx8BAREVHoMfAQERFR6DHwEBERUegx8BAREVHoMfAQERFR6NlYuoWIBpIQIiIKBQ08x4WI3sp1O4SIiEIBgcfaLUQ0AOs1ISKiUEDgcZ8XIhqA+6wQEVEo2K7Iz4WI3sp2HhYiIgoF27aSW8XlwGWifnosSTDwEBGFhJ1wuw6JZT0pRHQa9/FkUfygEBFRKNhTkgeOua77gIjFU3CJwBWr17LsjZM6ynmWFhFRSNiP3bQ4IalkAz7m9woRiSXyetKxNj12E78EEBGFhdbhkYky8Wl8zD+MT3pXiKJM/wZc92e7xzQ/IUREFBrWqQsz7mybH5PeX+KqKUIUVZZ7MGU5S3Z/uOIVISKi0LBPXXjto+UvpURuxcUuIYoi1+3EN4BbGXaIiMLHPv0/u18b/2Os/kmEXVsUOa4r1jdf3TP+XiEiotB5U+CRO6xUIh77GuLOBkusXiGKAH2vY7mvMBX7qv4NCBERhY7d/4rXP1h2RHqtz+HiT4UtPRR+LtznJuT2F24qOyxERBRK1mA3LFjfPrHb7v2sJe4tYlnFQhQ+Ol7tn7RVsy/oExFRaFkZb73DtefObHk3mnm+gbtO0opsQhR0J089P6iD9PvGrbEbi4go9IYVYGbd1TrPTqa+hJaeFQg/lThexIQocLSQoBbYtB7uFfvLemaiEBFRJAy/xeZHP3Jmnahe5CTdetdNrcVDL8S1BULkdzo5rmU92TeFSirZoIU2WUWZiChaRtxFddF6N36opK3E6UpMdiW+EgeQlXiac3BUmYGDSgnuEhei/OnGchzvyd14Tz6PFsmf21Zyq06Sq/PG9U2lQkREkfP/AQAA//88SKkNAAAABklEQVQDAA6qYV8FYNJoAAAAAElFTkSuQmCC\";\n export default img;","import { useState } from 'react'\nimport { TextInput, PasswordInput, Button, Stack, Anchor, Divider, Group, Center, Text } from '@mantine/core'\nimport { useForm } from '@mantine/form'\nimport { IconMail, IconLock, IconArrowRight, IconBrandGoogle, IconBrandGithub } from '@tabler/icons-react'\nimport { useAuthStore } from '../authStore.js'\nimport 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","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]}
package/package.json CHANGED
@@ -1,14 +1,21 @@
1
1
  {
2
2
  "name": "@riligar/auth-react",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "type": "module",
5
- "description": "Auth SDK for React with JWT and JWKS",
5
+ "description": "Auth SDK for React with JWT, Mantine UI components, and full authentication flows",
6
6
  "main": "dist/index.js",
7
7
  "module": "dist/index.esm.js",
8
8
  "types": "dist/index.d.ts",
9
9
  "files": [
10
10
  "dist"
11
11
  ],
12
+ "exports": {
13
+ ".": {
14
+ "import": "./dist/index.esm.js",
15
+ "require": "./dist/index.js",
16
+ "types": "./dist/index.d.ts"
17
+ }
18
+ },
12
19
  "scripts": {
13
20
  "build": "rollup -c",
14
21
  "dev": "rollup -c -w",
@@ -17,18 +24,41 @@
17
24
  "release:dry-run": "semantic-release --dry-run"
18
25
  },
19
26
  "peerDependencies": {
20
- "react": "^18.0.0",
21
- "react-dom": "^18.0.0",
22
- "react-router-dom": "^6.0.0"
27
+ "react": "^18.0.0 || ^19.0.0",
28
+ "react-dom": "^18.0.0 || ^19.0.0",
29
+ "react-router-dom": "^6.0.0 || ^7.0.0",
30
+ "@mantine/core": "^8.0.0",
31
+ "@mantine/form": "^8.0.0",
32
+ "@mantine/hooks": "^8.0.0",
33
+ "@mantine/notifications": "^8.0.0",
34
+ "@tabler/icons-react": "^3.0.0"
35
+ },
36
+ "peerDependenciesMeta": {
37
+ "@mantine/core": {
38
+ "optional": true
39
+ },
40
+ "@mantine/form": {
41
+ "optional": true
42
+ },
43
+ "@mantine/hooks": {
44
+ "optional": true
45
+ },
46
+ "@mantine/notifications": {
47
+ "optional": true
48
+ },
49
+ "@tabler/icons-react": {
50
+ "optional": true
51
+ }
23
52
  },
24
53
  "dependencies": {
25
- "zustand": "^4.4.7"
54
+ "zustand": "^5.0.0"
26
55
  },
27
56
  "devDependencies": {
28
57
  "@babel/core": "^7.23.6",
29
58
  "@babel/preset-react": "^7.23.3",
30
59
  "@rollup/plugin-babel": "^6.0.4",
31
60
  "@rollup/plugin-commonjs": "^25.0.7",
61
+ "@rollup/plugin-image": "^3.0.3",
32
62
  "@rollup/plugin-node-resolve": "^15.2.3",
33
63
  "@semantic-release/changelog": "^6.0.3",
34
64
  "@semantic-release/git": "^10.0.1",
@@ -41,7 +71,7 @@
41
71
  },
42
72
  "repository": {
43
73
  "type": "git",
44
- "url": "https://github.com/riligar-applications"
74
+ "url": "https://github.com/riligar-solutions/auth-react"
45
75
  },
46
76
  "publishConfig": {
47
77
  "access": "public"