add admin pages layouts
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
export default function Page() {
|
||||
return (
|
||||
<div className="admin-content">
|
||||
<div className="content-header">
|
||||
<h3>📈 Аналитика</h3>
|
||||
<div className="content-header-actions">
|
||||
<select id="analytics-period">
|
||||
<option value="today">Сегодня</option>
|
||||
<option value="week">Неделя</option>
|
||||
<option value="month">Месяц</option>
|
||||
<option value="year">Год</option>
|
||||
</select>
|
||||
<button className="btn btn-primary">
|
||||
<span>📊</span>
|
||||
<span>Сгенерировать отчет</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div className="content-body">
|
||||
<div className="chart-container">
|
||||
<h4>Регистрации пользователей</h4>
|
||||
<canvas id="registrations-chart" width="400" height="100"></canvas>
|
||||
</div>
|
||||
|
||||
<div className="chart-container">
|
||||
<h4>Загрузка контента</h4>
|
||||
<canvas id="content-chart" width="400" height="100"></canvas>
|
||||
</div>
|
||||
|
||||
<div className="chart-container">
|
||||
<h4>Доходы</h4>
|
||||
<canvas id="revenue-chart" width="400" height="100"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
export default function Page() {
|
||||
return (
|
||||
<div className="admin-content">
|
||||
<div className="content-header">
|
||||
<h3>🔌 Управление API</h3>
|
||||
<div className="content-header-actions">
|
||||
<button className="btn btn-primary">
|
||||
<span>➕</span>
|
||||
<span>Создать API ключ</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div className="content-body" id="api-container">
|
||||
<div className="empty-state">
|
||||
<div className="empty-state-icon">🔌</div>
|
||||
<h4>Нет API ключей</h4>
|
||||
<p>Создайте первый API ключ для интеграции</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
export default function Page() {
|
||||
return (
|
||||
<div className="admin-content">
|
||||
<div className="content-header">
|
||||
<h3>Управление контентом</h3>
|
||||
<div className="content-header-actions">
|
||||
<div className="search-box">
|
||||
<span>🔍</span>
|
||||
<input type="text" id="content-search" placeholder="Поиск контента..." />
|
||||
</div>
|
||||
<select id="content-type-filter">
|
||||
<option value="all">Все типы</option>
|
||||
<option value="image">Изображения</option>
|
||||
<option value="video">Видео</option>
|
||||
<option value="audio">Аудио</option>
|
||||
<option value="document">Документы</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div className="content-body" id="content-container">
|
||||
<div className="empty-state">
|
||||
<div className="empty-state-icon">🗂️</div>
|
||||
<h4>Контент не найден</h4>
|
||||
<p>Попробуйте изменить параметры поиска</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
export default function Page() {
|
||||
return (
|
||||
<div className="admin-content">
|
||||
<div className="content-header">
|
||||
<h3>DMCA жалобы</h3>
|
||||
<div className="content-header-actions">
|
||||
<button className="btn btn-primary">
|
||||
<span>🔗</span>
|
||||
<span>Открыть полную панель DMCA</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div className="content-body">
|
||||
<div className="stats-grid">
|
||||
<div className="stat-card">
|
||||
<div className="stat-card-header">
|
||||
<span className="stat-card-title">Всего жалоб</span>
|
||||
<div className="stat-card-icon blue">📤</div>
|
||||
</div>
|
||||
<div className="stat-card-value">3</div>
|
||||
<div className="stat-card-label">Создано жалоб</div>
|
||||
</div>
|
||||
|
||||
<div className="stat-card">
|
||||
<div className="stat-card-header">
|
||||
<span className="stat-card-title">Ожидают</span>
|
||||
<div className="stat-card-icon orange">⏳</div>
|
||||
</div>
|
||||
<div className="stat-card-value">0</div>
|
||||
<div className="stat-card-label">На рассмотрении</div>
|
||||
</div>
|
||||
|
||||
<div className="stat-card">
|
||||
<div className="stat-card-header">
|
||||
<span className="stat-card-title">Отправлено</span>
|
||||
<div className="stat-card-icon cyan">📨</div>
|
||||
</div>
|
||||
<div className="stat-card-value">1</div>
|
||||
<div className="stat-card-label">Отправлено платформам</div>
|
||||
</div>
|
||||
|
||||
<div className="stat-card">
|
||||
<div className="stat-card-header">
|
||||
<span className="stat-card-title">Успешно</span>
|
||||
<div className="stat-card-icon green">✅</div>
|
||||
</div>
|
||||
<div className="stat-card-value">0</div>
|
||||
<div className="stat-card-label">Успешно обработано</div>
|
||||
</div>
|
||||
|
||||
<div className="stat-card">
|
||||
<div className="stat-card-header">
|
||||
<span className="stat-card-title">Ошибки</span>
|
||||
<div className="stat-card-icon red">❌</div>
|
||||
</div>
|
||||
<div className="stat-card-value">0</div>
|
||||
<div className="stat-card-label">С ошибками</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<h4>Быстрые действия</h4>
|
||||
<div>
|
||||
<button className="btn btn-primary">
|
||||
Все жалобы
|
||||
</button>
|
||||
<button className="btn btn-secondary">
|
||||
Создать жалобу
|
||||
</button>
|
||||
<button className="btn btn-outline">
|
||||
Ожидающие
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
export default function Page() {
|
||||
return (
|
||||
<div className="admin-content">
|
||||
<div className="content-header">
|
||||
<h3>Email уведомления</h3>
|
||||
<div className="content-header-actions">
|
||||
<button className="btn btn-primary">
|
||||
<span>🔗</span>
|
||||
<span>Открыть панель Email</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div className="content-body">
|
||||
<div className="content-body-section">
|
||||
<h4>Еженедельные отчеты</h4>
|
||||
<p>
|
||||
Отправка еженедельных email-отчетов пользователям о мониторинге авторских прав
|
||||
</p>
|
||||
<div className="flex gap-4">
|
||||
<button className="btn btn-primary">
|
||||
Управление отчетами
|
||||
</button>
|
||||
<button className="btn btn-secondary">
|
||||
Предпросмотр
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="content-body-section">
|
||||
<h4>Массовая рассылка</h4>
|
||||
<form>
|
||||
<div className="form-group">
|
||||
<label>Тема письма</label>
|
||||
<input type="text" id="broadcast-subject" placeholder="Введите тему письма" />
|
||||
</div>
|
||||
<div className="form-group">
|
||||
<label>Сообщение</label>
|
||||
<textarea id="broadcast-message" placeholder="Введите текст сообщения"></textarea>
|
||||
</div>
|
||||
<button type="submit" className="btn btn-success">
|
||||
<span>📧</span>
|
||||
<span>Отправить всем пользователям</span>
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -6,7 +6,7 @@ import { getQueryClient } from '@/app/providers/getQueryClient';
|
||||
import { HydrationBoundary, dehydrate } from '@tanstack/react-query';
|
||||
import { prefetchLayoutQueries } from '@/app/lib/prefetch-queries';
|
||||
import { routing } from '@/i18n/routing';
|
||||
import AdminNavLinks from '@/app/ui/admin-nav-links'
|
||||
import AdminNavLinks from '@/app/ui/navigation/admin-nav-links'
|
||||
import AdminHeaderPanel from '@/app/ui/admin-header-panel';
|
||||
|
||||
import "../styles/globals.css";
|
||||
|
||||
@@ -1,7 +1,12 @@
|
||||
import SubscriptionTable from '@/app/ui/subscriptions/subscriptions-table';
|
||||
|
||||
export default function Page() {
|
||||
return (
|
||||
<div>
|
||||
subscriptions-page
|
||||
<div className="admin-content">
|
||||
<div className="content-header">
|
||||
<h3>Управление подписками</h3>
|
||||
</div>
|
||||
<SubscriptionTable />
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
import SystemLogsTable from '@/app/ui/system-logs/system-logs-table';
|
||||
export default function Page() {
|
||||
return (
|
||||
<div className="admin-content">
|
||||
<div className="content-header">
|
||||
<h3>Системные логи</h3>
|
||||
</div>
|
||||
<SystemLogsTable />
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,88 @@
|
||||
export default function Page() {
|
||||
return (
|
||||
<div className="admin-content">
|
||||
<div className="content-header">
|
||||
<h3>⚙️ Системные настройки</h3>
|
||||
</div>
|
||||
<div className="content-body">
|
||||
<div className="stats-grid">
|
||||
<div className="stat-card">
|
||||
<div className="stat-card-header">
|
||||
<span className="stat-card-title">База данных</span>
|
||||
<div className="stat-card-icon blue">💾</div>
|
||||
</div>
|
||||
<div className="stat-card-value" id="db-size">12.55</div>
|
||||
<div className="stat-card-label">Размер БД (MB)</div>
|
||||
<div className="stat-card-footer">
|
||||
<button className="btn btn-outline btn-sm">
|
||||
Оптимизировать
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="stat-card">
|
||||
<div className="stat-card-header">
|
||||
<span className="stat-card-title">PHP Version</span>
|
||||
<div className="stat-card-icon green">🐘</div>
|
||||
</div>
|
||||
<div className="stat-card-value" id="php-version">8.2.29</div>
|
||||
<div className="stat-card-label">Версия PHP</div>
|
||||
</div>
|
||||
|
||||
<div className="stat-card">
|
||||
<div className="stat-card-header">
|
||||
<span className="stat-card-title">MySQL Version</span>
|
||||
<div className="stat-card-icon orange">🐬</div>
|
||||
</div>
|
||||
<div className="stat-card-value" id="mysql-version">5.7.44-48</div>
|
||||
<div className="stat-card-label">Версия MySQL</div>
|
||||
</div>
|
||||
|
||||
<div className="stat-card">
|
||||
<div className="stat-card-header">
|
||||
<span className="stat-card-title">Свободное место</span>
|
||||
<div className="stat-card-icon purple">💿</div>
|
||||
</div>
|
||||
<div className="stat-card-value" id="disk-free">767.02</div>
|
||||
<div className="stat-card-label">GB доступно</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="system-grid-wrapper">
|
||||
<div className="content-body-section">
|
||||
<h4>Обслуживание системы</h4>
|
||||
<div className="system-action-list">
|
||||
<button className="btn btn-primary">
|
||||
<span>Проверка здоровья системы</span>
|
||||
</button>
|
||||
<button className="btn btn-secondary">
|
||||
<span>Оптимизация БД</span>
|
||||
</button>
|
||||
<button className="btn btn-success">
|
||||
<span>Создать резервную копию</span>
|
||||
</button>
|
||||
<button className="btn btn-warning">
|
||||
<span>Очистка системы</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="content-body-section">
|
||||
<h4>Обновления и мониторинг</h4>
|
||||
<div className="system-action-list">
|
||||
<button className="btn btn-primary">
|
||||
<span>Проверить обновления</span>
|
||||
</button>
|
||||
<button className="btn btn-primary">
|
||||
<span>Обновить статистику</span>
|
||||
</button>
|
||||
<button className="btn btn-primary">
|
||||
<span>Экспорт всех данных</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -2,7 +2,7 @@ export default function Page() {
|
||||
return (
|
||||
<div className="admin-content">
|
||||
<div className="content-header">
|
||||
<h3>📋 Управление тарифными планами</h3>
|
||||
<h3>Управление тарифными планами</h3>
|
||||
<div className="content-header-actions">
|
||||
<button className="btn btn-primary">
|
||||
<span>➕</span>
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
import { UsersTable } from '@/app/ui/users/users-table';
|
||||
export default async function Page() {
|
||||
return (
|
||||
<div>
|
||||
users-page
|
||||
<div className="admin-content">
|
||||
<div className="content-header">
|
||||
<h3>Управление пользователями</h3>
|
||||
</div>
|
||||
<UsersTable />
|
||||
</div>
|
||||
)
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
import ViolationsTable from '@/app/ui/violations/violations-table';
|
||||
|
||||
export default async function Page() {
|
||||
return (
|
||||
<div className="admin-content">
|
||||
<div className="content-header">
|
||||
<h3>Управление нарушениями</h3>
|
||||
</div>
|
||||
<ViolationsTable />
|
||||
</div>
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user