'use client' import { useState, useEffect } from 'react' import { createClient } from '@/lib/supabase/client' import { useRouter } from 'next/navigation' export default function OnboardingPage() { const [user, setUser] = useState(null) const [loading, setLoading] = useState(false) const [channelName, setChannelName] = useState('') const [channelSlug, setChannelSlug] = useState('') const [bio, setBio] = useState('') const [category, setCategory] = useState('creative') const [error, setError] = useState('') const router = useRouter() const supabase = createClient() useEffect(() => { async function getUser() { const { data: { user } } = await supabase.auth.getUser() setUser(user) } getUser() }, []) // Auto-generate slug from channel name const handleNameChange = (name: string) => { setChannelName(name) const slug = name .toLowerCase() .replace(/[^a-z0-9]+/g, '-') .replace(/^-+|-+$/g, '') setChannelSlug(slug) } const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() setLoading(true) setError('') try { const response = await fetch('/api/auth/create-channel', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ name: channelName, slug: channelSlug, bio, category, }), }) if (!response.ok) { const data = await response.json() setError(data.error || 'Failed to create channel') return } // Redirect to dashboard router.push('/dashboard') } catch (err) { setError('An error occurred. Please try again.') console.error(err) } finally { setLoading(false) } } if (!user) { return (

Please sign in first

) } return (

Create Your Channel

{error && (
{error}
)}
handleNameChange(e.target.value)} placeholder="My Awesome Channel" className="w-full bg-gray-900 border border-gray-700 rounded px-4 py-2 text-white placeholder-gray-500 focus:outline-none focus:border-purple-500" />
aethex.live/ setChannelSlug(e.target.value)} className="flex-1 bg-gray-900 border border-gray-700 rounded ml-2 px-4 py-2 text-white focus:outline-none focus:border-purple-500" />