"use client" import { createContext, useContext, useState, useEffect, type ReactNode } from "react" import { mockUsers, type User } from "@/lib/mock-data" interface AuthContextType { user: User | null login: (email: string, password: string) => Promise register: (username: string, email: string, password: string) => Promise logout: () => void isLoading: boolean } const AuthContext = createContext(undefined) export function AuthProvider({ children }: { children: ReactNode }) { const [user, setUser] = useState(null) const [isLoading, setIsLoading] = useState(true) useEffect(() => { // Check for stored user session const storedUser = localStorage.getItem("buildmate-user") if (storedUser) { setUser(JSON.parse(storedUser)) } setIsLoading(false) }, []) const login = async (email: string, password: string): Promise => { setIsLoading(true) console.log("Login attempt:", { email, password }) console.log("Available mock users:", mockUsers.map(u => ({ email: u.email, username: u.username }))) // Simulate API call await new Promise((resolve) => setTimeout(resolve, 1000)) // Mock authentication - in real app, this would validate against backend const foundUser = mockUsers.find((u) => u.email === email) console.log("Found user:", foundUser) console.log("Password check:", password === "password") if (foundUser && password === "password") { console.log("Login successful!") setUser(foundUser) localStorage.setItem("buildmate-user", JSON.stringify(foundUser)) setIsLoading(false) return true } console.log("Login failed - user not found or wrong password") setIsLoading(false) return false } const register = async (username: string, email: string, password: string): Promise => { setIsLoading(true) // Simulate API call await new Promise((resolve) => setTimeout(resolve, 1000)) // Mock registration - check if user already exists const existingUser = mockUsers.find((u) => u.email === email || u.username === username) if (existingUser) { setIsLoading(false) return false } // Create new user const newUser: User = { id: `user-${Date.now()}`, username, email, builds: [], likedBuilds: [], createdAt: new Date(), } mockUsers.push(newUser) setUser(newUser) localStorage.setItem("buildmate-user", JSON.stringify(newUser)) setIsLoading(false) return true } const logout = () => { setUser(null) localStorage.removeItem("buildmate-user") } return {children} } export function useAuth() { const context = useContext(AuthContext) if (context === undefined) { throw new Error("useAuth must be used within an AuthProvider") } return context }