'use client' import { Check, ChevronDown } from 'lucide-react' import { cn } from '@/lib/utils' import { Command, CommandEmpty, CommandGroup, CommandItem, CommandList, } from '@/components/ui/command' import { Popover, PopoverContent, PopoverTrigger, } from '@/components/ui/popover' import { useEdition } from '@/contexts/edition-context' import { useState } from 'react' const statusConfig: Record = { DRAFT: { bg: 'bg-amber-50 dark:bg-amber-950/50', text: 'text-amber-700 dark:text-amber-400', dot: 'bg-amber-500', }, ACTIVE: { bg: 'bg-emerald-50 dark:bg-emerald-950/50', text: 'text-emerald-700 dark:text-emerald-400', dot: 'bg-emerald-500', }, ARCHIVED: { bg: 'bg-slate-100 dark:bg-slate-800/50', text: 'text-slate-600 dark:text-slate-400', dot: 'bg-slate-400', }, } export function EditionSelector() { const { currentEdition, editions, setCurrentEdition, isLoading } = useEdition() const [open, setOpen] = useState(false) if (isLoading) { return (
--
) } if (editions.length === 0) { return (
?

No editions

Create one to start

) } const status = currentEdition ? statusConfig[currentEdition.status] : statusConfig.DRAFT return ( No editions found {editions.map((edition) => { const editionStatus = statusConfig[edition.status] || statusConfig.DRAFT const isSelected = currentEdition?.id === edition.id return ( { setCurrentEdition(edition.id) setOpen(false) }} className={cn( 'group/item flex items-center gap-3 rounded-lg px-2.5 py-2.5 cursor-pointer transition-colors', isSelected ? 'bg-slate-100 dark:bg-slate-800' : 'hover:bg-slate-50 dark:hover:bg-slate-800/50' )} > {/* Year badge in dropdown */}
{String(edition.year).slice(-2)}
{/* Edition info */}

{edition.year}

{edition.status.toLowerCase()}
{/* Check mark */} {isSelected && ( )} ) })} ) }