Theme: Smoke
Background: Field
Theme: Smoke
Background: Field
System

Model picker

The model behind the conversation, chosen in place

A quiet pill trigger shows the current model. The panel lists every model with a one line description, and an optional effort row trades speed for depth. Built for the Composer's actions slot, but it stands anywhere.

Trigger and panel

The trigger reads as chrome, not as a call to action, so the send button keeps the only action colour in a composer. Open it to see the model list, with the selected model checked.

Effort

Provide an effort value and a Low, Medium, High row appears below the models. Both selections follow the same controlled or uncontrolled convention as every other input in the system.

Sonnet 5, medium effort

In the Composer

The Composer's actions slot was reserved for exactly this. With the composer pinned to the bottom of a chat, set placement to top, the side the panel prefers; it flips on its own when that side has no room.

Sizes

The trigger is the row height at either size, 40px or 32px, so it lines up with the fields and buttons beside it.

Unavailable models

A disabled model stays visible in the list, so the lineup reads the same for everyone, but it cannot be chosen.

tsx
// From the npm package
import { ModelPicker } from 'rift-ds/components/ModelPicker/ModelPicker';

// Or as source you own, via the shadcn CLI
npx shadcn@latest add https://rift-ds.com/r/model-picker.json