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 ( ); });