import { useAuth } from '../contexts/AuthContext' import { useNavigate } from 'react-router-dom' import { useEffect, useState } from 'react' import { GoogleSignInButton } from '../components/GoogleSignInButton' import { TreeAnimation } from '../components/TreeAnimation' import { PageLoader } from '../components/PageLoader' export default function LoginPage() { const { user, loading, signInWithGoogle, authError } = useAuth() const navigate = useNavigate() const [signingIn, setSigningIn] = useState(false) const [error, setError] = useState(null) useEffect(() => { if (loading) return if (user) navigate('/write', { replace: true }) }, [user, loading, navigate]) async function handleGoogleSignIn() { setError(null) setSigningIn(true) try { await signInWithGoogle() } catch (e) { setError(e instanceof Error ? e.message : 'Sign-in failed') } finally { setSigningIn(false) } } if (loading || signingIn) { return } return (
{/* ── Left: animated tree hero ─────────────────── */}

Grow your gratitude.

One small moment at a time.

{/* ── Right: login panel ───────────────────────── */}
🌱

Grateful Journal

A private space for gratitude and reflection.
No feeds. No noise. Just you and your thoughts.

🔒 End-to-end encrypted. We never read your entries.

{(error || authError) && (

{error || authError}

)}
) }