diff --git a/src/features/providers/brandLogos.ts b/src/features/providers/brandLogos.ts new file mode 100644 index 0000000..1507a45 --- /dev/null +++ b/src/features/providers/brandLogos.ts @@ -0,0 +1,21 @@ +import ampcodeLogo from '@/assets/icons/amp.svg'; +import claudeLogo from '@/assets/icons/claude.svg'; +import codexLogo from '@/assets/icons/codex.svg'; +import geminiLogo from '@/assets/icons/gemini.svg'; +import openaiLogo from '@/assets/icons/openai-light.svg'; +import vertexLogo from '@/assets/icons/vertex.svg'; +import type { ProviderBrand } from './types'; + +export interface ProviderBrandLogo { + src: string; + invertOnDark?: boolean; +} + +export const PROVIDER_LOGOS: Record = { + gemini: { src: geminiLogo }, + claude: { src: claudeLogo }, + codex: { src: codexLogo }, + vertex: { src: vertexLogo }, + openaiCompatibility: { src: openaiLogo, invertOnDark: true }, + ampcode: { src: ampcodeLogo }, +}; diff --git a/src/features/providers/components/ProviderCategoryList.tsx b/src/features/providers/components/ProviderCategoryList.tsx index a420ced..cd8fb56 100644 --- a/src/features/providers/components/ProviderCategoryList.tsx +++ b/src/features/providers/components/ProviderCategoryList.tsx @@ -1,22 +1,8 @@ import { useTranslation } from 'react-i18next'; -import ampcodeLogo from '@/assets/icons/amp.svg'; -import claudeLogo from '@/assets/icons/claude.svg'; -import codexLogo from '@/assets/icons/codex.svg'; -import geminiLogo from '@/assets/icons/gemini.svg'; -import openaiLogo from '@/assets/icons/openai-light.svg'; -import vertexLogo from '@/assets/icons/vertex.svg'; +import { PROVIDER_LOGOS } from '../brandLogos'; import type { ProviderBrand, ProviderGroup } from '../types'; import styles from './ProviderCategoryList.module.scss'; -const PROVIDER_LOGOS: Record = { - gemini: { src: geminiLogo }, - claude: { src: claudeLogo }, - codex: { src: codexLogo }, - vertex: { src: vertexLogo }, - openaiCompatibility: { src: openaiLogo, invertOnDark: true }, - ampcode: { src: ampcodeLogo }, -}; - interface ProviderCategoryListProps { groups: ProviderGroup[]; activeBrand: ProviderBrand; diff --git a/src/features/providers/components/ProviderResourcePanel.tsx b/src/features/providers/components/ProviderResourcePanel.tsx index f8bf2eb..7935da1 100644 --- a/src/features/providers/components/ProviderResourcePanel.tsx +++ b/src/features/providers/components/ProviderResourcePanel.tsx @@ -1,27 +1,13 @@ import { useTranslation } from 'react-i18next'; -import ampcodeLogo from '@/assets/icons/amp.svg'; -import claudeLogo from '@/assets/icons/claude.svg'; -import codexLogo from '@/assets/icons/codex.svg'; -import geminiLogo from '@/assets/icons/gemini.svg'; -import openaiLogo from '@/assets/icons/openai-light.svg'; -import vertexLogo from '@/assets/icons/vertex.svg'; import { IconPlus, IconSearch } from '@/components/ui/icons'; import type { ProviderRecentUsageMap } from '@/components/providers/utils'; -import type { ProviderBrand, ProviderGroup, ProviderResource } from '../types'; +import { PROVIDER_LOGOS } from '../brandLogos'; +import type { ProviderGroup, ProviderResource } from '../types'; import { ProviderResourceTable } from './ProviderResourceTable'; import { ProviderResourceToolbar } from './ProviderResourceToolbar'; import type { ProviderSortBy, SortDir } from '../types'; import styles from './ProviderResourcePanel.module.scss'; -const LOGOS: Record = { - gemini: { src: geminiLogo }, - claude: { src: claudeLogo }, - codex: { src: codexLogo }, - vertex: { src: vertexLogo }, - openaiCompatibility: { src: openaiLogo, invertOnDark: true }, - ampcode: { src: ampcodeLogo }, -}; - export interface ProviderPanelControls { sortBy: ProviderSortBy; sortDir: SortDir; @@ -64,7 +50,7 @@ export function ProviderResourcePanel({ onCreate, }: ProviderResourcePanelProps) { const { t } = useTranslation(); - const logo = LOGOS[group.id]; + const logo = PROVIDER_LOGOS[group.id]; const realResources = filteredResources.filter((r) => !r.flags.isPlaceholder);