change general info block

This commit is contained in:
smanylov
2026-04-08 16:35:13 +07:00
parent affe9699df
commit c9f4c724d9
13 changed files with 338 additions and 153 deletions
+3 -3
View File
@@ -1,6 +1,6 @@
import DashboardGeneralInfo from '@/app/ui/dashboard-general-info'; import DashboardGeneralInfo from '@/app/ui/dashboard/dashboard-general-info';
import UsersTop from '@/app/ui/users-top'; import UsersTop from '@/app/ui/dashboard/users-top';
import SubscriptionsStatistic from '@/app/ui/subscriptions-statistic'; import SubscriptionsStatistic from '@/app/ui/dashboard/subscriptions-statistic';
export default function Page() { export default function Page() {
return ( return (
<div> <div>
+17 -9
View File
@@ -311,13 +311,12 @@
} }
.dashboard-general-info { .dashboard-general-info {
display: grid; margin-bottom: 20px;
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
gap: 20px;
margin-bottom: 24px;
} }
.users-top { .users-top {
margin-bottom: 20px;
&-user { &-user {
font-weight: 500; font-weight: 500;
} }
@@ -464,9 +463,14 @@
} }
} }
.stats-title {
font-size: 18px;
margin-bottom: 10px;
}
.stats-grid { .stats-grid {
display: grid; display: grid;
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); grid-template-columns: repeat(4, minmax(240px, 1fr));
gap: 20px; gap: 20px;
margin-bottom: 24px; margin-bottom: 24px;
@@ -483,11 +487,15 @@
transform: translateY(-2px); transform: translateY(-2px);
} }
.stat-card-header { .stat-card-group {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
margin-bottom: 12px; margin-bottom: 12px;
&:last-child {
margin-bottom: 0;
}
} }
.stat-card-title { .stat-card-title {
@@ -498,7 +506,7 @@
letter-spacing: 0.5px; letter-spacing: 0.5px;
} }
.stat-card-icon { .stat-card-value {
width: 40px; width: 40px;
height: 40px; height: 40px;
border-radius: 10px; border-radius: 10px;
@@ -510,12 +518,12 @@
background: #eff6ff; background: #eff6ff;
} }
.stat-card-value { /* .stat-card-value {
font-size: 32px; font-size: 32px;
font-weight: 700; font-weight: 700;
color: var(--text-primary); color: var(--text-primary);
margin-bottom: 4px; margin-bottom: 4px;
} } */
.stat-card-label { .stat-card-label {
font-size: 12px; font-size: 12px;
+1 -1
View File
@@ -8,7 +8,7 @@ export default function AdminHeaderPanel() {
<h2>Панель администратора</h2> <h2>Панель администратора</h2>
</div> </div>
<div className="admin-header-right"> <div className="admin-header-right">
<LanguageSwitcher /> {/* <LanguageSwitcher /> */}
<div className="admin-user-info"> <div className="admin-user-info">
<div className="admin-user-avatar"> <div className="admin-user-avatar">
+ +
-140
View File
@@ -1,140 +0,0 @@
export default function DashboardGeneralInfo() {
return (
<div className="stats-grid">
<div className="stat-card">
<div className="stat-card-header">
<span className="stat-card-title">Всего пользователей</span>
<div className="stat-card-icon"></div>
</div>
<div className="stat-card-value">0</div>
<div className="stat-card-label">Зарегистрировано в системе</div>
<div className="stat-card-footer">
Активных за месяц: 0</div>
</div>
<div className="stat-card">
<div className="stat-card-header">
<span className="stat-card-title">Активные подписчики</span>
<div className="stat-card-icon"></div>
</div>
<div className="stat-card-value">0</div>
<div className="stat-card-label">Платные подписки</div>
<div className="stat-card-footer">
Конверсия: 0%
</div>
</div>
<div className="stat-card">
<div className="stat-card-header">
<span className="stat-card-title">Защищенный контент</span>
<div className="stat-card-icon"></div>
</div>
<div className="stat-card-value">0</div>
<div className="stat-card-label">Файлов защищено</div>
<div className="stat-card-footer">
Всего файлов: 0</div>
</div>
<div className="stat-card">
<div className="stat-card-header">
<span className="stat-card-title">Нарушения</span>
<div className="stat-card-icon"></div>
</div>
<div className="stat-card-value">0</div>
<div className="stat-card-label">Обнаружено нарушений</div>
<div className="stat-card-footer">
На рассмотрении: 0</div>
</div>
<div className="stat-card">
<div className="stat-card-header">
<span className="stat-card-title">Токены сегодня</span>
<div className="stat-card-icon"></div>
</div>
<div className="stat-card-value">0</div>
<div className="stat-card-label">Пополнено токенов</div>
<div className="stat-card-footer">
За неделю: 0 </div>
</div>
<div className="stat-card">
<div className="stat-card-header">
<span className="stat-card-title">Токены месяц</span>
<div className="stat-card-icon"></div>
</div>
<div className="stat-card-value">0</div>
<div className="stat-card-label">Пополнено за месяц</div>
<div className="stat-card-footer">
Потрачено: 0 </div>
</div>
<div className="stat-card">
<div className="stat-card-header">
<span className="stat-card-title">Доход сегодня</span>
<div className="stat-card-icon"></div>
</div>
<div className="stat-card-value">0</div>
<div className="stat-card-label">Заработано сегодня</div>
<div className="stat-card-footer">
За неделю: 0 </div>
</div>
<div className="stat-card">
<div className="stat-card-header">
<span className="stat-card-title">Доход месяц</span>
<div className="stat-card-icon"></div>
</div>
<div className="stat-card-value">0</div>
<div className="stat-card-label">Заработано за месяц</div>
<div className="stat-card-footer">
Всего: 0 </div>
</div>
<div className="stat-card">
<div className="stat-card-header">
<span className="stat-card-title">Траты токенов день</span>
<div className="stat-card-icon"></div>
</div>
<div className="stat-card-value">0</div>
<div className="stat-card-label">Потрачено сегодня</div>
<div className="stat-card-footer">
За неделю: 0 </div>
</div>
<div className="stat-card">
<div className="stat-card-header">
<span className="stat-card-title">Траты токенов год</span>
<div className="stat-card-icon"></div>
</div>
<div className="stat-card-value">0</div>
<div className="stat-card-label">Потрачено за год</div>
<div className="stat-card-footer">
За месяц: 0 </div>
</div>
<div className="stat-card">
<div className="stat-card-header">
<span className="stat-card-title">DMCA жалобы</span>
<div className="stat-card-icon"></div>
</div>
<div className="stat-card-value">0</div>
<div className="stat-card-label">Всего жалоб</div>
<div className="stat-card-footer">
Успешно: 0 | Ожидает: 1
</div>
</div>
<div className="stat-card">
<div className="stat-card-header">
<span className="stat-card-title">Использование диска</span>
<div className="stat-card-icon"></div>
</div>
<div className="stat-card-value">0.0 GB</div>
<div className="stat-card-label">Занято на диске</div>
<div className="stat-card-footer">
Файлов: 0</div>
</div>
</div>
)
}
@@ -0,0 +1,24 @@
'use client'
import GeneralInfoUsers from '@/app/ui/dashboard/general-info.tsx/general-info-users';
import GeneralInfoSubscriptions from '@/app/ui/dashboard/general-info.tsx/general-info-subscriptions';
import GeneralInfoContent from '@/app/ui/dashboard/general-info.tsx/general-info-content';
import GeneralInfoViolations from '@/app/ui/dashboard/general-info.tsx/general-info-violations';
import GeneralInfoTokens from '@/app/ui/dashboard/general-info.tsx/general-info-tokens';
import GeneralInfoIncome from '@/app/ui/dashboard/general-info.tsx/general-info-income';
export default function DashboardGeneralInfo() {
return (
<div
className="dashboard-general-info"
>
<GeneralInfoUsers />
<GeneralInfoSubscriptions />
<GeneralInfoContent />
<GeneralInfoViolations />
<GeneralInfoTokens />
<GeneralInfoIncome />
</div>
)
}
@@ -0,0 +1,47 @@
export default function GeneralInfoContent() {
return (
<div>
<h4
className="stats-title"
>
Защищенный контент (месяц/год)
</h4>
<div className="stats-grid">
<div className="stat-card">
<div className="stat-card-group">
<span className="stat-card-title">Всего файлов этом месяце</span>
<div className="stat-card-value">0</div>
</div>
<div className="stat-card-group">
<span className="stat-card-title">В прошлом месяце</span>
<div className="stat-card-value">0</div>
</div>
</div>
<div className="stat-card">
<div className="stat-card-group">
<span className="stat-card-title">Всего занято места в этом месяце</span>
<div className="stat-card-value">0</div>
</div>
<div className="stat-card-group">
<span className="stat-card-title">В прошлом месяце</span>
<div className="stat-card-value">0</div>
</div>
</div>
<div className="stat-card">
<div className="stat-card-group">
<span className="stat-card-title">Файлов на пользователя</span>
<div className="stat-card-value">0</div>
</div>
<div className="stat-card-group">
<span className="stat-card-title">Места на диске на пользователя</span>
<div className="stat-card-value">0</div>
</div>
</div>
</div>
</div>
)
}
@@ -0,0 +1,47 @@
export default function GeneralInfoIncome() {
return (
<div>
<h4
className="stats-title"
>
Доход (день/месяц)
</h4>
<div className="stats-grid">
<div className="stat-card">
<div className="stat-card-group">
<span className="stat-card-title">Всего заработано в этом месяце</span>
<div className="stat-card-value">0</div>
</div>
<div className="stat-card-group">
<span className="stat-card-title">В прошлом месяце</span>
<div className="stat-card-value">0</div>
</div>
</div>
<div className="stat-card">
<div className="stat-card-group">
<span className="stat-card-title">Всего заработано на любого пользователя в этом месяце</span>
<div className="stat-card-value">0</div>
</div>
<div className="stat-card-group">
<span className="stat-card-title">В прошлом месяце</span>
<div className="stat-card-value">0</div>
</div>
</div>
<div className="stat-card">
<div className="stat-card-group">
<span className="stat-card-title">Всего заработано на платного пользователя в этом месяце</span>
<div className="stat-card-value">0</div>
</div>
<div className="stat-card-group">
<span className="stat-card-title">В прошлом месяце</span>
<div className="stat-card-value">0</div>
</div>
</div>
</div>
</div>
)
}
@@ -0,0 +1,66 @@
export default function GeneralInfoSubscriptions() {
return (
<div>
<h4
className="stats-title"
>
Активные подписчики (месяц/год)
</h4>
<div className="stats-grid">
<div className="stat-card">
<div className="stat-card-group">
<span className="stat-card-title">Текущие платные подписки</span>
<div className="stat-card-value">0</div>
</div>
</div>
<div className="stat-card">
<div className="stat-card-group">
<span className="stat-card-title">оформили впервые в этом месяце</span>
<div className="stat-card-value">0</div>
</div>
<div className="stat-card-group">
<span className="stat-card-title">в прошлом месяце</span>
<div className="stat-card-value">0</div>
</div>
</div>
<div className="stat-card">
<div className="stat-card-group">
<span className="stat-card-title">продлили подпискув этом месяце</span>
<div className="stat-card-value">0</div>
</div>
<div className="stat-card-group">
<span className="stat-card-title">в прошлом месяце</span>
<div className="stat-card-value">0</div>
</div>
</div>
<div className="stat-card">
<div className="stat-card-group">
<span className="stat-card-title">сделали апгрейдв этом месяце</span>
<div className="stat-card-value">0</div>
</div>
<div className="stat-card-group">
<span className="stat-card-title">в прошлом месяце</span>
<div className="stat-card-value">0</div>
</div>
</div>
<div className="stat-card">
<div className="stat-card-group">
<span className="stat-card-title">сделали даунгрейдв этом месяце</span>
<div className="stat-card-value">0</div>
</div>
<div className="stat-card-group">
<span className="stat-card-title">в прошлом месяце</span>
<div className="stat-card-value">0</div>
</div>
</div>
</div>
</div>
)
}
@@ -0,0 +1,58 @@
export default function GeneralInfoTokens() {
return (
<div>
<h4
className="stats-title"
>
Токены (день/месяц)
</h4>
<div className="stats-grid">
<div className="stat-card">
<div className="stat-card-group">
<span className="stat-card-title">Всего купленов этом месяце</span>
<div className="stat-card-value">0</div>
</div>
<div className="stat-card-group">
<span className="stat-card-title">В прошлом месяце</span>
<div className="stat-card-value">0</div>
</div>
</div>
<div className="stat-card">
<div className="stat-card-group">
<span className="stat-card-title">Всего потраченов этом месяце</span>
<div className="stat-card-value">0</div>
</div>
<div className="stat-card-group">
<span className="stat-card-title">В прошлом месяце</span>
<div className="stat-card-value">0</div>
</div>
</div>
<div className="stat-card">
<div className="stat-card-group">
<span className="stat-card-title">Куплено на пользователя в этом месяце</span>
<div className="stat-card-value">0</div>
</div>
<div className="stat-card-group">
<span className="stat-card-title">В прошлом месяце</span>
<div className="stat-card-value">0</div>
</div>
</div>
<div className="stat-card">
<div className="stat-card-group">
<span className="stat-card-title">Потрачено на пользователя в этом месяце</span>
<div className="stat-card-value">0</div>
</div>
<div className="stat-card-group">
<span className="stat-card-title">В прошлом месяце</span>
<div className="stat-card-value">0</div>
</div>
</div>
</div>
</div>
)
}
@@ -0,0 +1,39 @@
export default function GeneralInfoUsers() {
return (
<div>
<h4
className="stats-title"
>
Кол-во пользователей и динамика
</h4>
<div className="stats-grid">
<div className="stat-card">
<div className="stat-card-group">
<span className="stat-card-title">Всего пользователей</span>
<div className="stat-card-value">0</div>
</div>
</div>
<div className="stat-card">
<div className="stat-card-group">
<span className="stat-card-title">Новых за текущий месяц</span>
<div className="stat-card-value">0</div>
</div>
<div className="stat-card-group">
<span className="stat-card-title">Новых за прошлый месяц</span>
<div className="stat-card-value">0</div>
</div>
</div>
<div className="stat-card">
<div className="stat-card-group">
<span className="stat-card-title">Дельта</span>
<div className="stat-card-value">0</div>
</div>
</div>
</div>
</div>
)
}
@@ -0,0 +1,36 @@
export default function GeneralInfoViolations() {
return (
<div>
<h4
className="stats-title"
>
Нарушения (день/месяц)
</h4>
<div className="stats-grid">
<div className="stat-card">
<div className="stat-card-group">
<span className="stat-card-title">Всего нарушений в этом месяце</span>
<div className="stat-card-value">0</div>
</div>
<div className="stat-card-group">
<span className="stat-card-title">В прошлом месяце</span>
<div className="stat-card-value">0</div>
</div>
</div>
<div className="stat-card">
<div className="stat-card-group">
<span className="stat-card-title">Подано жалоб в этом месяце</span>
<div className="stat-card-value">0</div>
</div>
<div className="stat-card-group">
<span className="stat-card-title">В прошлом месяце</span>
<div className="stat-card-value">0</div>
</div>
</div>
</div>
</div>
)
}