Model Selector

A comprehensive LLM model selector dropdown featuring provider logos, keyboard shortcuts, and context size badges.

The ModelSelector component provides a search-enabled popover menu for switching between LLM providers (Anthropic, OpenAI, Google Gemini, Mistral, Ollama, DeepSeek).

Usage

tsx
import * as React from "react"import {  ModelSelector,  ModelSelectorTrigger,  ModelSelectorContent,  ModelSelectorInput,  ModelSelectorList,  ModelSelectorEmpty,  ModelSelectorGroup,  ModelSelectorItem,  ModelSelectorLogo,  ModelSelectorName,  Button,} from "@celestia-project/ui"import { SparkleIcon } from "@phosphor-icons/react"
export function MyModelSelector() {  const [model, setModel] = React.useState("claude-3-7-sonnet")
  return (    <ModelSelector>      <ModelSelectorTrigger render={<Button variant="outline" size="sm" className="gap-2 font-mono text-xs" />}>        <SparkleIcon className="size-3.5 text-primary" weight="fill" />        <span>{model}</span>      </ModelSelectorTrigger>      <ModelSelectorContent>        <ModelSelectorInput placeholder="Search models..." />        <ModelSelectorList>          <ModelSelectorEmpty>No models found.</ModelSelectorEmpty>          <ModelSelectorGroup heading="Anthropic">            <ModelSelectorItem onSelect={() => setModel("claude-3-7-sonnet")}>              <ModelSelectorLogo provider="anthropic" />              <ModelSelectorName>Claude 3.7 Sonnet</ModelSelectorName>            </ModelSelectorItem>          </ModelSelectorGroup>          <ModelSelectorGroup heading="OpenAI">            <ModelSelectorItem onSelect={() => setModel("gpt-4o")}>              <ModelSelectorLogo provider="openai" />              <ModelSelectorName>GPT-4o</ModelSelectorName>            </ModelSelectorItem>          </ModelSelectorGroup>        </ModelSelectorList>      </ModelSelectorContent>    </ModelSelector>  )}

Props Reference

ComponentPropTypeDescription
ModelSelectorLogoprovider"anthropic" | "openai" | "google" | "mistral" | "ollama" | "deepseek"Renders authentic vector logo.
ModelSelectorInputplaceholderstringSearch input placeholder text.
ModelSelectorItemonSelect() => voidSelection callback handler.