'use client'; import { useState } from 'react'; import { RiArrowDownSLine, RiCheckLine } from '@remixicon/react'; import { ModelSelector, ModelSelectorContent, ModelSelectorEmpty, ModelSelectorGroup, ModelSelectorInput, ModelSelectorItem, ModelSelectorList, ModelSelectorName, ModelSelectorTrigger, } from '@/components/ai-elements/model-selector'; import { Button } from '@/components/ui/button'; import { openRouterModels, type OpenRouterModelId } from '@/lib/openrouter'; const providers: Record = { anthropic: 'Anthropic', openai: 'OpenAI', google: 'Google', 'x-ai': 'SpaceXAI', 'z-ai': 'Z.ai', moonshotai: 'MoonshotAI', minimax: 'MiniMax', deepseek: 'DeepSeek', meta: 'Meta', qwen: 'Qwen', }; const modelGroups = Object.entries(providers).map(([id, name]) => ({ name, models: openRouterModels.filter((model) => model.id.startsWith(`${id}/`)), })); interface ChatModelSelectorProps { value: OpenRouterModelId; onChange: (modelId: OpenRouterModelId) => void; disabled?: boolean; } export function ChatModelSelector({ value, onChange, disabled }: ChatModelSelectorProps) { const [open, setOpen] = useState(false); const selectedModel = openRouterModels.find((model) => model.id === value); return ( No models found. {modelGroups.map((group) => ( {group.models.map((model) => ( { onChange(model.id); setOpen(false); }} > {model.name} {model.id === value && ( <> ))} ))} ); }