diff --git a/packages/opencode/src/cli/cmd/tui/component/dialog-model.tsx b/packages/opencode/src/cli/cmd/tui/component/dialog-model.tsx index 04f2f652..b35339da 100644 --- a/packages/opencode/src/cli/cmd/tui/component/dialog-model.tsx +++ b/packages/opencode/src/cli/cmd/tui/component/dialog-model.tsx @@ -4,12 +4,19 @@ import { useSync } from "@tui/context/sync" import { map, pipe, flatMap, entries, filter, isDeepEqual, sortBy } from "remeda" import { DialogSelect, type DialogSelectRef } from "@tui/ui/dialog-select" import { useDialog } from "@tui/ui/dialog" +import { useTheme } from "../context/theme" + +function Free() { + const { theme } = useTheme() + return Free +} export function DialogModel() { const local = useLocal() const sync = useSync() const dialog = useDialog() const [ref, setRef] = createSignal>() + const { theme } = useTheme() const options = createMemo(() => { return [ @@ -29,6 +36,7 @@ export function DialogModel() { title: model.name ?? item.modelID, description: provider.name, category: "Recent", + footer: model.cost.input === 0 && provider.id === "opencode" ? : undefined, }, ] }) @@ -51,6 +59,7 @@ export function DialogModel() { title: info.name ?? model, description: provider.name, category: provider.name, + footer: info.cost.input === 0 && provider.id === "opencode" ? : undefined, })), filter((x) => Boolean(ref()?.filter) || !local.model.recent().find((y) => isDeepEqual(y, x.value))), ), diff --git a/packages/opencode/src/cli/cmd/tui/ui/dialog-select.tsx b/packages/opencode/src/cli/cmd/tui/ui/dialog-select.tsx index 10651067..bc9b78dc 100644 --- a/packages/opencode/src/cli/cmd/tui/ui/dialog-select.tsx +++ b/packages/opencode/src/cli/cmd/tui/ui/dialog-select.tsx @@ -30,7 +30,7 @@ export interface DialogSelectOption { title: string value: T description?: string - footer?: string + footer?: JSX.Element | string category?: string disabled?: boolean bg?: RGBA @@ -172,7 +172,6 @@ export function DialogSelect(props: DialogSelectProps) { props.onFilter?.(e) }) }} - onKeyDown={(e) => {}} focusedBackgroundColor={theme.backgroundPanel} cursorColor={theme.primary} focusedTextColor={theme.textMuted} @@ -256,7 +255,7 @@ function Option(props: { description?: string active?: boolean current?: boolean - footer?: string + footer?: JSX.Element | string onMouseOver?: () => void }) { const { theme } = useTheme()