import type { EnvironmentId } from "@t3tools/contracts"; import { CloudIcon, MonitorIcon } from "lucide-react"; import { memo, useMemo } from "react"; import type { EnvironmentOption } from "./BranchToolbar.logic"; import { Select, SelectGroup, SelectGroupLabel, SelectItem, SelectPopup, SelectTrigger, SelectValue, } from "./ui/select"; interface BranchToolbarEnvironmentSelectorProps { envLocked: boolean; environmentId: EnvironmentId; availableEnvironments: readonly EnvironmentOption[]; onEnvironmentChange: (environmentId: EnvironmentId) => void; } export const BranchToolbarEnvironmentSelector = memo(function BranchToolbarEnvironmentSelector({ envLocked, environmentId, availableEnvironments, onEnvironmentChange, }: BranchToolbarEnvironmentSelectorProps) { const activeEnvironment = useMemo(() => { return availableEnvironments.find((env) => env.environmentId === environmentId) ?? null; }, [availableEnvironments, environmentId]); const environmentItems = useMemo( () => availableEnvironments.map((env) => ({ value: env.environmentId, label: env.label, })), [availableEnvironments], ); if (envLocked) { return ( {activeEnvironment?.isPrimary ? ( ) : ( )} {activeEnvironment?.label ?? "Run on"} ); } return ( ); });