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