import { useState, useEffect, useMemo } from 'react' import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query' import { Link } from 'react-router-dom' import { useTranslation } from 'react-i18next' import { DotLottieReact } from '@lottiefiles/dotlottie-react' import { useAuthStore } from '../store/auth' import { subscriptionApi } from '../api/subscription' import { referralApi } from '../api/referral' import { balanceApi } from '../api/balance' import { wheelApi } from '../api/wheel' import ConnectionModal from '../components/ConnectionModal' import Onboarding, { useOnboarding } from '../components/Onboarding' import PromoOffersSection from '../components/PromoOffersSection' import { useCurrency } from '../hooks/useCurrency' // Icons const ArrowRightIcon = () => ( ) const SparklesIcon = () => ( ) const ChevronRightIcon = () => ( ) const RefreshIcon = ({ className = "w-4 h-4" }: { className?: string }) => ( ) // Check if device might be low-performance (Telegram WebApp on mobile) const isLowPerfDevice = (() => { const isTelegramWebApp = !!(window as unknown as { Telegram?: { WebApp?: unknown } }).Telegram?.WebApp const isMobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent) return isTelegramWebApp && isMobile })() const SupportLottieIcon = () => { // Use static icon on low-performance devices if (isLowPerfDevice) { return ( ) } return (
{t('dashboard.yourSubscription')}
{t('subscription.trial.description', 'Try our VPN service for free!')}
{t('subscription.trial.price', 'Activation price')}: {trialInfo.price_rubles.toFixed(2)} ₽
)} {trialError && ({t('wheel.banner.description')}