diff options
| author | Ronan Kearns <[email protected]> | 2026-01-21 10:25:34 -0500 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-01-21 09:25:34 -0600 |
| commit | 6ac8c85b3441ddd5522d37e3e28cabc604d34d70 (patch) | |
| tree | 25ebc49f540b68ef8f3478a24e55f9925706f16a /packages/app/src/components/dialog-select-model.tsx | |
| parent | 19f68382fd3501d1abc3ca9c49aee61f2c01fdb4 (diff) | |
| download | opencode-6ac8c85b3441ddd5522d37e3e28cabc604d34d70.tar.gz opencode-6ac8c85b3441ddd5522d37e3e28cabc604d34d70.zip | |
feat(app): model tooltip metadata in chooser (per Figma request) (#9707)
Diffstat (limited to 'packages/app/src/components/dialog-select-model.tsx')
| -rw-r--r-- | packages/app/src/components/dialog-select-model.tsx | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/packages/app/src/components/dialog-select-model.tsx b/packages/app/src/components/dialog-select-model.tsx index 8288a8255..dd599e143 100644 --- a/packages/app/src/components/dialog-select-model.tsx +++ b/packages/app/src/components/dialog-select-model.tsx @@ -8,8 +8,10 @@ import { IconButton } from "@opencode-ai/ui/icon-button" import { Tag } from "@opencode-ai/ui/tag" import { Dialog } from "@opencode-ai/ui/dialog" import { List } from "@opencode-ai/ui/list" +import { Tooltip } from "@opencode-ai/ui/tooltip" import { DialogSelectProvider } from "./dialog-select-provider" import { DialogManageModels } from "./dialog-manage-models" +import { ModelTooltip } from "./model-tooltip" import { useLanguage } from "@/context/language" const ModelList: Component<{ @@ -28,6 +30,7 @@ const ModelList: Component<{ .filter((m) => (props.provider ? m.provider.id === props.provider : true)), ) + return ( <List class={`flex-1 min-h-0 [&_[data-slot=list-scroll]]:flex-1 [&_[data-slot=list-scroll]]:min-h-0 ${props.class ?? ""}`} @@ -46,6 +49,16 @@ const ModelList: Component<{ if (!popularProviders.includes(aProvider) && popularProviders.includes(bProvider)) return 1 return popularProviders.indexOf(aProvider) - popularProviders.indexOf(bProvider) }} + itemWrapper={(item, node) => ( + <Tooltip + class="w-full" + placement="right-start" + gutter={12} + value={<ModelTooltip model={item} latest={item.latest} free={item.provider.id === "opencode" && (!item.cost || item.cost.input === 0)} />} + > + {node} + </Tooltip> + )} onSelect={(x) => { local.model.set(x ? { modelID: x.id, providerID: x.provider.id } : undefined, { recent: true, |
