NoteJS/public/settings.html
Fovway 8fd529302f Реализовано переключение темной и светлой темы в интерфейсе
- Добавлены функции для переключения между темной и светлой темами с использованием localStorage.
- Обновлены стили для поддержки темной темы, включая цвета фона, текста и иконок.
- Добавлены кнопки для переключения темы на страницах входа, профиля, заметок и настроек.
- Оптимизирован код для предотвращения мерцания темы при загрузке страницы.
2025-10-25 17:14:04 +07:00

246 lines
8.8 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8" />
<meta
name="viewport"
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"
/>
<title>Настройки - NoteJS</title>
<!-- Предотвращение мерцания темы -->
<script>
(function () {
try {
const savedTheme = localStorage.getItem("theme");
const systemPrefersDark = window.matchMedia(
"(prefers-color-scheme: dark)"
).matches;
const theme = savedTheme || (systemPrefersDark ? "dark" : "light");
if (theme === "dark") {
document.documentElement.setAttribute("data-theme", "dark");
}
} catch (e) {}
})();
</script>
<!-- PWA Meta Tags -->
<meta
name="description"
content="NoteJS - современная система заметок с поддержкой Markdown, изображений, тегов и календаря"
/>
<meta name="theme-color" content="#007bff" />
<meta name="mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="default" />
<meta name="apple-mobile-web-app-title" content="NoteJS" />
<meta name="msapplication-TileColor" content="#007bff" />
<!-- Icons -->
<link rel="icon" type="image/svg+xml" href="/icon.svg" />
<link
rel="icon"
type="image/png"
sizes="32x32"
href="/icons/icon-32x32.png"
/>
<link
rel="icon"
type="image/png"
sizes="16x16"
href="/icons/icon-16x16.png"
/>
<link
rel="apple-touch-icon"
sizes="180x180"
href="/icons/icon-192x192.png"
/>
<link rel="mask-icon" href="/icon.svg" color="#007bff" />
<!-- Manifest -->
<link rel="manifest" href="/manifest.json" />
<!-- Styles -->
<link rel="stylesheet" href="/style.css?v=5" />
<!-- Scripts -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/iconify/2.0.0/iconify.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/marked/11.1.0/marked.min.js"></script>
</head>
<body>
<div class="container">
<header class="notes-header">
<span><span class="iconify" data-icon="mdi:cog"></span> Настройки</span>
<div class="user-info">
<button
id="theme-toggle-btn"
class="theme-toggle-btn"
title="Переключить тему"
>
<span class="iconify" data-icon="mdi:theme-light-dark"></span>
</button>
<a href="/notes" class="back-btn">
<span class="iconify" data-icon="mdi:note-text"></span> К заметкам
</a>
<a href="/profile" class="back-btn">
<span class="iconify" data-icon="mdi:account"></span> Профиль
</a>
</div>
</header>
<!-- Табы навигации -->
<div class="settings-tabs">
<button class="settings-tab active" data-tab="appearance">
<span class="iconify" data-icon="mdi:palette"></span> Внешний вид
</button>
<button class="settings-tab" data-tab="archive">
<span class="iconify" data-icon="mdi:archive"></span> Архив заметок
</button>
<button class="settings-tab" data-tab="logs">
<span class="iconify" data-icon="mdi:history"></span> История действий
</button>
</div>
<!-- Контент табов -->
<div class="settings-content">
<!-- Внешний вид -->
<div class="tab-content active" id="appearance-tab">
<h3>Внешний вид</h3>
<div class="form-group">
<label for="settings-accentColor">Цветовой акцент</label>
<div class="accent-color-picker">
<div
class="color-option"
data-color="#007bff"
style="background-color: #007bff"
title="Синий"
></div>
<div
class="color-option"
data-color="#28a745"
style="background-color: #28a745"
title="Зеленый"
></div>
<div
class="color-option"
data-color="#dc3545"
style="background-color: #dc3545"
title="Красный"
></div>
<div
class="color-option"
data-color="#fd7e14"
style="background-color: #fd7e14"
title="Оранжевый"
></div>
<div
class="color-option"
data-color="#6f42c1"
style="background-color: #6f42c1"
title="Фиолетовый"
></div>
<div
class="color-option"
data-color="#e83e8c"
style="background-color: #e83e8c"
title="Розовый"
></div>
</div>
<input
type="color"
id="settings-accentColor"
value="#007bff"
style="margin-top: 10px"
/>
</div>
<button id="updateAppearanceBtn" class="btnSave">
Сохранить изменения
</button>
</div>
<!-- Архив заметок -->
<div class="tab-content" id="archive-tab">
<h3>Архивные заметки</h3>
<p style="color: #666; font-size: 14px; margin-bottom: 20px">
Архивированные заметки можно восстановить или удалить окончательно
</p>
<div id="archived-notes-container" class="archived-notes-list">
<!-- Заметки будут загружены динамически -->
</div>
</div>
<!-- История действий -->
<div class="tab-content" id="logs-tab">
<h3>История действий</h3>
<!-- Фильтры -->
<div class="logs-filters">
<select id="logTypeFilter" class="log-filter-select">
<option value="">Все действия</option>
<option value="login">Вход</option>
<option value="logout">Выход</option>
<option value="register">Регистрация</option>
<option value="note_create">Создание заметки</option>
<option value="note_update">Редактирование заметки</option>
<option value="note_delete">Удаление заметки</option>
<option value="note_pin">Закрепление</option>
<option value="note_archive">Архивирование</option>
<option value="note_unarchive">Восстановление</option>
<option value="note_delete_permanent">
Окончательное удаление
</option>
<option value="profile_update">Обновление профиля</option>
</select>
<button id="refreshLogs" class="btnSave">
<span class="iconify" data-icon="mdi:refresh"></span> Обновить
</button>
</div>
<!-- Таблица логов -->
<div class="logs-table-container">
<table class="logs-table">
<thead>
<tr>
<th>Дата и время</th>
<th>Действие</th>
<th>Детали</th>
<th>IP-адрес</th>
</tr>
</thead>
<tbody id="logsTableBody">
<!-- Логи будут загружены динамически -->
</tbody>
</table>
</div>
<div
id="logsLoadMore"
class="load-more-container"
style="display: none"
>
<button id="loadMoreLogsBtn" class="btnSave">Загрузить еще</button>
</div>
</div>
</div>
</div>
<div id="settings-message-container" class="message-container"></div>
<div class="footer">
<p>Создатель: <span>Fovway</span></p>
</div>
<!-- Модальное окно для просмотра изображений -->
<div id="imageModal" class="image-modal">
<span class="image-modal-close">&times;</span>
<img class="image-modal-content" id="modalImage" loading="lazy" />
</div>
<script src="/settings.js"></script>
<script src="/pwa.js"></script>
</body>
</html>