'use client' import { Check, ChevronDown, Home, Plus } from 'lucide-react' import { useRouter } from 'next/navigation' import { useState } from 'react' import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from '@/components/ui/primitives/dropdown-menu' import { cn } from '@/lib/utils' import { useProjectStore } from '../lib/projects/store' import { NewProjectDialog } from './new-project-dialog' /** * ProjectDropdown - Shows active project and allows switching between projects * Note: useProjectScene() is called in the Editor component, not here. * Having it in both places caused duplicate subscriptions and 2x server action calls. */ export function ProjectDropdown() { const router = useRouter() // Use project store const projects = useProjectStore((state) => state.projects) const activeProject = useProjectStore((state) => state.activeProject) const isLoading = useProjectStore((state) => state.isLoading) const setActiveProject = useProjectStore((state) => state.setActiveProject) const fetchProjects = useProjectStore((state) => state.fetchProjects) const [isNewProjectDialogOpen, setIsNewProjectDialogOpen] = useState(false) const handleProjectSelect = async (projectId: string) => { await setActiveProject(projectId) } const handleAddNew = () => { setIsNewProjectDialogOpen(true) } const handleProjectCreated = (projectId: string) => { router.push(`/editor/${projectId}`) } return ( <> {activeProject ? activeProject.name : projects.length > 0 ? 'Select Project' : 'Add Project'} {/* Project list */} {projects.length > 0 ? ( {projects.map((project) => ( activeProject?.id === project.id ? null : handleProjectSelect(project.id) } > {project.name} {activeProject?.id === project.id && ( )} ))} ) : ( No projects yet )} {/* Add new project option */} Add new project > ) }