diff --git a/src/locales/en.json b/src/locales/en.json
index 95ce627..2eb78e2 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -305,6 +305,21 @@
"insufficientBalance": "Top up your balance to activate",
"unavailable": "Trial is not available"
},
+ "trialBanner": {
+ "title": "Trial period active",
+ "description": "You have {{days}} days left in your trial. Subscribe to continue using the service.",
+ "upgrade": "Choose a plan"
+ },
+ "trialInfo": {
+ "title": "Trial Period",
+ "description": "You are using a trial version. Choose a plan below for full access.",
+ "remaining": "remaining",
+ "upgradeNow": "Choose a plan"
+ },
+ "trialUpgrade": {
+ "title": "Choose a plan to continue",
+ "description": "Your trial period is ending soon. Select a plan to continue using VPN without restrictions."
+ },
"connection": {
"title": "Connect VPN",
"selectDevice": "Select your device",
diff --git a/src/locales/ru.json b/src/locales/ru.json
index 7f2f016..22beb2b 100644
--- a/src/locales/ru.json
+++ b/src/locales/ru.json
@@ -327,6 +327,21 @@
"insufficientBalance": "Пополните баланс для активации",
"unavailable": "Пробный период недоступен"
},
+ "trialBanner": {
+ "title": "Пробный период активен",
+ "description": "У вас осталось {{days}} дней пробного периода. Оформите подписку, чтобы продолжить пользоваться сервисом.",
+ "upgrade": "Выбрать тариф"
+ },
+ "trialInfo": {
+ "title": "Пробный период",
+ "description": "Вы используете пробную версию сервиса. Выберите тариф ниже для полного доступа.",
+ "remaining": "осталось",
+ "upgradeNow": "Выбрать тариф"
+ },
+ "trialUpgrade": {
+ "title": "Выберите тариф для продолжения",
+ "description": "Ваш пробный период скоро закончится. Выберите подходящий тариф, чтобы продолжить пользоваться VPN без ограничений."
+ },
"connection": {
"title": "Подключить VPN",
"selectDevice": "Выберите устройство",
diff --git a/src/pages/Dashboard.tsx b/src/pages/Dashboard.tsx
index ad5d5c8..534a7cd 100644
--- a/src/pages/Dashboard.tsx
+++ b/src/pages/Dashboard.tsx
@@ -300,14 +300,60 @@ export default function Dashboard() {
) : subscription ? (
-
+
-
{t('subscription.status')}
-
- {subscription.is_active ? t('subscription.active') : t('subscription.expired')}
+
+
{t('subscription.status')}
+ {subscription.tariff_name && (
+
{subscription.tariff_name}
+ )}
+
+
+ {subscription.is_trial
+ ? t('subscription.trialStatus')
+ : subscription.is_active
+ ? t('subscription.active')
+ : t('subscription.expired')}
+ {/* Trial Info Banner */}
+ {subscription.is_trial && subscription.is_active && (
+
+
+
+
+
+
+
+ {t('subscription.trialBanner.title')}
+
+
+ {t('subscription.trialBanner.description', { days: subscription.days_left })}
+
+
+ {t('subscription.trialBanner.upgrade')}
+
+
+
+
+
+ )}
+
{t('subscription.expiresAt')}
diff --git a/src/pages/Subscription.tsx b/src/pages/Subscription.tsx
index 0fab533..402de39 100644
--- a/src/pages/Subscription.tsx
+++ b/src/pages/Subscription.tsx
@@ -601,7 +601,9 @@ export default function Subscription() {
{/* Current Subscription */}
{subscription ? (
-
+
@@ -628,6 +630,57 @@ export default function Subscription() {
+ {/* Trial Period Info Banner */}
+ {subscription.is_trial && subscription.is_active && (
+
+
+
+
+
+ {t('subscription.trialInfo.title')}
+
+
+ {t('subscription.trialInfo.description')}
+
+
+
+
+ {subscription.days_left > 0
+ ? t('subscription.days', { count: subscription.days_left })
+ : `${subscription.hours_left}${t('subscription.hours')} ${subscription.minutes_left}${t('subscription.minutes')}`}
+
+ {t('subscription.trialInfo.remaining')}
+
+
+
+ {subscription.traffic_limit_gb || '∞'} GB
+
+ {t('subscription.traffic')}
+
+
+ {subscription.device_limit}
+ {t('subscription.devices')}
+
+
+
+
+
+ )}
+
{/* Connection Data - Top Priority */}
{subscription.subscription_url && (
@@ -1871,17 +1924,48 @@ export default function Subscription() {
+ {/* Trial upgrade prompt */}
+ {subscription?.is_trial && (
+
+
+
+
+
+ {t('subscription.trialUpgrade.title')}
+
+
+ {t('subscription.trialUpgrade.description')}
+
+
+
+
+ )}
+
{/* Legacy subscription notice - if user has subscription without tariff */}
{subscription && !subscription.is_trial && !subscription.tariff_id && (
- 📦 {t('subscription.legacy.selectTariffTitle')}
+ {t('subscription.legacy.selectTariffTitle')}
{t('subscription.legacy.selectTariffDescription')}
- ⚠️ {t('subscription.legacy.currentSubContinues')}
+ {t('subscription.legacy.currentSubContinues')}
)}
@@ -2070,20 +2154,64 @@ export default function Subscription() {
)}
-
-
- {tariff.traffic_limit_label}
-
-
-
+
+ {/* Traffic */}
+
+
+
+ {tariff.traffic_limit_label}
+
+
+ {/* Devices */}
+
+
+
{t('subscription.devices', { count: tariff.device_limit })}
-
-
-
+
+ {/* Servers */}
+
+
+
{t('subscription.servers', { count: tariff.servers_count })}
-
+
{/* Price info - daily or period-based */}