"use client" import * as React from "react" import {Building2, Check, ChevronsUpDown, Plus} from "lucide-react" import {useRouter} from "next/navigation" import {authClient} from "@/lib/auth/auth-client" import {cn} from "@/lib/utils" import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu" import { SidebarMenuButton, useSidebar, } from "@/components/ui/sidebar" import {CreateOrganizationModal} from "@/components/wrappers/dashboard/organization/create-organisation-modal" import {Skeleton} from "@/components/ui/skeleton" export function OrganizationCombobox() { const router = useRouter() const {state} = useSidebar() const {data: organizations, isPending: isPendingList, refetch} = authClient.useListOrganizations() const { data: activeOrganization, isPending: isPendingActive, refetch: refetchActiveOrga } = authClient.useActiveOrganization() const [openModal, setOpenModal] = React.useState(false) const [isOpen, setIsOpen] = React.useState(false) const handleSelect = async (slug: string) => { if (activeOrganization?.slug === slug) return await authClient.organization.setActive({organizationSlug: slug}) router.refresh() setIsOpen(false) } const handleReload = () => { refetch(); refetchActiveOrga(); router.refresh(); }; const orgs = organizations || [] if (isPendingList || isPendingActive) { return ( ) } return ( <> {activeOrganization?.logo ? ( ) : ( )} {activeOrganization?.name || "Select Organization"} {orgs.map((org) => { const isActive = activeOrganization?.id === org.id; return ( handleSelect(org.slug)} className={cn( "group gap-2 p-1 cursor-pointer rounded-lg mb-1 last:mb-0 transition-colors", isActive ? "bg-primary/10 text-primary border border-primary/20" : "focus:bg-accent hover:bg-accent/50 border border-transparent" )}> {org.logo ? ( ) : ( )} {org.name} {isActive && ( )} ) })} setOpenModal(true)} > Create organization > ) }