Photo Archive Фотоархив
← Back to Documentation ← Назад к документации

Design System Дизайн-система

A warm, vintage-inspired design system for the Family Photo Archive project. Designed to complement 1960s-1990s era photography with modern presentation. Тёплая дизайн-система в винтажном стиле для проекта семейного фотоархива. Разработана для гармоничного сочетания фотографий 1960-х - 1990-х годов с современной подачей.

Philosophy Философия

The design draws from two worlds: Дизайн черпает вдохновение из двух миров:

  • Archival warmth - amber/sepia tones that connect to the photographic heritage Архивное тепло - янтарные/сепийные тона, связывающие с фотографическим наследием
  • Modern clarity - clean typography and spacing that make content easy to navigate Современная ясность - чистая типографика и отступы, облегчающие навигацию по контенту

Neither pure dark nor pure light. The dark theme uses deep navy tones (not pure black) that let vintage photos breathe. The light theme uses warm cream (not pure white) that feels like archival paper. Ни чисто тёмная, ни чисто светлая. Тёмная тема использует глубокие тёмно-синие тона (не чисто чёрный), позволяющие винтажным фотографиям дышать. Светлая тема использует тёплый кремовый (не чисто белый), напоминающий архивную бумагу.


Color Palette Цветовая палитра

Core Semantic Colors Основные семантические цвета

Token Light Dark Purpose Назначение
--color-bg #faf8f5 #0c0f14 Page background Фон страницы
--color-surface #ffffff #181d27 Cards, panels Карточки, панели
--color-surface-raised #ffffff #1e2433 Elevated elements Приподнятые элементы
--color-text #1c1917 #e8e4de Primary text Основной текст
--color-text-secondary #44403c #b8b0a4 Secondary text Вторичный текст
--color-text-muted #78716c #7d7568 Captions, hints Подписи, подсказки
--color-border #e7e5e4 #262d3a Default borders Стандартные границы

Accent Colors Акцентные цвета

Token Light Dark Usage Использование
--color-accent #b45309 amber #f59e0b gold Primary accent, branding Основной акцент, брендинг
--color-interactive #2563eb blue #60a5fa Links, buttons Ссылки, кнопки
--color-success #16a34a green #4ade80 Status, output steps Статус, этапы вывода
--color-ai #7c3aed purple #a78bfa AI/ML features Функции ИИ/МО
--color-restore #e11d48 rose #fb7185 Restoration highlights Подсветка реставрации

Diagram Colors Цвета диаграмм

Token Value Значение Meaning Значение
--diagram-blue #3b82f6 Image processing steps Этапы обработки изображений
--diagram-purple #a855f7 AI/ML operations Операции ИИ/МО
--diagram-green #22c55e Output / success Вывод / успех
--diagram-amber #f59e0b Input / accent Вход / акцент
--diagram-rose #f43f5e Warnings / highlights Предупреждения / подсветка

Typography Типографика

Font Families Семейства шрифтов

--font-sans:  -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'Segoe UI', Roboto, sans-serif;
--font-serif: 'Georgia', 'Times New Roman', 'Palatino Linotype', serif;
--font-mono:  'SF Mono', 'Fira Code', 'JetBrains Mono', 'Consolas', monospace;

Type Scale Шкала размеров

Token Size Размер Usage Использование
--text-xs 12px Badges, fine print Бейджи, мелкий текст
--text-sm 14px Captions, metadata Подписи, метаданные
--text-base 16px Body text Основной текст
--text-lg 18px Section intro Вступление раздела
--text-xl 20px Card titles Заголовки карточек
--text-2xl 24px Section headers Заголовки разделов
--text-3xl 30px Page titles Заголовки страниц
--text-4xl 36px Hero subheading Подзаголовок героя
--text-5xl 48px Hero title Заголовок героя

Spacing Отступы

4px base unit with a consistent scale: Базовая единица 4px с последовательной шкалой:

4  8  12  16  20  24  32  40  48  64  80  96
1  2   3   4   5   6   8  10  12  16  20  24

Usage: var(--space-4) for 16px, var(--space-8) for 32px. Использование: var(--space-4) для 16px, var(--space-8) для 32px.


Shadows Тени

Token Usage Использование
--shadow-sm Subtle elevation (badges, small cards) Тонкая приподнятость (бейджи, маленькие карточки)
--shadow-md Default cards, dropdowns Стандартные карточки, выпадающие списки
--shadow-lg Modals, popovers Модальные окна, всплывающие элементы
--shadow-xl Hero sections, lightbox Секции героя, лайтбокс
--shadow-glow Amber glow for featured elements Янтарное свечение для выделенных элементов

Border Radius Скругление углов

Token Value Значение Usage Использование
--radius-xs 4px Small badges Маленькие бейджи
--radius-sm 6px Buttons, inputs Кнопки, поля ввода
--radius-md 8px Cards Карточки
--radius-lg 12px Panels, modals Панели, модальные окна
--radius-xl 16px Hero sections Секции героя
--radius-full 9999px Pills, avatars Пилюли, аватары

Theme Implementation Реализация тем

System Detection (automatic) Определение системы (автоматическое)

/* Light theme in :root, dark in @media */
@media (prefers-color-scheme: dark) {
  :root { /* dark overrides */ }
}

Manual Toggle Ручное переключение

Apply data-theme="dark" or data-theme="light" to <html> to override system preference: Примените data-theme="dark" или data-theme="light" к <html> для переопределения системных настроек:

function setTheme(theme) {
  if (theme === 'system') {
    document.documentElement.removeAttribute('data-theme');
    localStorage.removeItem('theme');
  } else {
    document.documentElement.setAttribute('data-theme', theme);
    localStorage.setItem('theme', theme);
  }
}

// Restore on load
const saved = localStorage.getItem('theme');
if (saved) document.documentElement.setAttribute('data-theme', saved);

Accessibility Доступность

All color combinations meet WCAG AA contrast minimums: Все цветовые комбинации соответствуют минимальным требованиям контрастности WCAG AA:

Combination Комбинация Light Ratio Светлая Dark Ratio Тёмная
--color-text on --color-bg 14.5:1 12.8:1
--color-text-secondary on --color-bg 7.2:1 6.1:1
--color-text-muted on --color-bg 4.6:1 4.5:1
--color-accent on --color-bg 4.8:1 7.2:1

File Locations Расположение файлов

File Файл Purpose Назначение
web/styles/design-tokens.css CSS custom properties Пользовательские CSS-свойства
docs/diagrams/pipeline-flow.svg Processing pipeline flowchart Блок-схема конвейера обработки
docs/diagrams/tech-stack.svg Technology stack layers Слои технологического стека
docs/diagrams/data-flow.svg Data flow through system Поток данных через систему
docs/diagrams/committee.svg Multi-model voting system Система многомодельного голосования
docs/index.html Interactive documentation page Интерактивная страница документации