import { ProviderInteractionMode, RuntimeMode } from "@t3tools/contracts"; import { memo, type ReactNode } from "react"; import { EllipsisIcon, ListTodoIcon } from "lucide-react"; import { Button } from "../ui/button"; import { Menu, MenuItem, MenuPopup, MenuRadioGroup, MenuRadioItem, MenuSeparator as MenuDivider, MenuTrigger, } from "../ui/menu"; export const CompactComposerControlsMenu = memo(function CompactComposerControlsMenu(props: { activePlan: boolean; interactionMode: ProviderInteractionMode; planSidebarLabel: string; planSidebarOpen: boolean; runtimeMode: RuntimeMode; showInteractionModeToggle: boolean; traitsMenuContent?: ReactNode; onToggleInteractionMode: () => void; onTogglePlanSidebar: () => void; onRuntimeModeChange: (mode: RuntimeMode) => void; }) { return ( } > {props.traitsMenuContent ? ( <> {props.traitsMenuContent} ) : null} {props.showInteractionModeToggle ? ( <>
Mode
{ if (!value || value === props.interactionMode) return; props.onToggleInteractionMode(); }} > Chat Plan ) : null}
Access
{ if (!value || value === props.runtimeMode) return; props.onRuntimeModeChange(value as RuntimeMode); }} > Supervised Auto-accept edits Auto Full access {props.activePlan ? ( <> {props.planSidebarOpen ? `Hide ${props.planSidebarLabel.toLowerCase()} sidebar` : `Show ${props.planSidebarLabel.toLowerCase()} sidebar`} ) : null}
); });