feat: add LIMITED subscription status support with traffic-exhausted UX

- Add is_limited to Subscription type
- Show yellow traffic-exhausted badge on Subscription and AdminUsers pages
- SubscriptionCardExpired: amber theme with warning icon and buy-traffic CTA for limited
- Dashboard: route limited subscriptions to SubscriptionCardExpired
- Subscription page: show additional options (buy traffic) for limited subs
- Use is_limited boolean instead of status string comparison
- Add trafficLimited translations for ru, en, zh, fa
- AdminUserDetail StatusBadge: add limited yellow styling
This commit is contained in:
Fringg
2026-03-12 18:33:37 +03:00
parent d9bfb8427c
commit b4f9f332cf
10 changed files with 281 additions and 126 deletions

View File

@@ -163,6 +163,7 @@
"telegramRetryFailed": "تایید هویت ناموفق بود. برنامه را ببندید و دوباره باز کنید.",
"telegramReopenHint": "اگر مشکل ادامه دارد، برنامه را ببندید و دوباره باز کنید",
"telegramNotConfigured": "ربات تلگرام پیکربندی نشده",
"telegramUnavailable": "ورود از طریق تلگرام موقتاً در دسترس نیست",
"authenticating": "در حال تایید هویت...",
"orOpenInApp": "یا ربات را در برنامه باز کنید",
"loginFailed": "ورود ناموفق",
@@ -250,6 +251,9 @@
"inactive": "غیرفعال",
"trialStatus": "دوره آزمایشی",
"expired": "منقضی شده",
"trafficLimited": "ترافیک تمام شده",
"trafficLimitedTitle": "محدودیت ترافیک",
"trafficLimitedDescription": "ترافیک شما تمام شده است. برای ادامه استفاده از VPN، ترافیک اضافی خریداری کنید.",
"expiresAt": "تاریخ انقضا",
"daysLeft": "روز باقی‌مانده",
"devices": "دستگاه‌ها",