chore: compact admin subscription stats cards
This commit is contained in:
@@ -492,7 +492,7 @@
|
|||||||
<AdminDashboardStack>
|
<AdminDashboardStack>
|
||||||
<AdminSectionHeader title={at("stats_section_audience", {}, "")} />
|
<AdminSectionHeader title={at("stats_section_audience", {}, "")} />
|
||||||
<AdminDashboardGrid columns={3}>
|
<AdminDashboardGrid columns={3}>
|
||||||
{#each Array(6) as _, i (i)}
|
{#each Array(3) as _, i (i)}
|
||||||
<Card.Root class="admin-cn-card-skeleton">
|
<Card.Root class="admin-cn-card-skeleton">
|
||||||
<Card.Header>
|
<Card.Header>
|
||||||
<span class="admin-skeleton admin-skeleton-line admin-skeleton-line-short"></span>
|
<span class="admin-skeleton admin-skeleton-line admin-skeleton-line-short"></span>
|
||||||
@@ -705,6 +705,8 @@
|
|||||||
<Card.Footer class="admin-cn-card-footer--stack">
|
<Card.Footer class="admin-cn-card-footer--stack">
|
||||||
<div class="admin-cn-card-footer-primary">
|
<div class="admin-cn-card-footer-primary">
|
||||||
{at("stats_trend_paid", { count: users.paid_subscriptions ?? 0 }, "")}
|
{at("stats_trend_paid", { count: users.paid_subscriptions ?? 0 }, "")}
|
||||||
|
· {at("stats_trend_free", { count: users.free_subscription_users ?? 0 }, "")}
|
||||||
|
· {at("stats_trend_trials", { count: users.trial_users ?? 0 }, "")}
|
||||||
</div>
|
</div>
|
||||||
<div class="admin-cn-card-footer-muted">
|
<div class="admin-cn-card-footer-muted">
|
||||||
{at("stats_card_active_subs_caption", {}, "")}
|
{at("stats_card_active_subs_caption", {}, "")}
|
||||||
@@ -712,74 +714,6 @@
|
|||||||
</Card.Footer>
|
</Card.Footer>
|
||||||
</Card.Root>
|
</Card.Root>
|
||||||
|
|
||||||
<Card.Root>
|
|
||||||
<Card.Header>
|
|
||||||
<Card.Description>{at("stats_label_paid_subs", {}, "")}</Card.Description>
|
|
||||||
<Card.Title>{users.paid_subscriptions ?? 0}</Card.Title>
|
|
||||||
<Card.Action>
|
|
||||||
<Badge variant="outline"
|
|
||||||
>{users.active_subscriptions
|
|
||||||
? Math.round(
|
|
||||||
((users.paid_subscriptions ?? 0) / (users.active_subscriptions || 1)) * 100
|
|
||||||
)
|
|
||||||
: 0}%</Badge
|
|
||||||
>
|
|
||||||
</Card.Action>
|
|
||||||
</Card.Header>
|
|
||||||
<Card.Footer class="admin-cn-card-footer--stack">
|
|
||||||
<div class="admin-cn-card-footer-primary">
|
|
||||||
{at("stats_trend_trials", { count: users.trial_users ?? 0 }, "")}
|
|
||||||
</div>
|
|
||||||
<div class="admin-cn-card-footer-muted">
|
|
||||||
{at("stats_trend_free", { count: users.free_subscription_users ?? 0 }, "")}
|
|
||||||
</div>
|
|
||||||
</Card.Footer>
|
|
||||||
</Card.Root>
|
|
||||||
|
|
||||||
<Card.Root>
|
|
||||||
<Card.Header>
|
|
||||||
<Card.Description>{at("stats_label_trial_users", {}, "")}</Card.Description>
|
|
||||||
<Card.Title>{users.trial_users ?? 0}</Card.Title>
|
|
||||||
<Card.Action>
|
|
||||||
<Badge variant="outline"
|
|
||||||
>{users.active_subscriptions
|
|
||||||
? Math.round(((users.trial_users ?? 0) / (users.active_subscriptions || 1)) * 100)
|
|
||||||
: 0}%</Badge
|
|
||||||
>
|
|
||||||
</Card.Action>
|
|
||||||
</Card.Header>
|
|
||||||
<Card.Footer class="admin-cn-card-footer--stack">
|
|
||||||
<div class="admin-cn-card-footer-primary">
|
|
||||||
{at("stats_card_trial_caption", {}, "")}
|
|
||||||
</div>
|
|
||||||
<div class="admin-cn-card-footer-muted">{at("stats_card_paid_caption", {}, "")}</div>
|
|
||||||
</Card.Footer>
|
|
||||||
</Card.Root>
|
|
||||||
|
|
||||||
<Card.Root>
|
|
||||||
<Card.Header>
|
|
||||||
<Card.Description>{at("stats_label_free_users", {}, "")}</Card.Description>
|
|
||||||
<Card.Title>{users.free_subscription_users ?? 0}</Card.Title>
|
|
||||||
<Card.Action>
|
|
||||||
<Badge variant="outline"
|
|
||||||
>{users.active_subscriptions
|
|
||||||
? Math.round(
|
|
||||||
((users.free_subscription_users ?? 0) / (users.active_subscriptions || 1)) * 100
|
|
||||||
)
|
|
||||||
: 0}%</Badge
|
|
||||||
>
|
|
||||||
</Card.Action>
|
|
||||||
</Card.Header>
|
|
||||||
<Card.Footer class="admin-cn-card-footer--stack">
|
|
||||||
<div class="admin-cn-card-footer-primary">
|
|
||||||
{at("stats_card_free_caption", {}, "")}
|
|
||||||
</div>
|
|
||||||
<div class="admin-cn-card-footer-muted">
|
|
||||||
{at("stats_trend_trials", { count: users.trial_users ?? 0 }, "")}
|
|
||||||
</div>
|
|
||||||
</Card.Footer>
|
|
||||||
</Card.Root>
|
|
||||||
|
|
||||||
<Card.Root>
|
<Card.Root>
|
||||||
<Card.Header>
|
<Card.Header>
|
||||||
<Card.Description>{at("stats_label_inactive", {}, "")}</Card.Description>
|
<Card.Description>{at("stats_label_inactive", {}, "")}</Card.Description>
|
||||||
|
|||||||
+1
-1
@@ -1100,7 +1100,7 @@
|
|||||||
"admin_stats_error": "Failed to load statistics: {error}",
|
"admin_stats_error": "Failed to load statistics: {error}",
|
||||||
"admin_stats_label_users": "Users",
|
"admin_stats_label_users": "Users",
|
||||||
"admin_stats_trend_banned": "Banned: {count}",
|
"admin_stats_trend_banned": "Banned: {count}",
|
||||||
"admin_stats_label_active_subs": "With active subscription",
|
"admin_stats_label_active_subs": "Active users",
|
||||||
"admin_stats_label_paid_subs": "Paid users",
|
"admin_stats_label_paid_subs": "Paid users",
|
||||||
"admin_stats_label_trial_users": "With trial subscription",
|
"admin_stats_label_trial_users": "With trial subscription",
|
||||||
"admin_stats_label_free_users": "With free subscription",
|
"admin_stats_label_free_users": "With free subscription",
|
||||||
|
|||||||
+1
-1
@@ -1100,7 +1100,7 @@
|
|||||||
"admin_stats_error": "Не удалось загрузить статистику: {error}",
|
"admin_stats_error": "Не удалось загрузить статистику: {error}",
|
||||||
"admin_stats_label_users": "Пользователи",
|
"admin_stats_label_users": "Пользователи",
|
||||||
"admin_stats_trend_banned": "В бане: {count}",
|
"admin_stats_trend_banned": "В бане: {count}",
|
||||||
"admin_stats_label_active_subs": "С активной подпиской",
|
"admin_stats_label_active_subs": "Активные пользователи",
|
||||||
"admin_stats_label_paid_subs": "Платные пользователи",
|
"admin_stats_label_paid_subs": "Платные пользователи",
|
||||||
"admin_stats_label_trial_users": "С пробной подпиской",
|
"admin_stats_label_trial_users": "С пробной подпиской",
|
||||||
"admin_stats_label_free_users": "С бесплатной подпиской",
|
"admin_stats_label_free_users": "С бесплатной подпиской",
|
||||||
|
|||||||
Reference in New Issue
Block a user