"use client" import { useState, useEffect } from "react" import { useRouter } from "next/navigation" import { Button } from "@/components/ui/button" import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import { Checkbox } from "@/components/ui/checkbox" import { useAuth } from "@/contexts/auth-context" import { getApiUrl } from "@/lib/api-config" interface Vertical { id: number name: string slug: string description: string | null } export function BandOnboarding({ onComplete }: { onComplete?: () => void }) { const [verticals, setVerticals] = useState([]) const [selected, setSelected] = useState([]) const [loading, setLoading] = useState(true) const [saving, setSaving] = useState(false) const { token } = useAuth() const router = useRouter() useEffect(() => { async function fetchVerticals() { try { const res = await fetch(`${getApiUrl()}/verticals`) if (res.ok) { const data = await res.json() setVerticals(data) } } catch (err) { console.error("Failed to fetch verticals:", err) } finally { setLoading(false) } } fetchVerticals() }, []) const toggleVertical = (id: number) => { setSelected(prev => prev.includes(id) ? prev.filter(v => v !== id) : [...prev, id] ) } const handleSubmit = async () => { if (selected.length === 0) return setSaving(true) try { const res = await fetch(`${getApiUrl()}/verticals/preferences/bulk`, { method: "POST", headers: { "Content-Type": "application/json", "Authorization": `Bearer ${token}` }, body: JSON.stringify({ vertical_ids: selected, display_mode: "primary" }) }) if (res.ok) { if (onComplete) { onComplete() } else { // Navigate to first selected band const firstVertical = verticals.find(v => v.id === selected[0]) if (firstVertical) { router.push(`/${firstVertical.slug}`) } else { router.push("/") } } } } catch (err) { console.error("Failed to save preferences:", err) } finally { setSaving(false) } } if (loading) { return (
Loading bands...
) } return (

Pick Your Bands

Select the bands you follow. You can change this anytime.

{verticals.map((vertical) => ( toggleVertical(vertical.id)} >
toggleVertical(vertical.id)} /> {vertical.name}
{vertical.description && ( {vertical.description} )}
))}
) }