feat: apply new Мои Товары design system across all templates

Replace Pico CSS with custom design: dark sidebar layout, Golos Text +
JetBrains Mono fonts, orange accent (#FF5500), new component classes
(cards, tables, buttons, tags, toggles, alerts, tabs, login split-panel).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
mguschin
2026-05-18 12:43:08 +03:00
parent 75513e647d
commit eb4165e48b
25 changed files with 2201 additions and 1889 deletions

View File

@@ -1,71 +1,102 @@
{% extends "base.html" %}
{% block title %}Синхронизация — ЭВОСИНК{% endblock %}
{% block title %}Синхронизация — Мои Товары{% endblock %}
{% block page_title %}Синхронизация{% endblock %}
{% block content %}
<div class="d-flex justify-between align-center mb-3">
<h1 style="font-size:1.3rem; margin:0;"><i class="bi bi-arrow-repeat me-2"></i>Синхронизация</h1>
</div>
<div class="pg-title">Синхронизация</div>
<div class="pg-sub">Настройка и управление синхронизацией товаров Эвотор → VK Market</div>
{% if saved %}
<div role="alert" class="alert alert-success"><p>Настройки сохранены.</p></div>
<div class="alert alert-gr">
<span><i class="bi bi-check-circle"></i></span>
<div>Настройки сохранены.</div>
</div>
{% endif %}
<form method="post" action="/sync/settings">
<article class="card mb-3">
<h2 style="font-size:1.1rem; margin-bottom:1.25rem;">Фоновые задачи</h2>
<p class="text-muted small" style="margin-bottom:1.25rem;">Включайте поочерёдно: сначала проверьте зеркало Эвотор, затем ВК, затем синхронизацию.</p>
<div class="g2" style="align-items:start; margin-bottom:16px;">
<div style="display:flex; flex-direction:column; gap:1rem;">
<div class="card">
<div class="card-hd">
<div>
<div class="card-title">Фоновые задачи</div>
<div class="card-sub">Включайте поочерёдно: сначала Эвотор, затем ВК, затем синхронизацию</div>
</div>
</div>
<label style="display:flex; align-items:flex-start; gap:0.75rem; cursor:pointer;">
<input type="hidden" name="evo_mirror_enabled" value="0">
<input type="checkbox" name="evo_mirror_enabled" value="1" role="switch"
{% if config and config.evo_mirror_enabled %}checked{% endif %}
style="margin-top:0.2rem; flex-shrink:0;">
<span>
<strong>Зеркало Эвотор</strong><br>
<span class="text-muted small">Периодически импортирует товары, группы и магазины из Эвотор в локальную базу.</span>
</span>
<div style="display:flex;flex-direction:column;gap:0;">
<div style="display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-bottom:1px solid #E4E6EE;">
<div>
<div style="font-size:13px;font-weight:600;color:#1C1F2E;">Зеркало Эвотор</div>
<div style="font-size:12px;color:#9EA8BE;margin-top:2px;">Импортирует товары, группы и магазины из Эвотор в локальную базу</div>
</div>
<label style="display:flex;align-items:center;gap:8px;cursor:pointer;margin:0;">
<input type="hidden" name="evo_mirror_enabled" value="0">
<input type="checkbox" name="evo_mirror_enabled" value="1"
{% if config and config.evo_mirror_enabled %}checked{% endif %}
id="evo_mirror_cb" style="display:none;">
<div class="tog {% if config and config.evo_mirror_enabled %}on{% endif %}"
onclick="this.previousElementSibling.click(); this.classList.toggle('on')"
id="evo_mirror_tog"></div>
</label>
</div>
<label style="display:flex; align-items:flex-start; gap:0.75rem; cursor:pointer;">
<input type="hidden" name="vk_mirror_enabled" value="0">
<input type="checkbox" name="vk_mirror_enabled" value="1" role="switch"
{% if config and config.vk_mirror_enabled %}checked{% endif %}
style="margin-top:0.2rem; flex-shrink:0;">
<span>
<strong>Зеркало ВК</strong><br>
<span class="text-muted small">Периодически импортирует альбомы и товары из VK Market в локальный кэш.</span>
</span>
<div style="display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-bottom:1px solid #E4E6EE;">
<div>
<div style="font-size:13px;font-weight:600;color:#1C1F2E;">Зеркало ВК</div>
<div style="font-size:12px;color:#9EA8BE;margin-top:2px;">Импортирует альбомы и товары из VK Market в локальный кэш</div>
</div>
<label style="display:flex;align-items:center;gap:8px;cursor:pointer;margin:0;">
<input type="hidden" name="vk_mirror_enabled" value="0">
<input type="checkbox" name="vk_mirror_enabled" value="1"
{% if config and config.vk_mirror_enabled %}checked{% endif %}
id="vk_mirror_cb" style="display:none;">
<div class="tog {% if config and config.vk_mirror_enabled %}on{% endif %}"
onclick="this.previousElementSibling.click(); this.classList.toggle('on')"></div>
</label>
</div>
<label style="display:flex; align-items:flex-start; gap:0.75rem; cursor:pointer;">
<input type="hidden" name="is_enabled" value="0">
<input type="checkbox" name="is_enabled" value="1" role="switch"
{% if config and config.is_enabled %}checked{% endif %}
style="margin-top:0.2rem; flex-shrink:0;">
<span>
<strong>Синхронизация</strong><br>
<span class="text-muted small">Зеркалит каталог Эвотор в VK Market: создаёт, обновляет и удаляет товары.</span>
</span>
<div style="display:flex;align-items:center;justify-content:space-between;padding:12px 0;">
<div>
<div style="font-size:13px;font-weight:600;color:#1C1F2E;">Синхронизация</div>
<div style="font-size:12px;color:#9EA8BE;margin-top:2px;">Зеркалит каталог Эвотор в VK Market: создаёт, обновляет и удаляет товары</div>
</div>
<label style="display:flex;align-items:center;gap:8px;cursor:pointer;margin:0;">
<input type="hidden" name="is_enabled" value="0">
<input type="checkbox" name="is_enabled" value="1"
{% if config and config.is_enabled %}checked{% endif %}
id="sync_cb" style="display:none;">
<div class="tog {% if config and config.is_enabled %}on{% endif %}"
onclick="this.previousElementSibling.click(); this.classList.toggle('on')"></div>
</label>
</div>
</div>
</article>
</div>
<article class="card mb-3">
<h2 style="font-size:1.1rem; margin-bottom:1.25rem;">Настройки цены</h2>
<label style="max-width:320px;">
Множитель цены
<input type="number" name="price_multiplier" step="0.0001" min="0.0001"
value="{{ config.price_multiplier if config else '1' }}"
placeholder="1">
<small class="text-muted">Цена из Эвотор умножается на это значение перед отправкой в ВК. По умолчанию: 1.</small>
</label>
</article>
<div class="card">
<div class="card-hd">
<div>
<div class="card-title">Настройки цены</div>
<div class="card-sub">Трансформация цен при передаче в VK Market</div>
</div>
</div>
<div class="form-row">
<label class="form-lbl">Множитель цены</label>
<input class="inp" type="number" name="price_multiplier" step="0.0001" min="0.0001"
value="{{ config.price_multiplier if config else '1' }}"
placeholder="1" style="max-width:160px;">
<div style="font-size:11px;color:#9EA8BE;margin-top:5px;">Цена из Эвотор умножается на это значение перед отправкой в ВК. По умолчанию: 1.</div>
</div>
</div>
<button type="submit">Сохранить</button>
</div>
<button type="submit" class="btn btn-primary">
<i class="bi bi-save"></i> Сохранить настройки
</button>
</form>
{% endblock %}