diff --git a/ui/desktop/src/components/BottomMenu.tsx b/ui/desktop/src/components/BottomMenu.tsx index 57e3ee58..c94d012e 100644 --- a/ui/desktop/src/components/BottomMenu.tsx +++ b/ui/desktop/src/components/BottomMenu.tsx @@ -6,6 +6,7 @@ import { ModelRadioList } from './settings/models/ModelRadioList'; import { Document, ChevronUp, ChevronDown } from './icons'; import type { View } from '../App'; import { BottomMenuModeSelection } from './BottomMenuModeSelection'; +import { RadioInput } from './ui/RadioInput'; export default function BottomMenu({ hasMessages, @@ -96,34 +97,14 @@ export default function BottomMenu({
( - + RenderItem={({ model, isSelected, onSelect }) => ( + )} />
{ {/* Dropdown Menu */} {isGooseModeMenuOpen && (
-
+
{filterGooseModes(gooseMode, all_goose_modes, previousApproveModel).map((mode) => ( ( + +); + interface ModeSelectionItemProps { currentMode: string; mode: GooseMode; @@ -88,60 +100,29 @@ export function ModeSelectionItem({ setChecked(currentMode === mode.key); }, [currentMode, mode.key]); + const showConfigure = + !isApproveModeConfigure && (mode.key == 'approve' || mode.key == 'smart_approve'); + return (
-
+ showConfigure ? setIsDislogOpen(true)} /> : null + } + isChecked={checked} onClick={() => handleModeChange(mode.key)} - > -
-

- {mode.label} -

- {showDescription && ( -

- {mode.description} -

- )} -
-
- {!isApproveModeConfigure && (mode.key == 'approve' || mode.key == 'smart_approve') && ( - - )} - handleModeChange(mode.key)} - className="peer sr-only" - /> -
-
-
+ value={mode.key} + />
-
- {isDislogOpen ? ( - { - setIsDislogOpen(false); - }} - handleModeChange={handleModeChange} - currentMode={currentMode} - /> - ) : null} -
+ {isDislogOpen ? ( + setIsDislogOpen(false)} + handleModeChange={handleModeChange} + currentMode={currentMode} + /> + ) : null}
); diff --git a/ui/desktop/src/components/settings/models/ModelRadioList.tsx b/ui/desktop/src/components/settings/models/ModelRadioList.tsx index 7fd4eac8..e9e084df 100644 --- a/ui/desktop/src/components/settings/models/ModelRadioList.tsx +++ b/ui/desktop/src/components/settings/models/ModelRadioList.tsx @@ -5,11 +5,7 @@ import { useHandleModelSelection } from './utils'; import type { View } from '@/src/App'; interface ModelRadioListProps { - renderItem: (props: { - model: Model; - isSelected: boolean; - onSelect: () => void; - }) => React.ReactNode; + RenderItem: React.FC<{ model: Model; isSelected: boolean; onSelect: () => void }>; className?: string; } @@ -29,7 +25,7 @@ export function SeeMoreModelsButtons({ setView }: { setView: (view: View) => voi ); } -export function ModelRadioList({ renderItem, className = '' }: ModelRadioListProps) { +export function ModelRadioList({ RenderItem, className = '' }: ModelRadioListProps) { const { recentModels } = useRecentModels(); const { currentModel } = useModel(); const handleModelSelection = useHandleModelSelection(); @@ -53,13 +49,14 @@ export function ModelRadioList({ renderItem, className = '' }: ModelRadioListPro return (
- {recentModels.map((model) => - renderItem({ - model, - isSelected: selectedModel === model.name, - onSelect: () => handleRadioChange(model), - }) - )} + {recentModels.map((model) => ( + handleRadioChange(model)} + /> + ))}
); } diff --git a/ui/desktop/src/components/settings/models/RecentModels.tsx b/ui/desktop/src/components/settings/models/RecentModels.tsx index ecfb7095..4df115c6 100644 --- a/ui/desktop/src/components/settings/models/RecentModels.tsx +++ b/ui/desktop/src/components/settings/models/RecentModels.tsx @@ -137,7 +137,7 @@ export function RecentModelsRadio({ setView }: { setView: (view: View) => void }
( + RenderItem={({ model, isSelected, onSelect }) => (