import { Button } from '@/components/ui/button' import { Label } from '@/components/ui/label' import { Badge } from '@/components/ui/badge' import { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectTrigger, SelectValue, } from '@/components/ui/select' import { Bot, Plus, X, User, Bookmark, Save, Settings } from 'lucide-react' interface SavedAssistant { id: string name: string systemPrompt: string temperature: number maxTokens: number model?: string ragEnabled?: boolean retrievalCount?: number createdAt: string } interface SystemPromptPreset { name: string prompt: string } interface SelectedAssistant { id: string name: string type: 'user'|'template'|'new' originalTemplate?: string } interface AssistantSelectorProps { savedAssistants: SavedAssistant[] loadSavedAssistant: (id: string) => void openSaveDialog: () => void presets: SystemPromptPreset[] onPresetSelect: (presetName: string) => void isLoading: boolean selectedAssistant: SelectedAssistant | null createNewAssistant: () => void clearCurrentAssistant: () => void openRenameDialog: () => void systemPrompt: string } export function AssistantSelector({ savedAssistants, loadSavedAssistant, openSaveDialog, presets, onPresetSelect, isLoading, selectedAssistant, createNewAssistant, clearCurrentAssistant, openRenameDialog, systemPrompt }: AssistantSelectorProps) { const handleAssistantSelect = (value: string) => { if (value === 'create_new') { createNewAssistant() } else if (value === 'clear_current') { clearCurrentAssistant() } else if (value.startsWith('user_')) { // Check if it's a saved assistant (starts with user_) const assistantId = value.replace('user_', '') loadSavedAssistant(assistantId) } else { // It's a template preset onPresetSelect(value) } } // Get current selection value for the Select component const getCurrentValue = () => { if (!selectedAssistant) return '' if (selectedAssistant.type === 'user') { return `user_${selectedAssistant.id}` } else if (selectedAssistant.type === 'new') { return 'new_assistant' } else { return selectedAssistant.id } } // Get badge for assistant type const getAssistantBadge = (type: 'user'|'template'|'new') => { switch (type) { case 'user': return { variant: 'secondary' as const, text: 'Mine' } case 'template': return { variant: 'outline' as const, text: 'Template' } case 'new': return { variant: 'default' as const, text: 'New', className: 'bg-green-100 text-green-700' } } } const totalAssistants = savedAssistants.length + presets.length return (