import { useParams } from 'common' 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' import PartnerIcon from '@/components/ui/PartnerIcon' import { useOrganizationsQuery } from '@/data/organizations/organizations-query' import { useIsFeatureEnabled } from '@/hooks/misc/useIsFeatureEnabled' import { useSelectedOrganizationQuery } from '@/hooks/misc/useSelectedOrganization' import { useTrack } from '@/lib/telemetry/track' 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) const track = useTrack() const handleOpenChange = (next: boolean) => { if (next) track('header_organization_dropdown_opened') setOpen(next) } if (isLoadingOrganizations && !embedded) return if (isError) return const commandContent = ( ) if (embedded) return isLoadingOrganizations ? : commandContent return ( {!!selectedOrganization && } {!!selectedOrganization && ( {selectedOrganization?.plan.name} )} } commandContent={commandContent} open={open} onOpenChange={handleOpenChange} /> ) }