diff --git a/src/components/config/VisualConfigEditor.tsx b/src/components/config/VisualConfigEditor.tsx index 7fe3ebe..29b0bec 100644 --- a/src/components/config/VisualConfigEditor.tsx +++ b/src/components/config/VisualConfigEditor.tsx @@ -174,8 +174,10 @@ function ToastSelect({ style={{ padding: '10px 12px', borderRadius: 10, - border: active ? '1px solid rgba(59, 130, 246, 0.5)' : '1px solid var(--border-color)', - background: active ? 'rgba(59, 130, 246, 0.10)' : 'var(--bg-primary)', + border: active + ? '1px solid rgba(139, 134, 128, 0.5)' + : '1px solid var(--border-color)', + background: active ? 'rgba(139, 134, 128, 0.12)' : 'var(--bg-primary)', color: 'var(--text-primary)', cursor: 'pointer', textAlign: 'left', diff --git a/src/components/modelAlias/ModelMappingDiagram.module.scss b/src/components/modelAlias/ModelMappingDiagram.module.scss index 20c3194..f84bd5f 100644 --- a/src/components/modelAlias/ModelMappingDiagram.module.scss +++ b/src/components/modelAlias/ModelMappingDiagram.module.scss @@ -114,7 +114,7 @@ &.selected { border-color: var(--primary-color); background-color: var(--bg-secondary); - box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.15); + box-shadow: 0 0 0 2px rgba($primary-color, 0.18); } } diff --git a/src/components/modelAlias/ModelMappingDiagram.tsx b/src/components/modelAlias/ModelMappingDiagram.tsx index b207882..0762444 100644 --- a/src/components/modelAlias/ModelMappingDiagram.tsx +++ b/src/components/modelAlias/ModelMappingDiagram.tsx @@ -33,7 +33,7 @@ export interface ModelMappingDiagramProps { } const PROVIDER_COLORS = [ - '#3b82f6', '#10b981', '#f59e0b', '#ef4444', + '#8b8680', '#10b981', '#f59e0b', '#c65746', '#8b5cf6', '#ec4899', '#06b6d4', '#84cc16' ]; diff --git a/src/components/providers/ProviderNav/ProviderNav.module.scss b/src/components/providers/ProviderNav/ProviderNav.module.scss index 7c169d7..8722f2e 100644 --- a/src/components/providers/ProviderNav/ProviderNav.module.scss +++ b/src/components/providers/ProviderNav/ProviderNav.module.scss @@ -17,12 +17,12 @@ flex-direction: row; gap: 6px; padding: 10px 12px; - background: rgba(255, 255, 255, 0.7); + background: color-mix(in srgb, var(--bg-primary) 82%, transparent); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); - border: 1px solid rgba(255, 255, 255, 0.3); + border: 1px solid color-mix(in srgb, var(--border-color) 60%, transparent); border-radius: 999px; - box-shadow: 0 4px 24px rgba(0, 0, 0, 0.1); + box-shadow: 0 4px 24px rgba(0, 0, 0, 0.08); overflow-x: auto; scrollbar-width: none; max-width: inherit; @@ -39,7 +39,7 @@ pointer-events: none; opacity: 0; border-radius: 999px; - background: rgba(59, 130, 246, 0.15); + background: rgba($primary-color, 0.16); box-shadow: inset 0 0 0 2px var(--primary-color); transition: transform 220ms cubic-bezier(0.22, 1, 0.36, 1), width 220ms cubic-bezier(0.22, 1, 0.36, 1), @@ -104,8 +104,8 @@ // 暗色主题适配 :global([data-theme='dark']) { .navList { - background: rgba(30, 30, 30, 0.7); - border-color: rgba(255, 255, 255, 0.1); + background: color-mix(in srgb, var(--bg-primary) 82%, transparent); + border-color: color-mix(in srgb, var(--border-color) 55%, transparent); box-shadow: 0 4px 24px rgba(0, 0, 0, 0.4); } @@ -116,7 +116,7 @@ } .indicator { - background: rgba(59, 130, 246, 0.25); + background: rgba($primary-color, 0.28); } } diff --git a/src/components/usage/StatCards.tsx b/src/components/usage/StatCards.tsx index 09c6831..43df7cf 100644 --- a/src/components/usage/StatCards.tsx +++ b/src/components/usage/StatCards.tsx @@ -56,9 +56,9 @@ export function StatCards({ usage, loading, modelPrices, sparklines }: StatCards key: 'requests', label: t('usage_stats.total_requests'), icon: , - accent: '#3b82f6', - accentSoft: 'rgba(59, 130, 246, 0.18)', - accentBorder: 'rgba(59, 130, 246, 0.35)', + accent: '#8b8680', + accentSoft: 'rgba(139, 134, 128, 0.18)', + accentBorder: 'rgba(139, 134, 128, 0.35)', value: loading ? '-' : (usage?.total_requests ?? 0).toLocaleString(), meta: ( <> @@ -67,7 +67,7 @@ export function StatCards({ usage, loading, modelPrices, sparklines }: StatCards {t('usage_stats.success_requests')}: {loading ? '-' : (usage?.success_count ?? 0)} - + {t('usage_stats.failed_requests')}: {loading ? '-' : (usage?.failure_count ?? 0)} diff --git a/src/components/usage/TokenBreakdownChart.tsx b/src/components/usage/TokenBreakdownChart.tsx index 1ff0990..7b1084a 100644 --- a/src/components/usage/TokenBreakdownChart.tsx +++ b/src/components/usage/TokenBreakdownChart.tsx @@ -13,7 +13,7 @@ import type { UsagePayload } from './hooks/useUsageData'; import styles from '@/pages/UsagePage.module.scss'; const TOKEN_COLORS: Record = { - input: { border: '#3b82f6', bg: 'rgba(59, 130, 246, 0.25)' }, + input: { border: '#8b8680', bg: 'rgba(139, 134, 128, 0.25)' }, output: { border: '#22c55e', bg: 'rgba(34, 197, 94, 0.25)' }, cached: { border: '#f59e0b', bg: 'rgba(245, 158, 11, 0.25)' }, reasoning: { border: '#8b5cf6', bg: 'rgba(139, 92, 246, 0.25)' } diff --git a/src/components/usage/hooks/useSparklines.ts b/src/components/usage/hooks/useSparklines.ts index 491a317..5b6e6ad 100644 --- a/src/components/usage/hooks/useSparklines.ts +++ b/src/components/usage/hooks/useSparklines.ts @@ -104,7 +104,7 @@ export function useSparklines({ usage, loading }: UseSparklinesOptions): UseSpar ); const requestsSparkline = useMemo( - () => buildSparkline(buildLastHourSeries('requests'), '#3b82f6', 'rgba(59, 130, 246, 0.18)'), + () => buildSparkline(buildLastHourSeries('requests'), '#8b8680', 'rgba(139, 134, 128, 0.18)'), [buildLastHourSeries, buildSparkline] ); diff --git a/src/pages/AiProvidersOpenAIEditPage.tsx b/src/pages/AiProvidersOpenAIEditPage.tsx index e9ee79b..2b42681 100644 --- a/src/pages/AiProvidersOpenAIEditPage.tsx +++ b/src/pages/AiProvidersOpenAIEditPage.tsx @@ -59,7 +59,7 @@ function StatusSuccessIcon() { function StatusErrorIcon() { return ( - +