Добавил больше цветовых схем

This commit is contained in:
AidarKC
2026-09-26 20:32:37 +03:00
parent f8900e531a
commit 451280edd2
5 changed files with 85 additions and 34 deletions
+6 -21
View File
@@ -2,7 +2,7 @@ import { confirmDialog } from '../components/confirm-dialog.js';
import { createTopBar } from '../components/topbar.js';
import { addAppLogEntry, authService, closeSavedProfile, state } from '../state.js';
import { isDeveloperToolsEnabled } from '../services/feature-settings.js';
import { getThemeMode, setThemeMode } from '../services/theme-service.js';
import { getThemeMode, resolveThemeMode, setThemeMode } from '../services/theme-service.js';
import { openPaletteEditor } from '../components/palette-editor.js';
export const pageMeta = { id: 'settings-view', title: 'Настройки' };
@@ -69,6 +69,7 @@ export function render({navigate, chrome}) {
<button type="button" class="tab-btn" role="radio" data-mode="dark">Ночь</button>
</div>
<span class="meta-muted">«Авто» — как на устройстве.</span>
<button type="button" class="secondary-btn settings-theme-editor" id="settings-theme-editor">Настроить цвета</button>
</div>
<div class="nav-list">
${row('settings-device', 'Устройства', 'Сеансы, подключение устройств, ключи')}
@@ -92,30 +93,15 @@ export function render({navigate, chrome}) {
};
syncThemeSwitch();
const LONG_PRESS_MS = 600;
let longPressTimer = 0;
let longPressFired = false;
const cancelLongPress = () => { window.clearTimeout(longPressTimer); longPressTimer = 0; };
themeSwitch.addEventListener('pointerdown', (event) => {
const mode = event.target.closest('[data-mode]')?.dataset.mode;
longPressFired = false;
if (mode !== 'light' && mode !== 'dark') return;
longPressTimer = window.setTimeout(() => {
longPressFired = true;
setThemeMode(mode);
syncThemeSwitch();
openPaletteEditor({ theme: mode });
}, LONG_PRESS_MS);
});
['pointerup', 'pointerleave', 'pointercancel'].forEach((type) => themeSwitch.addEventListener(type, cancelLongPress));
// На телефоне долгое нажатие иначе вызывает системное меню выделения.
themeSwitch.addEventListener('contextmenu', (event) => event.preventDefault());
themeSwitch.addEventListener('click', (event) => {
const mode = event.target.closest('[data-mode]')?.dataset.mode;
if (!mode || longPressFired) return;
if (!mode) return;
setThemeMode(mode);
syncThemeSwitch();
});
card.querySelector('#settings-theme-editor').addEventListener('click', () => {
openPaletteEditor({ theme: resolveThemeMode() });
});
card.querySelector('#settings-device').addEventListener('click', () => navigate('device-view'));
card.querySelector('#settings-remote-addblock').addEventListener('click', () => navigate('remote-addblock-session-view'));
@@ -209,7 +195,6 @@ export function render({navigate, chrome}) {
screen.cleanup = () => {
isDisposed = true;
cancelLongPress();
};
return screen;
}