import React, { useCallback, useState } from 'react'; import { Checkbox } from '@renderer/components/ui/checkbox'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@renderer/components/ui/select'; import { useStore } from '@renderer/store'; import { ChevronDown, ChevronRight, Settings } from 'lucide-react'; import { useShallow } from 'zustand/react/shallow'; import type { ToolApprovalSettings, ToolApprovalTimeoutAction } from '@shared/types'; export const ToolApprovalSettingsToggle: React.FC<{ expanded: boolean; onToggle: () => void }> = ({ expanded, onToggle, }) => ( ); export const ToolApprovalSettingsContent: React.FC<{ expanded: boolean; teamName?: string; }> = ({ expanded, teamName }) => { const [localSeconds, setLocalSeconds] = useState(''); const settings = useStore(useShallow((s) => s.toolApprovalSettings)); const rawUpdateSettings = useStore((s) => s.updateToolApprovalSettings); const updateSettings = useCallback( (patch: Partial) => rawUpdateSettings(patch, teamName), [rawUpdateSettings, teamName] ); if (!expanded) return null; return (
{/* Auto-allow ALL */} {/* Separator */}
{/* Auto-allow file edits */} {/* Auto-allow safe bash */} {/* Separator */}
{/* Timeout section */}
On timeout: {settings.timeoutAction !== 'wait' && ( <> after setLocalSeconds(e.target.value)} onBlur={() => { const val = parseInt(localSeconds, 10); if (!isNaN(val) && val >= 5 && val <= 300) { void updateSettings({ timeoutSeconds: val }); } setLocalSeconds(''); }} onKeyDown={(e) => { if (e.key === 'Enter') { e.currentTarget.blur(); } }} className="w-14 rounded border px-1.5 py-0.5 text-center text-xs" style={{ backgroundColor: 'var(--color-surface-raised)', borderColor: 'var(--color-border)', color: 'var(--color-text)', }} /> sec )}
); };