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,86 +1,113 @@
{% extends "base.html" %}
{% block title %}Личный кабинет — ЭВОСИНК{% endblock %}
{% block title %}Профиль — Мои Товары{% endblock %}
{% block page_title %}Профиль{% endblock %}
{% block content %}
<div class="row justify-center">
<div class="col-sm-10 col-md-7 col-lg-6">
<article class="card mt-4">
<header>
<h1><i class="bi bi-person-circle me-2"></i>Личный кабинет</h1>
</header>
<ul class="list-group">
<li class="list-group-item">
<span class="text-muted small">Имя</span>
<span>{{ user.first_name }}</span>
</li>
<li class="list-group-item">
<span class="text-muted small">Фамилия</span>
<span>{{ user.last_name }}</span>
</li>
<li class="list-group-item">
<span class="text-muted small">Email</span>
<span>
{{ user.email }}
{% if user.is_email_confirmed %}
<span class="badge badge-success ms-1"><i class="bi bi-check-circle"></i> подтверждён</span>
{% else %}
<span class="badge badge-warning ms-1"><i class="bi bi-exclamation-circle"></i> не подтверждён</span>
{% endif %}
</span>
</li>
<li class="list-group-item">
<span class="text-muted small">Телефон</span>
<span>{{ user.phone }}</span>
</li>
<li class="list-group-item">
<span class="text-muted small">Роль</span>
<span>
{% if user.role == 'system' %}<span class="badge badge-danger">Системный</span>
{% elif user.role == 'admin' %}<span class="badge badge-warning">Администратор</span>
{% else %}<span class="badge badge-secondary">Пользователь</span>
{% endif %}
</span>
</li>
<li class="list-group-item">
<span class="text-muted small">Статус</span>
<span>
{% if user.status == 'active' %}<span class="badge badge-success">Активен</span>
{% elif user.status == 'pending' %}<span class="badge badge-warning">Ожидает подтверждения</span>
{% else %}<span class="badge badge-danger">Заблокирован</span>
{% endif %}
</span>
</li>
{% if user.evotor_user_id %}
<li class="list-group-item">
<span class="text-muted small">Эвотор ID</span>
<span class="font-monospace small">{{ user.evotor_user_id }}</span>
</li>
{% endif %}
<li class="list-group-item">
<span class="text-muted small">Регистрация</span>
<span>{{ user.created_at | datefmt }}</span>
</li>
</ul>
<div class="card-body d-grid gap-2">
<a href="/profile/edit" role="button">
<i class="bi bi-pencil me-1"></i>Редактировать профиль
</a>
<a href="/profile/change-password" role="button" class="secondary">
<i class="bi bi-key me-1"></i>Изменить пароль
</a>
{% if not user.is_email_confirmed %}
<a href="/resend-confirm" role="button" class="outline secondary">
<i class="bi bi-envelope me-1"></i>Отправить письмо с подтверждением
</a>
{% endif %}
<a href="/logout" role="button" class="outline secondary">
<i class="bi bi-box-arrow-right me-1"></i>Выход
</a>
<a href="/profile/delete" role="button" class="outline danger sm mt-2">
<i class="bi bi-trash me-1"></i>Удалить аккаунт
</a>
</div>
</article>
<div class="pg-title">Личный кабинет</div>
<div class="pg-sub">Ваши данные и настройки аккаунта</div>
<div class="g2" style="align-items:start;">
<div class="card">
<div class="card-hd">
<div>
<div class="card-title">Данные профиля</div>
<div class="card-sub">Основная информация об аккаунте</div>
</div>
<div class="avatar {% if user.role in ('admin','system') %}admin{% endif %}" style="width:44px;height:44px;font-size:15px;">
{{ user.first_name[0] if user.first_name else '?' }}{{ user.last_name[0] if user.last_name else '' }}
</div>
</div>
<div class="conn-detail">
<div class="conn-row">
<span class="conn-k">Имя</span>
<span class="conn-v" style="font-family:'Golos Text',sans-serif;">{{ user.first_name }}</span>
</div>
<div class="conn-row">
<span class="conn-k">Фамилия</span>
<span class="conn-v" style="font-family:'Golos Text',sans-serif;">{{ user.last_name }}</span>
</div>
<div class="conn-row">
<span class="conn-k">Email</span>
<span class="conn-v" style="display:flex;align-items:center;gap:6px;">
{{ user.email }}
{% if user.is_email_confirmed %}
<span class="tag tag-gr" style="font-size:10px;padding:1px 6px;"><i class="bi bi-check-circle"></i> подтверждён</span>
{% else %}
<span class="tag tag-yl" style="font-size:10px;padding:1px 6px;"><i class="bi bi-exclamation-circle"></i> не подтверждён</span>
{% endif %}
</span>
</div>
<div class="conn-row">
<span class="conn-k">Телефон</span>
<span class="conn-v">{{ user.phone or '—' }}</span>
</div>
<div class="conn-row">
<span class="conn-k">Роль</span>
<span class="conn-v" style="font-family:'Golos Text',sans-serif;">
{% if user.role == 'system' %}
<span class="tag tag-rd">Системный</span>
{% elif user.role == 'admin' %}
<span class="tag tag-or">Администратор</span>
{% else %}
<span class="tag tag-dim">Пользователь</span>
{% endif %}
</span>
</div>
<div class="conn-row">
<span class="conn-k">Статус</span>
<span class="conn-v" style="font-family:'Golos Text',sans-serif;">
{% if user.status == 'active' %}
<span class="tag tag-gr"><span class="dot g"></span>Активен</span>
{% elif user.status == 'pending' %}
<span class="tag tag-yl"><span class="dot y pulse"></span>Ожидает</span>
{% else %}
<span class="tag tag-rd"><span class="dot r"></span>Заблокирован</span>
{% endif %}
</span>
</div>
{% if user.evotor_user_id %}
<div class="conn-row">
<span class="conn-k">Эвотор ID</span>
<span class="conn-v">{{ user.evotor_user_id }}</span>
</div>
{% endif %}
<div class="conn-row">
<span class="conn-k">Регистрация</span>
<span class="conn-v">{{ user.created_at | datefmt }}</span>
</div>
</div>
</div>
<div style="display:flex;flex-direction:column;gap:12px;">
<div class="card">
<div class="card-title" style="margin-bottom:14px;">Действия</div>
<div style="display:flex;flex-direction:column;gap:8px;">
<a href="/profile/edit" class="btn btn-primary">
<i class="bi bi-pencil"></i> Редактировать профиль
</a>
<a href="/profile/change-password" class="btn btn-outline">
<i class="bi bi-key"></i> Изменить пароль
</a>
{% if not user.is_email_confirmed %}
<a href="/resend-confirm" class="btn btn-outline">
<i class="bi bi-envelope"></i> Отправить письмо с подтверждением
</a>
{% endif %}
<a href="/logout" class="btn btn-outline">
<i class="bi bi-box-arrow-right"></i> Выйти
</a>
</div>
</div>
<div class="card" style="border-color:#F4AEAE;">
<div class="card-title" style="color:#E53935;margin-bottom:10px;"><i class="bi bi-exclamation-triangle" style="margin-right:6px;"></i>Опасная зона</div>
<div class="card-sub" style="margin-bottom:12px;">Необратимые действия с аккаунтом</div>
<a href="/profile/delete" class="btn btn-danger btn-sm">
<i class="bi bi-trash"></i> Удалить аккаунт
</a>
</div>
</div>
</div>
{% endblock %}