Compare commits

..

No commits in common. "fe81271ab3537531ff70bdbefc85b99e3f1b474d" and "465017cda9d41ab4645d2a8e047f018c22b75f10" have entirely different histories.

2 changed files with 23 additions and 78 deletions

View file

@ -177,7 +177,6 @@ class Show(SQLModel, table=True):
bandcamp_link: Optional[str] = Field(default=None) bandcamp_link: Optional[str] = Field(default=None)
nugs_link: Optional[str] = Field(default=None) nugs_link: Optional[str] = Field(default=None)
youtube_link: Optional[str] = Field(default=None) youtube_link: Optional[str] = Field(default=None)
relisten_link: Optional[str] = Field(default=None, description="Link to Relisten.net or archive.org")
vertical: Vertical = Relationship(back_populates="shows") vertical: Vertical = Relationship(back_populates="shows")
venue: Optional[Venue] = Relationship(back_populates="shows") venue: Optional[Venue] = Relationship(back_populates="shows")

View file

@ -1,7 +1,7 @@
"use client" "use client"
import { useRouter } from "next/navigation" import { useRouter } from "next/navigation"
import { ChevronDown, Music } from "lucide-react" import { ChevronDown } from "lucide-react"
import { Button } from "@/components/ui/button" import { Button } from "@/components/ui/button"
import { import {
DropdownMenu, DropdownMenu,
@ -9,93 +9,39 @@ import {
DropdownMenuItem, DropdownMenuItem,
DropdownMenuTrigger, DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu" } from "@/components/ui/dropdown-menu"
import {
Sheet,
SheetContent,
SheetHeader,
SheetTitle,
SheetTrigger,
} from "@/components/ui/sheet"
import { useVertical, VERTICALS, VerticalSlug } from "@/contexts/vertical-context" import { useVertical, VERTICALS, VerticalSlug } from "@/contexts/vertical-context"
import { useState } from "react"
export function BandSelector() { export function BandSelector() {
const { current, setCurrent } = useVertical() const { current, setCurrent } = useVertical()
const router = useRouter() const router = useRouter()
const [sheetOpen, setSheetOpen] = useState(false)
const handleSelect = (slug: VerticalSlug) => { const handleSelect = (slug: VerticalSlug) => {
setCurrent(slug) setCurrent(slug)
router.push(`/${slug}`) router.push(`/${slug}`)
setSheetOpen(false)
} }
// Desktop: Dropdown menu
// Mobile: Sheet drawer
return ( return (
<> <DropdownMenu>
{/* Desktop Dropdown (hidden on mobile) */} <DropdownMenuTrigger asChild>
<div className="hidden md:block"> <Button
<DropdownMenu> variant="ghost"
<DropdownMenuTrigger asChild> className="flex items-center gap-2 font-bold text-lg"
<Button >
variant="ghost" <span>{current.name}</span>
className="flex items-center gap-2 font-bold text-lg" <ChevronDown className="h-4 w-4 opacity-50" />
> </Button>
<span>{current.name}</span> </DropdownMenuTrigger>
<ChevronDown className="h-4 w-4 opacity-50" /> <DropdownMenuContent align="start" className="w-56">
</Button> {VERTICALS.map((vertical) => (
</DropdownMenuTrigger> <DropdownMenuItem
<DropdownMenuContent align="start" className="w-56"> key={vertical.slug}
{VERTICALS.map((vertical) => ( onClick={() => handleSelect(vertical.slug)}
<DropdownMenuItem className={`cursor-pointer ${vertical.slug === current.slug ? "font-bold" : ""}`}
key={vertical.slug} >
onClick={() => handleSelect(vertical.slug)} {vertical.name}
className={`cursor-pointer ${vertical.slug === current.slug ? "font-bold" : ""}`} </DropdownMenuItem>
> ))}
{vertical.name} </DropdownMenuContent>
</DropdownMenuItem> </DropdownMenu>
))}
</DropdownMenuContent>
</DropdownMenu>
</div>
{/* Mobile Sheet (hidden on desktop) */}
<div className="md:hidden">
<Sheet open={sheetOpen} onOpenChange={setSheetOpen}>
<SheetTrigger asChild>
<Button
variant="ghost"
size="lg"
className="flex items-center gap-2 font-bold text-lg px-3"
>
<span>{current.name}</span>
<ChevronDown className="h-4 w-4 opacity-50" />
</Button>
</SheetTrigger>
<SheetContent side="bottom" className="h-[60vh]">
<SheetHeader>
<SheetTitle className="flex items-center gap-2">
<Music className="h-5 w-5" />
Switch Band
</SheetTitle>
</SheetHeader>
<div className="grid gap-2 py-4">
{VERTICALS.map((vertical) => (
<Button
key={vertical.slug}
variant={vertical.slug === current.slug ? "default" : "outline"}
size="lg"
className="w-full justify-start text-lg h-14"
onClick={() => handleSelect(vertical.slug)}
>
{vertical.name}
</Button>
))}
</div>
</SheetContent>
</Sheet>
</div>
</>
) )
} }