From d526d095dec1c4dc80f45ccd7940516a49051f3b Mon Sep 17 00:00:00 2001 From: Fringg Date: Thu, 5 Mar 2026 10:56:45 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20=D0=B7=D0=B0=D0=BC=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20=D1=85=D0=B0=D1=80=D0=B4=D0=BA=D0=BE=D0=B4=D0=BD?= =?UTF-8?q?=D1=8B=D0=B9=20=D0=B7=D0=B5=D0=BB=D1=91=D0=BD=D1=8B=D0=B9=20(#3?= =?UTF-8?q?EDBB0)=20=D0=BD=D0=B0=20=D0=B0=D0=BA=D1=86=D0=B5=D0=BD=D1=82?= =?UTF-8?q?=D0=BD=D1=8B=D0=B9=20=D1=86=D0=B2=D0=B5=D1=82=20=D0=B8=D0=B7=20?= =?UTF-8?q?=D1=82=D0=B5=D0=BC=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Все вхождения #3EDBB0, #2BC49A и rgba(62,219,176,...) заменены на CSS-переменные --color-accent-400/500 из системы тем. Затронутые компоненты: - TrialOfferCard: кнопка, бордер, свечение, иконка - Subscription: лейблы, иконки, кнопки паузы/копирования - SubscriptionCardActive: бордер карточки, бейдж статуса - SubscriptionPurchase: градиент триал-блока - PurchaseCTAButton: градиент кнопки, иконка - TrafficProgressBar: цвета прогресс-бара - StatsGrid: убрана зависимость от useTrafficZone, используется accent напрямую - trafficZone.ts: добавлены mainVar/mainVarRaw для CSS-переменных - tailwind.config.js: trialGlow keyframes на accent цвет --- src/components/dashboard/StatsGrid.tsx | 15 ++--- .../dashboard/SubscriptionCardActive.tsx | 56 ++++++++++--------- .../dashboard/TrafficProgressBar.tsx | 34 ++++++----- src/components/dashboard/TrialOfferCard.tsx | 29 ++++++---- .../subscription/PurchaseCTAButton.tsx | 8 ++- src/pages/Dashboard.tsx | 1 - src/pages/Subscription.tsx | 35 +++++++----- src/pages/SubscriptionPurchase.tsx | 3 +- src/utils/trafficZone.ts | 12 ++++ tailwind.config.js | 4 +- 10 files changed, 114 insertions(+), 83 deletions(-) diff --git a/src/components/dashboard/StatsGrid.tsx b/src/components/dashboard/StatsGrid.tsx index 735d581..791ffd1 100644 --- a/src/components/dashboard/StatsGrid.tsx +++ b/src/components/dashboard/StatsGrid.tsx @@ -1,14 +1,11 @@ import { useTranslation } from 'react-i18next'; import { Link } from 'react-router'; -import type { Subscription } from '../../types'; import { useCurrency } from '../../hooks/useCurrency'; import { useTheme } from '../../hooks/useTheme'; -import { useTrafficZone } from '../../hooks/useTrafficZone'; import { getGlassColors } from '../../utils/glassTheme'; interface StatsGridProps { balanceRubles: number; - subscription: Subscription | null; referralCount: number; earningsRubles: number; refLoading: boolean; @@ -35,7 +32,6 @@ const ChevronIcon = ({ color }: { color: string }) => ( export default function StatsGrid({ balanceRubles, - subscription, referralCount, earningsRubles, refLoading, @@ -45,13 +41,14 @@ export default function StatsGrid({ const { isDark } = useTheme(); const g = getGlassColors(isDark); - const zone = useTrafficZone(subscription?.traffic_used_percent ?? 0); + const accentColor = 'rgb(var(--color-accent-400))'; + const accentBg = 'rgba(var(--color-accent-400), 0.07)'; const cards = [ { label: t('dashboard.stats.balance'), value: `${formatAmount(balanceRubles)} ${currencySymbol}`, - valueColor: zone.mainHex, + valueColor: accentColor, to: '/balance', icon: (color: string) => ( ), - iconBg: `${zone.mainHex}12`, - iconColor: zone.mainHex, + iconBg: accentBg, + iconColor: accentColor, loading: false, onboarding: 'balance', }, @@ -80,7 +77,7 @@ export default function StatsGrid({ value: `${referralCount}`, valueColor: g.text, subtitle: `+${formatAmount(earningsRubles)} ${currencySymbol}`, - subtitleColor: zone.mainHex, + subtitleColor: accentColor, to: '/referral', icon: (color: string) => ( {/* Trial shimmer border */} @@ -96,7 +98,7 @@ export default function SubscriptionCardActive({ width: 200, height: 200, borderRadius: '50%', - background: `radial-gradient(circle, ${zone.mainHex}${g.glowAlpha} 0%, transparent 70%)`, + background: `radial-gradient(circle, rgba(${zone.mainVarRaw}, ${isDark ? 0.08 : 0.03}) 0%, transparent 70%)`, transition: 'background 0.8s ease', }} aria-hidden="true" @@ -110,15 +112,15 @@ export default function SubscriptionCardActive({