import React, { createContext, useContext, useState, useEffect } from 'react'; import { createClient } from '@supabase/supabase-js'; const supabase = createClient( import.meta.env.PUBLIC_SUPABASE_URL, import.meta.env.PUBLIC_SUPABASE_ANON_KEY ); 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(() => { const getSession = async () => { setLoading(true); const { data: { session } } = await supabase.auth.getSession(); if (session?.user) { setUser(session.user); } else { setUser(null); } setLoading(false); }; getSession(); const { data: listener } = supabase.auth.onAuthStateChange((_event, session) => { setUser(session?.user || null); }); return () => { listener?.subscription.unsubscribe(); }; }, []); const value = { user, loading, supabase }; return ( {children} ); }