From 39847fa56d22ff6e3c30800bcfbd5ce4c86ed4a6 Mon Sep 17 00:00:00 2001 From: dp Date: Tue, 23 Dec 2025 13:48:09 +0800 Subject: [PATCH] feat(oauth): add provider icons to oauth login cards --- src/assets/icons/antigravity.png | Bin 0 -> 4564 bytes src/assets/icons/claude.png | Bin 0 -> 5492 bytes src/assets/icons/gemini.png | Bin 0 -> 3256 bytes src/assets/icons/iflow.svg | 1 + src/assets/icons/openai-dark.png | Bin 0 -> 3050 bytes src/assets/icons/openai-light.png | Bin 0 -> 2828 bytes src/assets/icons/qwen.png | Bin 0 -> 4258 bytes src/pages/OAuthPage.module.scss | 11 ++++++++ src/pages/OAuthPage.tsx | 42 +++++++++++++++++++++++------- src/vite-env.d.ts | 1 + 10 files changed, 45 insertions(+), 10 deletions(-) create mode 100644 src/assets/icons/antigravity.png create mode 100644 src/assets/icons/claude.png create mode 100644 src/assets/icons/gemini.png create mode 100644 src/assets/icons/iflow.svg create mode 100644 src/assets/icons/openai-dark.png create mode 100644 src/assets/icons/openai-light.png create mode 100644 src/assets/icons/qwen.png create mode 100644 src/vite-env.d.ts diff --git a/src/assets/icons/antigravity.png b/src/assets/icons/antigravity.png new file mode 100644 index 0000000000000000000000000000000000000000..6d593991795dd9820b02b5d839dfb544493addbd GIT binary patch literal 4564 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 literal 0 HcmV?d00001 diff --git a/src/assets/icons/claude.png b/src/assets/icons/claude.png new file mode 100644 index 0000000000000000000000000000000000000000..d33a9163583b8d73224b32d3f7439dc0dd6ccf2c GIT binary patch literal 5492 zcmYM2WmFVkw}ofOp&39zK!)x{xR=x$Izx}-#DX{5P& z@3+2t*4pRU?^*l&JwM(L+M3D)xKD8b004oiilXjc%Kj4w>u;}e^j!T5ptr8FJODXP zv-|fEU}vOiub~0p`0GIc4B%4$=D)~aNdu|>>t6ub0O?w2^a9|2(tl?KX#Y*i7NGyX|F`D5>KFAFI36m--T(j|=|2Gh**TN|09l%JJy6b1|IXZU7$+bu;rq-~gOjVz55*vg#C9BidERe0)a`!5C?0c^l}RLOF)kQ5!tZHG#?s zQuL69O1@*&jNUUbT5^F=gp}OS8GPr1SxXXoyzrOo@fmS|HfuG#vXF5s>HKk>#}5pu z$t1W;_H)|qh=qdq24+s@eAjY*xzZu?p2UYp6*)Q#YK#G6O@*bl7Y#I5J?;l@xoy$R zPTzRTu&m*w)7D2aQS3P2E>}>V@@s_GA6B<0L+nm}7VnfyZU~vPlmzbV4e@b_KW4v{ zuE-R|P^@&PMYM2}oPS>%q>^DQRnFC_^pp`T|8<>7=f|-2`2?S(bYamUb9OzA%#ZN2T7HC7aNGGc)?84$C`Xad$9q@De_ z+}FB*bSxrN{6wnmvSz54P1?xvez_L!3>~|J!v4t-AJ-WLScCA|MYeD^%yRWx*U?9M zx(i*k!me&4>Cg=BQzgmyD&}KhwTQR!}N!Uk?wc|r#)YL{--~&*jAb0{)2*l znsK_Fom}E8eQ}n5pLwGNVr7%*vY*gS8gNAoj3NW>) zFM~Kd2*dGch({ca?~3yf3-smm>sq%*19Q>H?{iVPe<-HLUY=;lCr^SOMIM7qm={dU zPku%dbN0lr@~__Fz@<#}*Nz3 zn5a8c1SM25vdlnVgH_)i8~xF(;O^^JWo|q78MH4pUxY$a*_NA7K5|y?2ei}{-)#%d z*41{%)o$@bVXP_kdnpa#MSTquaZW!xw9Ekp4w_c82wYDmgk`-j@}E?KkMaCwe(YCw+cM?k?hpx434^ zcjSFA81=YK*}bBU`Siqh)J9$?hW4m*v?|s`xGtKVF}dhw-T2-qU6L-)jbUiCN4a4s8uOGR=Ku^@_0+Zb#YF4tygh1MWdSrw6!=kGV|%kaclJqQlJYN2UH!EcLa~R=H7*jZJv4*-YG0m%!r4+Cb^gAe zd#PwN9=58x);Sy`g+7=!u>P}$-kZorb?g+RR1yFq4zi{A@GJ7YejG1mN(d;*c9@bW zw#2jW+`z&4gC)u!ZQMUpUf1nVuqN@|AQXgMWWLhWRRT0H?V2(~71*z7K%(5a zQ^mPa^Ycz)$4$=b$wAvxuDQQxUOCG5qpTAA==7Jvwe=SpQy%0A@xdUolkgB0&h7k^ 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 literal 0 HcmV?d00001 diff --git a/src/assets/icons/iflow.svg b/src/assets/icons/iflow.svg new file mode 100644 index 0000000..ec7a6f4 --- /dev/null +++ b/src/assets/icons/iflow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/openai-dark.png b/src/assets/icons/openai-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..d97501404832b5c205d0d9cf05dcde5c60819572 GIT binary patch literal 3050 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 literal 0 HcmV?d00001 diff --git a/src/pages/OAuthPage.module.scss b/src/pages/OAuthPage.module.scss index 5173c0f..1b73426 100644 --- a/src/pages/OAuthPage.module.scss +++ b/src/pages/OAuthPage.module.scss @@ -4,6 +4,17 @@ width: 100%; } +.cardTitle { + display: flex; + align-items: center; + gap: $spacing-sm; +} + +.cardTitleIcon { + width: 24px; + height: 24px; +} + .pageTitle { font-size: 28px; font-weight: 700; diff --git a/src/pages/OAuthPage.tsx b/src/pages/OAuthPage.tsx index 4d1c1f9..e91abdd 100644 --- a/src/pages/OAuthPage.tsx +++ b/src/pages/OAuthPage.tsx @@ -3,9 +3,16 @@ import { useTranslation } from 'react-i18next'; import { Card } from '@/components/ui/Card'; import { Button } from '@/components/ui/Button'; import { Input } from '@/components/ui/Input'; -import { useNotificationStore } from '@/stores'; +import { useNotificationStore, useThemeStore } from '@/stores'; import { oauthApi, type OAuthProvider, type IFlowCookieAuthResponse } from '@/services/api/oauth'; import styles from './OAuthPage.module.scss'; +import iconOpenaiLight from '@/assets/icons/openai-light.png'; +import iconOpenaiDark from '@/assets/icons/openai-dark.png'; +import iconClaude from '@/assets/icons/claude.png'; +import iconAntigravity from '@/assets/icons/antigravity.png'; +import iconGemini from '@/assets/icons/gemini.png'; +import iconQwen from '@/assets/icons/qwen.png'; +import iconIflow from '@/assets/icons/iflow.svg'; interface ProviderState { url?: string; @@ -29,20 +36,25 @@ interface IFlowCookieState { errorType?: 'error' | 'warning'; } -const PROVIDERS: { id: OAuthProvider; titleKey: string; hintKey: string; urlLabelKey: string }[] = [ - { id: 'codex', titleKey: 'auth_login.codex_oauth_title', hintKey: 'auth_login.codex_oauth_hint', urlLabelKey: 'auth_login.codex_oauth_url_label' }, - { id: 'anthropic', titleKey: 'auth_login.anthropic_oauth_title', hintKey: 'auth_login.anthropic_oauth_hint', urlLabelKey: 'auth_login.anthropic_oauth_url_label' }, - { id: 'antigravity', titleKey: 'auth_login.antigravity_oauth_title', hintKey: 'auth_login.antigravity_oauth_hint', urlLabelKey: 'auth_login.antigravity_oauth_url_label' }, - { id: 'gemini-cli', titleKey: 'auth_login.gemini_cli_oauth_title', hintKey: 'auth_login.gemini_cli_oauth_hint', urlLabelKey: 'auth_login.gemini_cli_oauth_url_label' }, - { id: 'qwen', titleKey: 'auth_login.qwen_oauth_title', hintKey: 'auth_login.qwen_oauth_hint', urlLabelKey: 'auth_login.qwen_oauth_url_label' }, - { id: 'iflow', titleKey: 'auth_login.iflow_oauth_title', hintKey: 'auth_login.iflow_oauth_hint', urlLabelKey: 'auth_login.iflow_oauth_url_label' } +const PROVIDERS: { id: OAuthProvider; titleKey: string; hintKey: string; urlLabelKey: string; icon: string | { light: string; dark: string } }[] = [ + { id: 'codex', titleKey: 'auth_login.codex_oauth_title', hintKey: 'auth_login.codex_oauth_hint', urlLabelKey: 'auth_login.codex_oauth_url_label', icon: { light: iconOpenaiLight, dark: iconOpenaiDark } }, + { id: 'anthropic', titleKey: 'auth_login.anthropic_oauth_title', hintKey: 'auth_login.anthropic_oauth_hint', urlLabelKey: 'auth_login.anthropic_oauth_url_label', icon: iconClaude }, + { id: 'antigravity', titleKey: 'auth_login.antigravity_oauth_title', hintKey: 'auth_login.antigravity_oauth_hint', urlLabelKey: 'auth_login.antigravity_oauth_url_label', icon: iconAntigravity }, + { id: 'gemini-cli', titleKey: 'auth_login.gemini_cli_oauth_title', hintKey: 'auth_login.gemini_cli_oauth_hint', urlLabelKey: 'auth_login.gemini_cli_oauth_url_label', icon: iconGemini }, + { id: 'qwen', titleKey: 'auth_login.qwen_oauth_title', hintKey: 'auth_login.qwen_oauth_hint', urlLabelKey: 'auth_login.qwen_oauth_url_label', icon: iconQwen }, + { id: 'iflow', titleKey: 'auth_login.iflow_oauth_title', hintKey: 'auth_login.iflow_oauth_hint', urlLabelKey: 'auth_login.iflow_oauth_url_label', icon: iconIflow } ]; const CALLBACK_SUPPORTED: OAuthProvider[] = ['codex', 'anthropic', 'antigravity', 'gemini-cli', 'iflow']; +const getIcon = (icon: string | { light: string; dark: string }, theme: 'light' | 'dark') => { + return typeof icon === 'string' ? icon : icon[theme]; +}; + export function OAuthPage() { const { t } = useTranslation(); const { showNotification } = useNotificationStore(); + const { theme } = useThemeStore(); const [states, setStates] = useState>({} as Record); const [iflowCookie, setIflowCookie] = useState({ cookie: '', loading: false }); const timers = useRef>({}); @@ -215,7 +227,12 @@ export function OAuthPage() { return (
+ + {t(provider.titleKey)} + + } extra={