add dashboard layout

This commit is contained in:
smanylov
2025-11-26 17:18:20 +07:00
parent ebca795c1b
commit 12f788829f
9 changed files with 860 additions and 2 deletions
+89
View File
@@ -0,0 +1,89 @@
export default function ChartContainer() {
return (
<div className="chart-container block-wrapper">
<div className="chart-header">
<h3 className="chart-title">Поиск контента</h3>
<select className="date-filter">
<option>Ноябрь 2025</option>
</select>
</div>
<div className="chart-main-content">
<div className="chart-grid">
<div className="chart-item images">
<div className="chart-item-header">
<div className="chart-item-image">📸</div>
<span className="chart-item-title">Изображения</span>
</div>
<div className="chart-item-count">0</div>
<div className="chart-item-tooltip">поисковых запросов</div>
<div className="chart-item-progress-bar">
<div className="chart-item-progress-fill"></div>
</div>
</div>
<div className="chart-item videos">
<div className="chart-item-header">
<div className="chart-item-image">🎬</div>
<span className="chart-item-title">Видео</span>
</div>
<div className="chart-item-count">0</div>
<div className="chart-item-tooltip">поисковых запросов</div>
<div className="chart-item-progress-bar">
<div className="chart-item-progress-fill"></div>
</div>
</div>
<div className="chart-item audios">
<div className="chart-item-header">
<div className="chart-item-image">🎵</div>
<span className="chart-item-title">Аудио</span>
</div>
<div className="chart-item-count">0</div>
<div className="chart-item-tooltip">поисковых запросов</div>
<div className="chart-item-progress-bar">
<div className="chart-item-progress-fill"></div>
</div>
</div>
<div className="chart-item documents">
<div className="chart-item-header">
<div className="chart-item-image">📄</div>
<span className="chart-item-title">Документы</span>
</div>
<div className="chart-item-count">0</div>
<div className="chart-item-tooltip">поисковых запросов</div>
<div className="chart-item-progress-bar">
<div className="chart-item-progress-fill"></div>
</div>
</div>
<div className="chart-item scripts">
<div className="chart-item-header">
<div className="chart-item-image">💻</div>
<span className="chart-item-title">Код</span>
</div>
<div className="chart-item-count">0</div>
<div className="chart-item-tooltip">поисковых запросов</div>
<div className="chart-item-progress-bar">
<div className="chart-item-progress-fill"></div>
</div>
</div>
<div className="chart-item texts">
<div className="chart-item-header">
<div className="chart-item-image">📝</div>
<span className="chart-item-title">Текст</span>
</div>
<div className="chart-item-count">0</div>
<div className="chart-item-tooltip">поисковых запросов</div>
<div className="chart-item-progress-bar">
<div className="chart-item-progress-fill"></div>
</div>
</div>
</div>
<div className="chart-total">
<span className="chart-total-text">Всего поисковых запросов за
<span> date</span>:
</span>
<span className="chart-total-count">
0</span>
</div>
</div>
</div>
)
}
@@ -3,6 +3,24 @@ export default function ProtectionOverview() {
<div className="protection-overview">
<h3>Защита вашего контента</h3>
<p>Текущий статус защищенности и активности системы мониторинга</p>
<div className="protection-stats">
<div className="protection-stat">
<div className="protection-stat-value">0</div>
<div className="protection-stat-label">Файлов с водяными знаками</div>
</div>
<div className="protection-stat">
<div className="protection-stat-value">0</div>
<div className="protection-stat-label">Высокий уровень защиты</div>
</div>
<div className="protection-stat">
<div className="protection-stat-value">0</div>
<div className="protection-stat-label">Всего проверок</div>
</div>
<div className="protection-stat">
<div className="protection-stat-value">0%</div>
<div className="protection-stat-label">Использовано лимитов</div>
</div>
</div>
</div>
)
}
@@ -0,0 +1,35 @@
export default function RecentFilesList() {
return (
<div className="recent-files-list block-wrapper">
<h3 className="chart-title">Новые файлы</h3>
<div className="file-item">
<div className="file-icon audio">🎵</div>
<div className="file-info">
<div className="file-name">file-name</div>
<div className="file-meta">
<span>date</span>
<span> check count</span>
</div>
</div>
</div>
<div className="file-item">
<div className="file-icon videos">🎬</div>
<div className="file-info">
<div className="file-name">file-name</div>
<div className="file-meta">
<span>date</span>
<span> check count</span></div>
</div>
</div>
<div className="file-item">
<div className="file-icon photos">📸</div>
<div className="file-info">
<div className="file-name">file-name</div>
<div className="file-meta">
<span>date</span>
<span> check count</span></div>
</div>
</div>
</div>
)
}
+35
View File
@@ -0,0 +1,35 @@
export default function StatsGrid() {
return (
<div className="stats-grid">
<div className="stat-card images">
<div className="stat-type">ИЗОБРАЖЕНИЯ</div>
<div className="stat-value">0 шт.</div>
<div className="stat-label">Ваши изображения</div>
<div className="stat-icon">
<span>0</span> МБ</div>
</div>
<div className="stat-card videos">
<div className="stat-type">ВИДЕО</div>
<div className="stat-value">0 шт.</div>
<div className="stat-label">Ваш видео контент</div>
<div className="stat-icon">
<span>0</span> МБ</div>
</div>
<div className="stat-card audio">
<div className="stat-type">АУДИО</div>
<div className="stat-value">0 шт.</div>
<div className="stat-label">Ваш аудио контент</div>
<div className="stat-icon">
<span>0</span> МБ</div>
</div>
<div className="stat-card scripts">
<div className="stat-type">PDF-ФАЙЛЫ</div>
<div className="stat-value">0 шт.</div>
<div className="stat-label">Ваши PDF-файлы</div>
<div className="stat-icon">
<span>0</span> КБ</div>
</div>
</div>
)
}
@@ -0,0 +1,65 @@
export default function StorageBreakdown() {
return (
<div className="storage-breakdown block-wrapper">
<h3 className="chart-title">Использование хранилища</h3>
<div className="storage-item">
<div className="storage-type">
<div className="storage-icon photos">📸</div>
<span>Изображения</span>
</div>
<div>0 МБ</div>
</div>
<div className="storage-item">
<div className="storage-type">
<div className="storage-icon videos">🎬</div>
<span>Видео</span>
</div>
<div>0 МБ</div>
</div>
<div className="storage-item">
<div className="storage-type">
<div className="storage-icon audio">🎵</div>
<span>Аудио</span>
</div>
<div>0 МБ</div>
</div>
<div className="storage-item">
<div className="storage-type">
<div className="storage-icon documents">📄</div>
<span>Документы</span>
</div>
<div>0 КБ</div>
</div>
<div className="storage-item">
<div className="storage-type">
<div className="storage-icon code">💻</div>
<span>Код (PHP/JS)</span>
</div>
<div>0 Б</div>
</div>
<div className="storage-item">
<div className="storage-type">
<div className="storage-icon text">📝</div>
<span>Текст</span>
</div>
<div>0 Б</div>
</div>
<div className="storage-footer">
<div className="storage-footer-header">
<span className="storage-footer-title">Общий объем:</span>
<span className="storage-footer-weight">0 МБ</span>
</div>
<div className="progress-bar">
<div className="progress-fill" style={{ width: "50%" }}></div>
</div>
</div>
</div>
)
}
+54
View File
@@ -0,0 +1,54 @@
export default function UserInfo() {
return (
<div className="user-info block-wrapper">
<h3 className="chart-title">Ваши данные</h3>
<div className="user-data">
<div className="user-field">
<strong>USER NAME</strong>
</div>
<div className="user-field">
Email: test@te.te
</div>
<div className="user-field">
Подписка: <strong>TYPE</strong>
</div>
<div className="user-field">
Подписка активна до: <strong>DATE</strong>
</div>
<div className="user-field user-field-limit">
<div className="user-field-limit-title">Лимиты подписки:</div>
<div className="user-field-limit-text">
📁 Файлов в месяц:
<span> 12 / 100</span>
</div>
<div className="user-field-limit-text">
💾 Хранилище: 1 ГБ
</div>
<div className="user-field-limit-progress-bar">
<div className="user-field-limit-progress-fill"></div>
</div>
<div className="user-field-limit-footer">
Использовано: 12%
</div>
</div>
</div>
<button className="btn btn-primary" style={{ width: "100%" }}>
Обновить данные
</button>
<div className="stats-mini">
<div className="stat-mini">
<div className="stat-mini-value">12</div>
<div className="stat-mini-label">Контента</div>
</div>
<div className="stat-mini">
<div className="stat-mini-value">12</div>
<div className="stat-mini-label">Файлов</div>
</div>
<div className="stat-mini">
<div className="stat-mini-value">208</div>
<div className="stat-mini-label">Нарушений</div>
</div>
</div>
</div>
)
}