feat: implement Supabase authentication with Google OAuth

Add Supabase client, middleware, and auth pages; update header for auth state.

Co-authored-by: ASOwnerYT <[email protected]>
This commit is contained in:
v0
2026-03-22 23:07:11 +00:00
co-authored by ASOwnerYT
parent 84200ac175
commit 1386f6e549
13 changed files with 1073 additions and 18 deletions
+55
View File
@@ -0,0 +1,55 @@
import Link from 'next/link'
import { Mail, ArrowLeft } from 'lucide-react'
import { Button } from '@/components/ui/button'
export default function SignUpSuccessPage() {
return (
<div className="min-h-screen bg-background flex items-center justify-center p-4">
{/* Background elements */}
<div className="absolute inset-0 overflow-hidden pointer-events-none">
<div className="absolute top-1/4 left-1/4 w-96 h-96 bg-primary/5 rounded-full blur-3xl" />
<div className="absolute bottom-1/4 right-1/4 w-96 h-96 bg-primary/5 rounded-full blur-3xl" />
</div>
<div className="relative w-full max-w-md">
{/* Back to home */}
<Link
href="/"
className="inline-flex items-center gap-2 text-sm text-muted-foreground hover:text-foreground transition-colors mb-8"
>
<ArrowLeft className="w-4 h-4" />
Back to home
</Link>
{/* Card */}
<div className="bg-card border border-border rounded-2xl p-8 text-center">
{/* Icon */}
<div className="w-16 h-16 bg-primary/10 rounded-full flex items-center justify-center mx-auto mb-6">
<Mail className="w-8 h-8 text-primary" />
</div>
{/* Content */}
<h1 className="text-2xl font-bold mb-2">Check your email</h1>
<p className="text-muted-foreground mb-6">
We&apos;ve sent you a confirmation link. Please check your email and click the link to verify your account.
</p>
{/* Actions */}
<div className="space-y-3">
<Button asChild className="w-full h-12 bg-primary hover:bg-primary/90 text-primary-foreground">
<Link href="/auth/login">
Back to sign in
</Link>
</Button>
<p className="text-xs text-muted-foreground">
Didn&apos;t receive the email? Check your spam folder or{' '}
<Link href="/auth/sign-up" className="text-primary hover:underline">
try again
</Link>
</p>
</div>
</div>
</div>
</div>
)
}