import React, { 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 type { ToolApprovalTimeoutAction } from '@shared/types'; export const ToolApprovalSettingsPanel: React.FC = () => { const [expanded, setExpanded] = useState(false); const [localSeconds, setLocalSeconds] = useState(''); const settings = useStore((s) => s.toolApprovalSettings); const updateSettings = useStore((s) => s.updateToolApprovalSettings); return ( <> {/* Toggle button — rendered inline in parent layout */} {/* Collapsible panel — full-width, below toggle */} {expanded && (
{/* 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 )}
)} ); };