import { useParams } from 'common' import { useOrganizationsQuery } from 'data/organizations/organizations-query' import { useIsFeatureEnabled } from 'hooks/misc/useIsFeatureEnabled' import { useSelectedOrganizationQuery } from 'hooks/misc/useSelectedOrganization' import { Boxes } from 'lucide-react' import { useRouter } from 'next/router' import { useState } from 'react' import { Badge, cn } from 'ui' import { GenericSkeletonLoader, ShimmeringLoader } from 'ui-patterns' import { AppLayoutDropdownError, AppLayoutDropdownWithPopover } from './AppLayoutDropdown' import { OrganizationDropdownCommandContent } from './OrganizationDropdownCommandContent' import { useEmbeddedCloseHandler } from './useEmbeddedCloseHandler' interface OrganizationDropdownProps { embedded?: boolean className?: string onClose?: () => void } export const OrganizationDropdown = ({ embedded = false, className, onClose, }: OrganizationDropdownProps = {}) => { const router = useRouter() const { slug: routeSlug } = useParams() const { data: selectedOrganization } = useSelectedOrganizationQuery() const { data: organizations, isPending: isLoadingOrganizations, isError, } = useOrganizationsQuery() const organizationCreationEnabled = useIsFeatureEnabled('organizations:create') const slug = selectedOrganization?.slug const orgName = selectedOrganization?.name const [open, setOpen] = useState(false) const close = useEmbeddedCloseHandler(embedded, onClose, setOpen) if (isLoadingOrganizations && !embedded) return if (isError) return const commandContent = ( ) if (embedded) return isLoadingOrganizations ? : commandContent return ( {!!selectedOrganization && ( {selectedOrganization?.plan.name} )} } commandContent={commandContent} open={open} onOpenChange={setOpen} /> ) }