diff options
| author | Daniel Polito <[email protected]> | 2026-01-13 12:41:35 -0300 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-01-13 09:41:35 -0600 |
| commit | 528291532b1d4192302538f9c27054ff717c6982 (patch) | |
| tree | 63f074530188c78c5a3a56d0e38d53a626a4cb24 /packages/app/src | |
| parent | 2b77a84c4f3c6e651e0cf224b0c814260ddd8a45 (diff) | |
| download | opencode-528291532b1d4192302538f9c27054ff717c6982.tar.gz opencode-528291532b1d4192302538f9c27054ff717c6982.zip | |
feat(desktop): Adding Provider Icons (#8215)
Diffstat (limited to 'packages/app/src')
| -rw-r--r-- | packages/app/src/components/dialog-select-model.tsx | 11 | ||||
| -rw-r--r-- | packages/app/src/components/prompt-input.tsx | 18 |
2 files changed, 26 insertions, 3 deletions
diff --git a/packages/app/src/components/dialog-select-model.tsx b/packages/app/src/components/dialog-select-model.tsx index d54f9369a..c614c2d49 100644 --- a/packages/app/src/components/dialog-select-model.tsx +++ b/packages/app/src/components/dialog-select-model.tsx @@ -7,6 +7,8 @@ import { Button } from "@opencode-ai/ui/button" import { Tag } from "@opencode-ai/ui/tag" import { Dialog } from "@opencode-ai/ui/dialog" import { List } from "@opencode-ai/ui/list" +import { ProviderIcon } from "@opencode-ai/ui/provider-icon" +import type { IconName } from "@opencode-ai/ui/icons/provider" import { DialogSelectProvider } from "./dialog-select-provider" import { DialogManageModels } from "./dialog-manage-models" @@ -35,6 +37,12 @@ const ModelList: Component<{ filterKeys={["provider.name", "name", "id"]} sortBy={(a, b) => a.name.localeCompare(b.name)} groupBy={(x) => x.provider.name} + groupHeader={(group) => ( + <div class="flex items-center gap-x-3"> + <ProviderIcon data-slot="list-item-extra-icon" id={group.items[0].provider.id as IconName} /> + <span>{group.category}</span> + </div> + )} sortGroupsBy={(a, b) => { if (a.category === "Recent" && b.category !== "Recent") return -1 if (b.category === "Recent" && a.category !== "Recent") return 1 @@ -52,7 +60,8 @@ const ModelList: Component<{ }} > {(i) => ( - <div class="w-full flex items-center gap-x-2 text-13-regular"> + <div class="w-full flex items-center gap-x-3 pl-1 text-13-regular"> + <ProviderIcon data-slot="list-item-extra-icon" id={i.provider.id as IconName} /> <span class="truncate">{i.name}</span> <Show when={i.provider.id === "opencode" && (!i.cost || i.cost?.input === 0)}> <Tag>Free</Tag> diff --git a/packages/app/src/components/prompt-input.tsx b/packages/app/src/components/prompt-input.tsx index 13f2b00a3..2be8a21c1 100644 --- a/packages/app/src/components/prompt-input.tsx +++ b/packages/app/src/components/prompt-input.tsx @@ -33,6 +33,8 @@ import { useSync } from "@/context/sync" import { FileIcon } from "@opencode-ai/ui/file-icon" import { Button } from "@opencode-ai/ui/button" import { Icon } from "@opencode-ai/ui/icon" +import { ProviderIcon } from "@opencode-ai/ui/provider-icon" +import type { IconName } from "@opencode-ai/ui/icons/provider" import { Tooltip, TooltipKeybind } from "@opencode-ai/ui/tooltip" import { IconButton } from "@opencode-ai/ui/icon-button" import { Select } from "@opencode-ai/ui/select" @@ -1560,6 +1562,12 @@ export const PromptInput: Component<PromptInputProps> = (props) => { fallback={ <TooltipKeybind placement="top" title="Choose model" keybind={command.keybind("model.choose")}> <Button as="div" variant="ghost" onClick={() => dialog.show(() => <DialogSelectModelUnpaid />)}> + <Show when={local.model.current()?.provider?.id}> + <ProviderIcon + id={local.model.current()!.provider.id as IconName} + class="size-4 shrink-0" + /> + </Show> {local.model.current()?.name ?? "Select model"} <Icon name="chevron-down" size="small" /> </Button> @@ -1569,6 +1577,12 @@ export const PromptInput: Component<PromptInputProps> = (props) => { <ModelSelectorPopover> <TooltipKeybind placement="top" title="Choose model" keybind={command.keybind("model.choose")}> <Button as="div" variant="ghost"> + <Show when={local.model.current()?.provider?.id}> + <ProviderIcon + id={local.model.current()!.provider.id as IconName} + class="size-4 shrink-0" + /> + </Show> {local.model.current()?.name ?? "Select model"} <Icon name="chevron-down" size="small" /> </Button> @@ -1583,10 +1597,10 @@ export const PromptInput: Component<PromptInputProps> = (props) => { > <Button variant="ghost" - class="text-text-base _hidden group-hover/prompt-input:inline-block" + class="text-text-base _hidden group-hover/prompt-input:inline-block capitalize text-12-regular" onClick={() => local.model.variant.cycle()} > - <span class="capitalize text-12-regular">{local.model.variant.current() ?? "Default"}</span> + {local.model.variant.current() ?? "Default"} </Button> </TooltipKeybind> </Show> |
