+
{t('billing.pendingReviewShort')}
)
- if (!paidUntil) return
{t('billing.neverPaidShort')}
+ if (!paidUntil)
+ return (
+
+ {t('billing.neverPaidShort')}
+
+ )
const days = getDaysRemaining(paidUntil)
const variant = days <= RED_THRESHOLD_DAYS ? 'destructive' : days <= YELLOW_THRESHOLD_DAYS ? 'warning' : 'success'
+ const remaining = formatRemaining(paidUntil, t)
+ const label = showDate
+ ? t('billing.paidUntilWithRemaining', {
+ date: new Date(paidUntil).toLocaleDateString(),
+ remaining,
+ })
+ : remaining
return (
-
- {formatRemaining(paidUntil, t)}
+
+ {label}
)
}
diff --git a/frontend/src/routes/admin/users.tsx b/frontend/src/routes/admin/users.tsx
index 0cc02b7..d868ae8 100644
--- a/frontend/src/routes/admin/users.tsx
+++ b/frontend/src/routes/admin/users.tsx
@@ -77,7 +77,7 @@ function AdminUsersPage() {
{user.billingEnabled ? (
-
+
) : (
—
)}
diff --git a/frontend/src/shared/lib/i18n.ts b/frontend/src/shared/lib/i18n.ts
index 0fb722a..a68e884 100644
--- a/frontend/src/shared/lib/i18n.ts
+++ b/frontend/src/shared/lib/i18n.ts
@@ -116,6 +116,7 @@ const resources = {
minutesRemaining: '{{count}} мин',
pendingReviewShort: 'На проверке',
pendingReviewHint: 'Оплата отправлена на проверку администратору — доступ не будет приостановлен, пока заявка не решена.',
+ paidUntilWithRemaining: 'до {{date}} ({{remaining}})',
newRequest: 'Оформить оплату',
period: 'Период',
periods: {
@@ -642,6 +643,7 @@ const resources = {
minutesRemaining: '{{count}}m',
pendingReviewShort: 'Under review',
pendingReviewHint: 'Payment sent for admin review — access will not be suspended until the request is decided.',
+ paidUntilWithRemaining: 'until {{date}} ({{remaining}})',
newRequest: 'Set up payment',
period: 'Period',
periods: {
|