summaryrefslogtreecommitdiffhomepage
path: root/packages/app/src/components/dialog-select-model.tsx
diff options
context:
space:
mode:
authorRonan Kearns <[email protected]>2026-01-21 10:25:34 -0500
committerGitHub <[email protected]>2026-01-21 09:25:34 -0600
commit6ac8c85b3441ddd5522d37e3e28cabc604d34d70 (patch)
tree25ebc49f540b68ef8f3478a24e55f9925706f16a /packages/app/src/components/dialog-select-model.tsx
parent19f68382fd3501d1abc3ca9c49aee61f2c01fdb4 (diff)
downloadopencode-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.tsx13
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,