import { Menu, useMenuState, MenuItem, MenuButton, MenuStateReturn, } from 'reakit' import classNames from 'classnames' import IVAvatar from '~/components/IVAvatar' import IconChevronDown from '~/icons/compiled/ChevronDown' import IconCheck from '~/icons/compiled/Check' import { useEffect } from 'react' import useEnvSwitcher from '~/utils/useOrgEnvSwitcher' import { useOrganization } from '../DashboardContext' import { useOrgParams } from '~/utils/organization' function MenuHeader({ label }) { return (

{label}

) } function MenuListItem({ onClick, label, isActive, ...menu }: MenuStateReturn & { onClick: () => void label: string isActive?: boolean }) { return ( {isActive && ( )} {label} ) } export function MobileEnvSwitcherButton(props: { onToggleSwitcher: (visible: boolean) => void }) { const currentOrg = useOrganization() const { onToggleSwitcher } = props const menu = useMenuState({ animated: 200, gutter: -58 }) const { envSlug, orgEnvSlug } = useOrgParams() const { envOptions, currentEnvName, switchToEnvironment } = useEnvSwitcher({ organization: currentOrg, envSlug, orgEnvSlug, }) useEffect(() => { onToggleSwitcher(menu.visible) }, [onToggleSwitcher, menu.visible]) return (
{currentOrg.name} {currentEnvName && ( {currentEnvName} )}
{envOptions.length > 1 && (
{envOptions.map(env => ( switchToEnvironment(env.path)} label={env.name} isActive={env.isCurrent} /> ))}
)}
) } export default function MobileEnvSwitcher({ onToggleSwitcher, }: { onToggleSwitcher: (visible: boolean) => void }) { return }