Arc
ComponentsBlocksDocsPricingTry the demo
Introduction
Installation
Theming
Motion
AI and MCP
Changelog
Metrics dashboard
KPI drilldown
Metric explorer
Revenue explorer
MRR waterfall
Cohort retention
Usage forecast
Journey flow
Choropleth explorer
Connected scatter
Market terminal
Budget variance
Small multiples
Line replay
AI chat
AI composer
AI answerNew
Model pickerNew
Model arenaNew
Prompt studioNew
Document extractionNew
Agent memoryNew
AI side panel
Agent run
Agent tasksNew
Agent approvalsNew
Agent routinesNew
Agent orchestratorNew
MCP serversNew
Knowledge baseNew
Eval suiteNew
SidebarPro4
Page header
Command palette
Notification center
Selection toolbarNewPro
Empty states
Search resultsPro
Login and sign up5
Onboarding illustrationNewPro
OTP input
Multi-step formPro
Settings page
Settings command
Security settings
Billing overview
Usage billing
Cancel flow
Team members
Invite people
Team directory
Roles and permissions
API keys
Webhooks
Integrations
Environment variables
Plan comparison
Pricing calculatorPro
Usage pricingPro
Cart drawerPro
Checkout summaryPro
Live checkoutNewPro
Invoice studio
Wallet card
Product listing
Product detail
Inbox triage
Support conversation
Support widget
Help center
File upload
Media playerPro
Week calendar
Availability picker
Project board
Release readiness
Kanban board
Hero section
Hero signupPro
Scroll storyPro
Spotlight gridPro
Feature bentoPro
Comparison table
Logo marquee
Studio perspectivesPro
Stats band
Changelog feed
FAQ section
Contact section
Team showcasePro
Blog grid
Site header
Site footer
CTA section
Newsletter signup
Activity terrain
Revenue globe
Customer galaxy
Semantic zoom
Layout morph
Exploded viewNew
What’s new31 new
BlocksModel picker

Model picker

Pro

A model picker in one quiet pill: open it to choose from featured models with a one line note each, set the reasoning effort, or browse every other model by provider, and the pill swaps to your choice in place.

Live block · sample data

When to use

  • Choosing the model and effort for a chat, an agent or a playground.
  • A default model setting with a short review of what the chosen model costs and how much context it takes.

When not to use

  • Comparing two models' answers side by side; use model-arena.
  • A full prompt box with attachments and tools; use ai-composer, which has its own model chip.
  • Choosing from a plain list of options with no descriptions; use the select or dropdown-menu component.

Installation

Pro source and install commands unlock with a Pro plan.

Usage

Drop it into a composer or settings row. Pass models, value and onChange to control the selection, and effort with onEffortChange for reasoning models; with no props it shows a sample lineup of current models.

example.tsx
1import { ModelPicker } from "@/components/arc/blocks/model-picker/model-picker";2 3export function ComposerModel({ model, setModel, effort, setEffort }) {4  return (5    <ModelPicker6      value={model}7      onValueChange={id => setModel(id)}8      effort={effort}9      onEffortChange={setEffort}10      featured={["claude-opus-5-5", "claude-sonnet-5-5", "claude-haiku-5-5"]}11      showSummary={false}12    />13  );14}

API reference

ModelPicker

A model picker for an AI product. One quiet pill names the current model and its effort and opens a short menu: the featured models with a one line description each, an Effort submenu for reasoning models and every other model under More models, grouped by provider. Choosing a model closes the menu, the pill morphs to the new model, and the review underneath updates its description, context window, prices and effort. On phones the submenus open as pages inside the menu with a Back row.

PropTypeDefaultDescription
modelsPickerModel[]sampleModelsThe catalog. Each model has id (the API id the picker reports), name, provider, blurb (the short menu line), description, context, maxOutput, price { input, output } in USD per 1M tokens, released, and optional tag, effort { levels, default }, mark and color. Anthropic prices in the sample are real; every other price and limit is a sample value.
providersPickerProvider[]sampleProvidersProviders in the order More models groups them, each { id, name, mark, color? }. A model without its own mark uses its provider's.
featuredstring[]["claude-opus-5-5", "claude-sonnet-5-5", "gpt-6.1-sol", "gemini-4-argon"]Model ids listed at the top of the menu, in order. Every other model sits under More models. With your own models and no featured list, the first four are featured.
valuestring–The chosen model id (controlled).
defaultValuestring–The first chosen model when uncontrolled. Defaults to the first featured model.
onValueChange(id: string, model: PickerModel) => void–Called when someone picks a model.
effort"low" | "medium" | "high" | "xhigh" | "max"–Effort for the chosen model (controlled). A level the model does not accept snaps to the nearest level it does.
defaultEffortEffort–The first effort when uncontrolled. Defaults to the chosen model's own default.
onEffortChange(effort: Effort) => void–Called when the effort changes, including when a new model snaps it to a level it accepts.
openboolean–Whether the menu is open (controlled).
defaultOpenbooleanfalseOpens the menu on first render.
onOpenChange(open: boolean) => void–Called when the menu opens or closes.
showSummarybooleantrueShows the review under the pill: description, context, input and output price, effort, and a short confirmation after each change. Turn it off to use the pill alone, for example inside a composer toolbar.
classNamestring–Class on the root element.

Keyboard interactions

Enter, Space, Arrow down
On the pill, opens the menu and focuses the current model.
Arrow uporArrow down
Moves through the models and rows. The highlight follows.
Type a letter
Jumps to the next model whose name starts with it.
Enter, Space
Chooses the highlighted model or effort and closes the menu.
Arrow rightorArrow left
Opens and closes the Effort and More models submenus, or their pages on phones.
Escape
Closes the menu and returns focus to the pill.

Accessibility

  • Built on the Radix dropdown menu: the featured models, the effort levels and the other models are radio groups, so a screen reader announces each as checked or not.
  • The pill's name includes the current model and effort, for example "Model: Claude Opus 5.5, medium effort. Change model".
  • Each change is announced through a polite status region, and the review under the pill is a labelled section.
  • Brand marks are decorative next to the model name and hidden from assistive technology.
  • Focus returns to the pill when the menu closes. A pointer choice does not draw the keyboard focus ring; keyboard use keeps Arc's shared ring.

Motion

  • The menu opens from the pill edge with a short offset, a slight scale and a quick fade, and reverses from where it is if closed mid-open.
  • One highlight glides between rows on the snappy spring for the pointer and jumps for the keyboard, so moving through the list never flickers.
  • On a change, the pill's mark and name crossfade and the pill width springs to the new name, so it never snaps.
  • The review's values crossfade in place with no character morphing; every slot keeps its height.
  • On phones, moving between menu pages slides the content a few pixels and the menu height springs to the new page.
  • Reduced motion swaps everything in place and keeps every state and announcement.

Responsive behavior

  • The pill truncates long names inside narrow toolbars and keeps its chevron visible.
  • Below 640px the Effort and More models submenus become pages inside the same menu with a Back row, so nothing opens off screen.
  • Long lists scroll inside the menu, and the review's four values fold into a two by two grid under 400px.

Performance

  • The menu mounts only while open. The highlight is one element per menu surface, moved with transforms.
  • The pill width is measured with a ResizeObserver and animated once per change.

Notes for AI

Give your coding assistant the Markdown reference instead of screenshots.

  • Use it wherever a person chooses which model answers: a composer toolbar, a settings row or an API playground. Keep the featured list short (three to five) and put the rest under More models.
  • Pass blurb as a few words on what the model is for; it is the only line under the name in the menu. Put the longer sentence in description for the review.
  • Only models with an effort field show the Effort row. Effort levels are per model, and a level the new model does not accept snaps to the nearest one it does.
  • Show real prices only for models you have verified. The sample marks non-Anthropic prices as sample values.
/components/blocks/model-picker/markdown

The full library index for assistants is at /llms.txt.

Related

AI composerProBlockThe prompt box at the bottom of an AI app: files upload in place, / opens commands, @ inserts mentions, a model and effort menu sits in the toolbar, and the send button turns into a stop control ringed by the reply's progress.Model arenaProBlockA blind side by side model comparison in one card: send one prompt to two models, watch both answers stream at the same pace, vote for the better one, then reveal which model wrote each.AI chatProBlockA full-screen AI chat where answers stream in as markdown with folding reasoning, tool chips and cited sources. People can switch chats and models, edit or retry a message into versions, rate replies and stop a reply mid-stream.Context windowProComponentAn AI context window as a grid of 200 cells: the system prompt, tools, files, summary and messages fill it in order, a threshold row marks where compaction starts, and sending a message, attaching a file or compacting shows exactly how much still fits.Dropdown menuComponentA focused list of actions anchored to a trigger.
PreviousAI answerNextModel arena
Arc · 101 block pagesllms.txt

On this page

  • Preview
  • When to use
  • When not to use
  • Installation
  • Usage
  • API reference
  • Keyboard
  • Accessibility
  • Motion
  • Responsive behavior
  • Performance
  • Notes for AI
  • Related
View as Markdown

The default flagship for complex coding, long agent runs and careful analysis. Effort sets how long it thinks.

Context
1M tokens
Input
$4.00
Output
$20.00
Effort
Medium

Prices per million tokens. Non-Anthropic prices are sample values