import classNames from 'classnames'; import { memo, useMemo } from 'react'; import { useActiveEnvironment } from '../hooks/useActiveEnvironment'; import { useEnvironmentsBreakdown } from '../hooks/useEnvironmentsBreakdown'; import { editEnvironment } from '../lib/editEnvironment'; import { setWorkspaceSearchParams } from '../lib/setWorkspaceSearchParams'; import type { ButtonProps } from './core/Button'; import { Button } from './core/Button'; import type { DropdownItem } from './core/Dropdown'; import { Dropdown } from './core/Dropdown'; import { Icon } from './core/Icon'; import { EnvironmentColorIndicator } from './EnvironmentColorIndicator'; type Props = { className?: string; } & Pick; export const EnvironmentActionsDropdown = memo(function EnvironmentActionsDropdown({ className, ...buttonProps }: Props) { const { subEnvironments, baseEnvironment } = useEnvironmentsBreakdown(); const activeEnvironment = useActiveEnvironment(); const items: DropdownItem[] = useMemo( () => [ ...subEnvironments.map( (e) => ({ key: e.id, label: e.name, rightSlot: , leftSlot: e.id === activeEnvironment?.id ? : , onSelect: async () => { if (e.id !== activeEnvironment?.id) { setWorkspaceSearchParams({ environment_id: e.id }); } else { setWorkspaceSearchParams({ environment_id: null }); } }, }), [activeEnvironment?.id], ), ...((subEnvironments.length > 0 ? [{ type: 'separator', label: 'Environments' }] : []) as DropdownItem[]), { label: 'Manage Environments', hotKeyAction: 'environment_editor.toggle', leftSlot: , onSelect: () => editEnvironment(activeEnvironment), }, ], [subEnvironments, activeEnvironment], ); const hasBaseVars = (baseEnvironment?.variables ?? []).filter((v) => v.enabled && (v.name || v.value)).length > 0; return ( ); });