import React, { createContext, useContext, useState, useEffect } from 'react'; const AuthContext = createContext(); export function useAuth() { const context = useContext(AuthContext); if (!context) { throw new Error('useAuth must be used within an AuthProvider'); } return context; } export function AuthProvider({ children }) { const [user, setUser] = useState(null); const [loading, setLoading] = useState(true); useEffect(() => { // Initialize with demo user for development const demoUser = { id: 'demo-user-123', name: 'Demo User', email: 'demo@aethex.dev', verifiedDomain: 'demo.aethex', domainVerifiedAt: new Date().toISOString(), isPremium: false, avatar: null }; setUser(demoUser); setLoading(false); }, []); const login = async (email, password) => { // Mock login - in production, call actual API try { const apiUrl = import.meta.env.VITE_API_URL || 'http://localhost:3000'; const response = await fetch(`${apiUrl}/api/auth/login`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email, password }) }); if (response.ok) { const data = await response.json(); setUser(data.user); localStorage.setItem('token', data.token); return { success: true }; } return { success: false, error: 'Login failed' }; } catch (error) { console.error('Login error:', error); return { success: false, error: error.message }; } }; const logout = () => { setUser(null); localStorage.removeItem('token'); }; const updateUser = (updates) => { setUser(prev => ({ ...prev, ...updates })); }; const value = { user, loading, login, logout, updateUser, isAuthenticated: !!user }; return ( {children} ); } export default AuthContext;