import { useBreakpoint, useParams } from 'common' import { useOrganizationsQuery } from 'data/organizations/organizations-query' import { useOrgProjectsInfiniteQuery } from 'data/projects/org-projects-infinite-query' import { useIsFeatureEnabled } from 'hooks/misc/useIsFeatureEnabled' import { useSelectedOrganizationQuery } from 'hooks/misc/useSelectedOrganization' import { Boxes, ChevronsUpDown, Plus } from 'lucide-react' import Link from 'next/link' import { useRouter } from 'next/router' import { useState } from 'react' import { Command_Shadcn_, CommandEmpty_Shadcn_, CommandGroup_Shadcn_, CommandInput_Shadcn_, CommandItem_Shadcn_, CommandList_Shadcn_, CommandSeparator_Shadcn_, Popover_Shadcn_, PopoverContent_Shadcn_, PopoverTrigger_Shadcn_, ScrollArea, SidebarMenu, SidebarMenuButton, SidebarMenuItem, } from 'ui' import { ShimmeringLoader } from 'ui-patterns/ShimmeringLoader' import { OrgCommandItem } from 'components/layouts/AppLayout/OrgCommandItem' import { OrgSelectorSheet } from './OrgSelectorSheet' export function OrgSelector() { const router = useRouter() const { slug: routeSlug } = useParams() const { data: selectedOrganization } = useSelectedOrganizationQuery() const { data: organizations, isPending: isLoadingOrganizations } = useOrganizationsQuery() const organizationCreationEnabled = useIsFeatureEnabled('organizations:create') const [open, setOpen] = useState(false) const slug = selectedOrganization?.slug const selectedOrgInitial = selectedOrganization?.name?.trim().charAt(0).toUpperCase() || 'O' const { data: projects } = useOrgProjectsInfiniteQuery( { slug, limit: 1 }, { enabled: Boolean(slug) } ) const numProjects = projects?.pages[0]?.pagination.count const projectsLabel = typeof numProjects === 'number' ? `${numProjects} project${numProjects === 1 ? '' : 's'}` : 'No projects' const isMobile = useBreakpoint('md') if (isLoadingOrganizations) { return (
All Organizations
New organization