+ {/* Header */}
+
+
+ {/* Main Content */}
+
+ {/* Subscription Status Card */}
+
+
+
+
Ваша подписка
+
@{username}
+
+ {subscriptionStatus === 'active' ? (
+
+
+ Активна
+
+ ) : (
+
+ )}
+
+
+
+
+
+
+ Осталось дней
+
+
{daysRemaining}
+
{expiryDate}
+
+
+
+
+
+ Рефералы
+
+
{referralCount}
+
+{bonusDays} дней заработано
+
+
+
+
+ {/* Quick Actions */}
+
+
+
+
+
+
+
+
+
+
+
+
+ {/* Referral Progress (if has referrals) */}
+ {referralCount > 0 && (
+
+
🎉 Прогресс реферальной программы
+
+
+
+ До следующего бонуса
+ {referralCount}/5
+
+
+
+
+ {referralCount >= 5
+ ? '🎁 Вы получили месяц в подарок!'
+ : `Пригласите еще ${5 - referralCount} друзей и получите месяц бесплатно!`}
+
+
+
+ )}
+
+ {/* Setup Guide Link */}
+
+
+
+
+
+
Инструкция по настройке
+
Как подключить VPN на вашем устройстве
+
+
+
+
+
+
+ {/* Spacer для BottomNav */}
+
+
+
+ {/* Modals */}
+ {isQROpen && subscriptionUrl && (
+
setIsQROpen(false)} />
+ )}
+
+ {isReferralOpen && (
+ setIsReferralOpen(false)}
+ referralUrl={`https://t.me/${process.env.NEXT_PUBLIC_TELEGRAM_BOT_USERNAME || 'Dorod_vps_bot'}?start=ref_${username}`}
+ onShare={shareReferralLink}
+ onCopy={() => copyToClipboard(`https://t.me/${process.env.NEXT_PUBLIC_TELEGRAM_BOT_USERNAME || 'Dorod_vps_bot'}?start=ref_${username}`)}
+ />
+ )}
+
+ {/* Toast */}
+ {showToast && (
+
+ {toastMessage}
+
+ )}
+
+ );
+}
diff --git a/app/globals.css b/app/globals.css
index ec5f733..b5d33b3 100644
--- a/app/globals.css
+++ b/app/globals.css
@@ -2,6 +2,10 @@
@tailwind components;
@tailwind utilities;
+.safe-area-bottom {
+ padding-bottom: env(safe-area-inset-bottom, 0px);
+}
+
:root {
/* Hiddify Colors */
--primary: #2fbea5;
@@ -42,3 +46,8 @@ body {
.animate-marquee {
animation: marquee 20s linear infinite;
}
+
+/* Safe area для iOS (нижняя полоска) */
+.safe-area-bottom {
+ padding-bottom: env(safe-area-inset-bottom, 0px);
+}
diff --git a/app/help/page.tsx b/app/help/page.tsx
index 5c3c0c4..5e308e6 100644
--- a/app/help/page.tsx
+++ b/app/help/page.tsx
@@ -253,8 +253,8 @@ export default function HelpPage() {
- {/* Spacer для нижнего отступа */}
-