import { AlertCircle, Check, ChevronsUpDown, ListTree, MessageCircle } from 'lucide-react' import Link from 'next/link' import { useRouter } from 'next/router' import { useState } from 'react' import { useParams } from 'common' import ShimmeringLoader from 'components/ui/ShimmeringLoader' import { Branch, useBranchesQuery } from 'data/branches/branches-query' import { useSelectedProject } from 'hooks/misc/useSelectedProject' import { Badge, Button, CommandEmpty_Shadcn_, CommandGroup_Shadcn_, CommandInput_Shadcn_, CommandItem_Shadcn_, CommandList_Shadcn_, CommandSeparator_Shadcn_, Command_Shadcn_, PopoverContent_Shadcn_, PopoverTrigger_Shadcn_, Popover_Shadcn_, ScrollArea, } from 'ui' import { sanitizeRoute } from './ProjectDropdown' const BranchLink = ({ branch, isSelected, setOpen, }: { branch: Branch isSelected: boolean setOpen: (value: boolean) => void }) => { const router = useRouter() const sanitizedRoute = sanitizeRoute(router.route, router.query) const href = sanitizedRoute?.replace('[ref]', branch.project_ref) ?? `/project/${branch.project_ref}` return ( { setOpen(false) router.push(href) }} onClick={() => { setOpen(false) }} >

{branch.name}

{isSelected && }
) } interface BranchDropdownProps { isNewNav?: boolean } const BranchDropdown = ({ isNewNav = false }: BranchDropdownProps) => { const router = useRouter() const { ref } = useParams() const projectDetails = useSelectedProject() const isBranch = projectDetails?.parent_project_ref !== undefined const projectRef = projectDetails !== undefined ? (isBranch ? projectDetails.parent_project_ref : ref) : undefined const { data: branches, isLoading, isError, isSuccess } = useBranchesQuery({ projectRef }) const [open, setOpen] = useState(false) const selectedBranch = branches?.find((branch) => branch.project_ref === ref) const BRANCHING_GITHUB_DISCUSSION_LINK = 'https://github.com/orgs/supabase/discussions/18937' return ( <> {isLoading && } {isError && (

Failed to load branches

)} {isSuccess && branches.length > 0 && (
No branches found {branches?.map((branch) => ( ))} { setOpen(false) router.push(`/project/${ref}/branches`) }} onClick={() => setOpen(false)} >

Manage branches

{ setOpen(false) window?.open(BRANCHING_GITHUB_DISCUSSION_LINK, '_blank')?.focus() }} onClick={() => setOpen(false)} > { setOpen(false) }} className="w-full flex gap-2" >

Branching feedback

Join Github Discussion

)} ) } export default BranchDropdown