summaryrefslogtreecommitdiffhomepage
path: root/packages/ui/src/components
diff options
context:
space:
mode:
authorDaniel Polito <[email protected]>2026-01-13 12:41:35 -0300
committerFrank <[email protected]>2026-01-13 19:50:49 -0500
commit3c9d80d75f8cd506c776b3d2f753d28d6f81d1cd (patch)
treec12d4de08278fb44e31521dcc8c6ab311eee5938 /packages/ui/src/components
parenta761f66a16dc0a2b116477c328d8a49f5c0a947a (diff)
downloadopencode-3c9d80d75f8cd506c776b3d2f753d28d6f81d1cd.tar.gz
opencode-3c9d80d75f8cd506c776b3d2f753d28d6f81d1cd.zip
feat(desktop): Adding Provider Icons (#8215)
Diffstat (limited to 'packages/ui/src/components')
-rw-r--r--packages/ui/src/components/button.css3
-rw-r--r--packages/ui/src/components/list.tsx12
-rw-r--r--packages/ui/src/components/session-turn.tsx10
3 files changed, 19 insertions, 6 deletions
diff --git a/packages/ui/src/components/button.css b/packages/ui/src/components/button.css
index 800795e87..c25b89af9 100644
--- a/packages/ui/src/components/button.css
+++ b/packages/ui/src/components/button.css
@@ -123,13 +123,13 @@
&[data-size="normal"] {
height: 24px;
+ line-height: 24px;
padding: 0 6px;
&[data-icon] {
padding: 0 12px 0 4px;
}
font-size: var(--font-size-small);
- line-height: var(--line-height-large);
gap: 6px;
/* text-12-medium */
@@ -137,7 +137,6 @@
font-size: var(--font-size-small);
font-style: normal;
font-weight: var(--font-weight-medium);
- line-height: var(--line-height-large); /* 166.667% */
letter-spacing: var(--letter-spacing-normal);
}
diff --git a/packages/ui/src/components/list.tsx b/packages/ui/src/components/list.tsx
index 1283b3023..8c92728d7 100644
--- a/packages/ui/src/components/list.tsx
+++ b/packages/ui/src/components/list.tsx
@@ -10,9 +10,15 @@ export interface ListSearchProps {
autofocus?: boolean
}
+export interface ListGroup<T> {
+ category: string
+ items: T[]
+}
+
export interface ListProps<T> extends FilteredListProps<T> {
class?: string
children: (item: T) => JSX.Element
+ groupHeader?: (group: ListGroup<T>) => JSX.Element
emptyMessage?: string
onKeyEvent?: (event: KeyboardEvent, item: T | undefined) => void
onMove?: (item: T | undefined) => void
@@ -116,7 +122,7 @@ export function List<T>(props: ListProps<T> & { ref?: (ref: ListRef) => void })
setScrollRef,
})
- function GroupHeader(props: { category: string }): JSX.Element {
+ function GroupHeader(groupProps: { category: string; children?: JSX.Element }): JSX.Element {
const [stuck, setStuck] = createSignal(false)
const [header, setHeader] = createSignal<HTMLDivElement | undefined>(undefined)
@@ -138,7 +144,7 @@ export function List<T>(props: ListProps<T> & { ref?: (ref: ListRef) => void })
return (
<div data-slot="list-header" data-stuck={stuck()} ref={setHeader}>
- {props.category}
+ {groupProps.children ?? groupProps.category}
</div>
)
}
@@ -185,7 +191,7 @@ export function List<T>(props: ListProps<T> & { ref?: (ref: ListRef) => void })
{(group) => (
<div data-slot="list-group">
<Show when={group.category}>
- <GroupHeader category={group.category} />
+ <GroupHeader category={group.category}>{props.groupHeader?.(group)}</GroupHeader>
</Show>
<div data-slot="list-items">
<For each={group.items}>
diff --git a/packages/ui/src/components/session-turn.tsx b/packages/ui/src/components/session-turn.tsx
index 9947578b9..ae1321bac 100644
--- a/packages/ui/src/components/session-turn.tsx
+++ b/packages/ui/src/components/session-turn.tsx
@@ -22,6 +22,8 @@ import { Accordion } from "./accordion"
import { StickyAccordionHeader } from "./sticky-accordion-header"
import { FileIcon } from "./file-icon"
import { Icon } from "./icon"
+import { ProviderIcon } from "./provider-icon"
+import type { IconName } from "./provider-icons/types"
import { IconButton } from "./icon-button"
import { Tooltip } from "./tooltip"
import { Card } from "./card"
@@ -498,7 +500,13 @@ export function SessionTurn(
<span data-slot="session-turn-badge">{(msg() as UserMessage).agent}</span>
</Show>
<Show when={(msg() as UserMessage).model?.modelID}>
- <span data-slot="session-turn-badge">{(msg() as UserMessage).model?.modelID}</span>
+ <span data-slot="session-turn-badge" class="inline-flex items-center gap-1">
+ <ProviderIcon
+ id={(msg() as UserMessage).model!.providerID as IconName}
+ class="size-3.5 shrink-0"
+ />
+ {(msg() as UserMessage).model?.modelID}
+ </span>
</Show>
<span data-slot="session-turn-badge">{(msg() as UserMessage).variant || "default"}</span>
</div>