feat: use official SVG brand icons for model providers

Replace colored letter badges with official SVG icons sourced from
Simple Icons (Anthropic, Google Gemini) and Wikimedia Commons (OpenAI).

- Create shared ProviderIcons.tsx with OpenAI, Anthropic, and Gemini
  SVG icon components using the official brand marks
- Update PatternEditor ModelSelect dropdown to use real provider icons
- Update ActivityPanel model badges to use real provider icons
- Remove duplicated providerStyles objects from both files

Icons are inline SVG using currentColor for theme-aware coloring.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
David Kaya
2026-03-21 20:58:38 +01:00
co-authored by Copilot
parent d155085d0c
commit 8f668da7f8
3 changed files with 67 additions and 30 deletions
+1 -17
View File
@@ -27,7 +27,6 @@ import {
providerMeta,
findModel,
inferProvider,
type ModelProvider,
type ModelDefinition,
} from '@shared/domain/models';
@@ -203,22 +202,7 @@ function InputField({
);
}
const providerStyles: Record<ModelProvider, { bg: string; text: string; label: string }> = {
openai: { bg: 'bg-emerald-500/15', text: 'text-emerald-400', label: 'AI' },
anthropic: { bg: 'bg-orange-500/15', text: 'text-orange-400', label: 'A' },
google: { bg: 'bg-blue-500/15', text: 'text-blue-400', label: 'G' },
};
function ProviderIcon({ provider }: { provider: ModelProvider }) {
const s = providerStyles[provider];
return (
<span
className={`flex size-5 shrink-0 items-center justify-center rounded text-[8px] font-bold ${s.bg} ${s.text}`}
>
{s.label}
</span>
);
}
import { ProviderIcon } from './ProviderIcons';
function TierBadge({ tier }: { tier: ModelDefinition['tier'] }) {
const styles = {