UXprod — Design system

Единый источник стилей, компонентов и шаблонов сайта

Все образцы на этой странице используют реальные CSS-токены и классы портфолио. Изменение исходного токена или компонента автоматически отражается здесь и на страницах сайта.

01 — Введение

Как пользоваться

Меняйте глобальные значения в файле токенов, стили компонентов — в общих стилях, а готовую разметку копируйте из примеров ниже.

styles/tokens.css?v=20260928-card-stats-consistency-72Решение

Цвет, шрифт, сетка, радиусы, интервалы и размеры.

styles/global.css?v=20260928-card-stats-consistency-72База

Нормализация, ссылки и варианты кнопок.

styles/layout.css?v=20260928-card-stats-consistency-72Компоненты

Шапка, карточки, секции, кейсы, контакты и медиа.

scripts/site.js?v=20260928-card-stats-consistency-72Поведение

Меню, табы, слайдеры, lightbox и доступные состояния.

01Один источник

Не копируйте CSS компонента на страницу. Используйте его класс, а стиль меняйте в общем файле.

02Сначала токен

Если значение повторяется, меняйте или создавайте семантический CSS-token вместо локального числа.

03Композиция

Страница собирается из секций, а секция — из готовых компонентов и контентных слотов.

04Проверка

У каждого интерактивного элемента должны быть hover, focus-visible, keyboard и mobile-состояния.

02 — Введение

Архитектура изменений

Карта показывает, где править систему, чтобы изменение распространилось на все страницы без дублирования.

tokens.cssЗначения
global.css + layout.cssКомпоненты
HTML patternКомпозиция
site.jsПоведение
Правило для AI

Просите изменить конкретный token или класс из этой страницы. Не разрешайте создавать локальный стиль внутри отдельного HTML-файла, если компонент уже существует.

02 — Основы

Цветовые токены

Значения читаются напрямую из :root, поэтому витрина всегда показывает актуальную палитру.

03 — Основы

Типографика

Poppins с начертаниями 400, 500 и 600. Размеры заголовков адаптивные, подписи секций — системные 16 px.

H1 — Medium

Сложное становится понятным

var(--font-size-h1)
H2 — Medium

Продуктовая логика

var(--font-size-h2)
H3 — Medium

Пользовательский сценарий

var(--font-size-h3)
H4 — Regular

Контекст продукта

var(--font-size-h4)
H5 — Regular
Подзаголовок карточки
var(--font-size-h5)
H6 — Medium
Служебный заголовок
var(--font-size-h6)
Body — Regular

Основной текст помогает ясно объяснить решение, контекст и результат.

var(--font-size-body)
Section subtitle — Regular

Краткая подпись раздела в кейсах.

var(--font-size-section-subtitle)
Logo caption — Regular

Подпись логотипа

var(--font-size-logo-caption) — 11,5–12 px
400Regular

Основной текст и подписи

500Medium

Заголовки и действия

600Semibold

Акцент внутри текста

04 — Основы

Отступы, радиусы и размеры

Шкала адаптивная: значения через clamp() плавно меняются между mobile и desktop.

Spacing scale

Radius scale

05 — Основы

Сетка и адаптив

Основная desktop-сетка состоит из шести колонок. На узких экранах компоненты переходят в одну колонку, не меняя порядок содержания.

123456
≤ 560Compact mobile

Вертикальные факты и минимальные интервалы.

≤ 768Mobile

Одна колонка, мобильное меню и touch-контролы.

≤ 1180Tablet

Сокращённая сетка и компактные карточки.

≥ 1181Desktop

Полная шестиколоночная композиция.

06 — Основы

Анимация и состояния

Движение короткое и функциональное: 160 ms для мгновенной обратной связи, 240 ms для состояний, 460 ms для появления контента. При prefers-reduced-motion движение отключается. Демо запускаются только при наведении, поэтому страница не расходует ресурсы в фоне.

Reveal

Однократное появление на 14 px при входе секции во viewport.

--motion-duration-reveal
Hover

160 ms для цвета, фона и небольших состояний.

--motion-duration-fast
Slider

Управляемый пользователем переход без автопрокрутки.

--motion-ease-emphasized

07 — Ресурсы

Иконки

Полный набор интерфейсных и продуктовых иконок из каталога /assets/icons/. Нажмите на карточку, чтобы скопировать HTML.

Интерфейсные

Продуктовые

Логотипы

Иконки, созданные CSS

Diagonal actionBack to topPlayContents33%Positive metric
HTML + CSS masks

04 — Компоненты

Кнопки

Четыре нейтральных системных варианта не конкурируют с контентом. Фирменный фиолетовый остаётся смысловым и бренд-акцентом, но не используется для CTA. Для направления действия добавляйте существующую иконку-стрелку.

09 — Компоненты

Чипы, статусы и бейджи

Короткие метки описывают категорию или состояние. Не используйте их как основное действие.

Product DesignMarketplaceAdaptive Web
Открыт к проектам
HTML

11 — Компоненты

Метрики и факты

Системный блок для трёх или четырёх сопоставимых значений. Цифры используют типографические токены заголовков, а на mobile блок автоматически становится вертикальным.

Интервью40+
Разговоры20+
Экспертов8+
Площадок11
HTML
Роль
Senior Product Designer
Период
2024 — 2026
Вклад
Исследование, UX/UI, сопровождение разработки
HTML

12 — Компоненты

Выводы и раскрытие контента

altprof-insights — единый шаблон выводов для исследований, анализа конкурентов и Job Stories. Нативный details сохраняет семантику и работает без JavaScript.

Выводы исследования

Короткое пояснение связывает группу выводов с данными раздела.

Пользователь не знает профессиональных терминов

Форма должна помогать описать задачу обычным языком и не требовать экспертных знаний.

Доверие формируется до выбора исполнителя

Покажите правила, прозрачные шаги и объяснение следующего действия.

HTML

13 — Компоненты

Медиа и слайдер

Один шаблон используется для одиночного изображения и галереи. Подпись берётся из активного слайда. Для именованных версий добавьте табы; без них компонент создаст пагинацию автоматически.

Пример карты пути пользователя
Пример анализа аудитории
Пример анализа отзывов
Материалы исследованияАнализ отзывов
HTML
Поведение

Для слайдера подключите /scripts/site.js?v=20260928-card-stats-consistency-72. data-case-media-tab связывается со слайдом по порядку, а data-case-media-initial="last" сразу открывает последнюю версию. Галерея переключается табами, стрелками клавиатуры, перетаскиванием мышью и свайпом. Два таба автоматически получают компактную ширину и выравниваются по центру. Модификатор case-media--controls-safe резервирует боковые зоны под стрелки и zoom, когда важный контент макета расположен у краёв. Подпись необязательна; для длинных вертикальных макетов не добавляйте data-case-media-fixed-ratio.

14 — Компоненты

JS API компонентов

Интерактивность подключается декларативно через data-* атрибуты. Основной файл поведения — /scripts/site.js?v=20260928-card-stats-consistency-72.

КомпонентОбязательные атрибутыПоведение
Mobile menudata-menu-toggle — data-menu-close

Открытие, фокус и закрытие drawer.

Languagedata-language-switcher — data-language-toggle

Меню локалей и aria-expanded.

Protected contactdata-protected-contact — data-contact-key

Защищённые контактные действия.

Videodata-video-trigger — data-video-modal

Модальное видео, focus trap и Esc.

Lightboxdata-lightbox — data-gallery

Zoom, pan, swipe и навигация.

Case mediadata-case-media — data-case-media-track — data-case-media-slide — data-case-media-tab — data-case-media-title

Layout, arrows, tabs или dots, drag и синхронная подпись.

Photo sliderdata-photo-slider*

Слайды, счётчик и pagination.

Careerdata-career-toggle — data-career-more

Раскрытие списка и отдельных записей.

Case contentsdata-case-contents*

Scrollspy, collapse и mobile accordion.

Порядок подключения

tokens.css → global.css → typography.css → layout.css → animations.css → site.js. Для галерей мобильных приложений case-app-media.js подключается перед site.js.

14 — Шаблоны

Hero главной страницы

Главный экран сочетает позиционирование, короткое описание, два действия и персональный визуальный акцент.

Привет, я Валерий

Открыт к проектам

Product Designer для сложных продуктовых сценариев

Превращаю сложную продуктовую логику в понятный пользовательский опыт.

Портрет Валерия
HTML pattern

15 — Шаблоны

Карточка кейса

Карточка состоит из светлой контентной колонки и медиазоны. На главной каждая карточка занимает полную ширину контейнера на десктопе и мобильных устройствах. Заголовок использует var(--font-size-h3), подзаголовок — var(--font-size-body). Все обложки используют один медиашаблон: контейнер 16:10, абсолютный внутренний frame с одинаковым полем --case-media-inset, центрирование и object-fit: contain без обрезки. Дополнительное свободное место по одной из осей допустимо для исходников с другим соотношением сторон — оно сохраняет изображение целиком. Фон медиазоны задаётся переменной --case-media-background и масштабируется точно по размеру контейнера. Модификатор case-card__media--fill-width разрешён только для специально подготовленных полноформатных обложек. Единый мобильный отступ контента задаёт --case-content-padding-mobile. В адаптивной компоновке до 1200 px панель метрик использует компактную высоту --case-stats-height, адаптивный размер цифр и общие токены внутренних отступов.

Product DesignMobile Apps

Название продуктового кейса

Кратко объясните контекст, масштаб работы и ценность решения для пользователя или бизнеса.

Приложения120+
Установки50K+
Смотреть кейс
Интерфейсы цифровых продуктов
HTML pattern
Обложка с лентой мобильных продуктов

Для подборки экранов на главной и в первом экране мобильного кейса используйте один модификатор case-cover-carousel: в ленту попадает первый макет каждого продукта без дополнительной рамки или подложки, а вторая идентичная группа обеспечивает бесшовный цикл. Движение запускается только при наведении или фокусе, использует общий токен --motion-marquee-duration и отключается через prefers-reduced-motion. Используйте адаптивные WebP-превью 320/640 px из /assets/images/cases/mobile-cover/, а не полноразмерные исходники кейса.

16 — Шаблоны

Секция страницы кейса

На десктопе слева остаются только заголовок и краткий подзаголовок из одного предложения. Текст и контентные компоненты используют правую колонку; изображения и явно полноширинные блоки занимают всю сетку. Модификатор case-story-section--compact-lead позволяет следующему компоненту подняться под короткий вводный текст, не оставляя пустоту из-за высокого заголовка слева.

Название раздела

Короткая подпись раздела.

Основной рассказ находится справа. Здесь размещаются вводные абзацы и списки.

Контентный компонент

Тоже остаётся в правой колонке.

Пример полноширинного изображения
ИзображениеЗанимает всю ширину сетки
HTML pattern

17 — Шаблоны

Контентные паттерны кейсов

Готовые способы показать процесс, выводы, сравнение и основание приоритизации гипотез без локальных одноразовых компонентов.

Этапы процесса

  1. 01Аналитика

    Настройте измерение и зафиксируйте исходную точку.

  2. 02Исследование

    Соберите качественные и количественные данные.

  3. 03Проектирование

    Свяжите решение с пользовательским сценарием.

  4. 04Проверка

    Измерьте эффект и обновите гипотезу.

HTML pattern
Заголовок → описание

В компактном нумерованном списке case-story-list и в размеченном тексте altprof-labeled-copy смысловой заголовок всегда занимает отдельную строку, а пояснение начинается ниже.

Выводы

Выводы анализа

Одно предложение поясняет, на каких материалах основаны выводы.

Главный барьер

Сформулируйте наблюдение и объясните его влияние на сценарий.

Возможность

Свяжите инсайт с конкретным направлением продуктового решения.

HTML pattern

Таблица гипотез

Период3 мес.
Интервью40+
Разговоры20+
Площадки11
ГипотезаМетрика проверкиRICE

Если сократить первый шаг, больше пользователей начнут создание задания.

Визит → старт заявки

100

Если объяснить следующий шаг, снизится тревога перед публикацией.

Старт → публикация

80
HTML pattern

Проверка результата

Результат выбора исполнителя

MVP0,03%
После редизайна0,64%
Верхний прогноз0,82%

Выборка ещё накапливается: прогноз не считается подтверждённым результатом.

Подтверждённый вывод

Свяжите наблюдение с конкретным изменением в сценарии.

Следующая проверка

Отделите измеренный эффект от гипотезы, которую ещё предстоит проверить.

HTML pattern

Сравнение пути

01

Главная страница

1,14%5,09%

Визит → начало создания задания

02

Создание задания

0,17%2,55%

Визит → публикация задания

03

Выбор исполнителя

0,03%0,64%

Визит → выбран исполнитель

Завершите сравнение короткой интерпретацией: что подтверждено данными, а что требует следующей проверки.

HTML pattern
Сравнение без локальных стилей

altprof-journey-results показывает одинаковую пару «до → после» для каждого этапа пути. Компонент использует системные поверхности, accent, border, radius и тень; вывод отделяется общей поверхностью --color-surface-soft. Если данных пока недостаточно, статус прогноза объясняется отдельно от названия и значения метрики.

Акцентный вывод

Фокус кейса

Один сквозной путь: от задачи пользователя до измеримого продуктового результата.

HTML pattern

Сетка логотипов

  • ProfiProfi
  • AvitoAvito
  • YouDoYouDo
  • HouzzHouzz
  • MyHammerMyHammer
  • AirbnbAirbnb
HTML pattern
Подпись логотипа

Названия в сетке используют единый семантический токен --font-size-logo-caption с адаптивным размером 11,5–12 px. Бренды не разрываются внутри слова; составные названия переносятся по пробелу. Не переопределяйте размер локально в кейсах.

Метрики версий

Один шаблон на всех языках

Метки, значения и изменение показателя используют общие токены типографики. Во вложенном блоке метрики занимают ширину родителя; на телефоне выстраиваются вертикально. Разница процентных значений указывается в процентных пунктах.

Версия 11,14%Визит → начало создания задания
Версия 21,32%Визит → начало создания задания+0,18 п.п. к V1
Версия 35,09%Визит → начало создания задания+3,77 п.п. к V2
HTML pattern
Раскрывающиеся блоки и галереи

Для абзацев и списков внутри altprof-insights используются общие отступы. У каждого раздела и data-gallery должен быть собственный идентификатор. Подпись можно не выводить в галереях версий; текст для лайтбокса задаётся через data-lightbox-caption. Русская версия задаёт структуру; EN и SR собираются из неё командой python tools/sync-portfolio.py --write.

Сравнение версий

Версия 01

Каталог

  • Привычная механика
  • Нужна предметная экспертиза
Версия 02

Гибрид

  • Поиск и форма
  • Сложнее объяснить выбор
Версия 03

Задача

  • Понятный старт
  • Меньше когнитивной нагрузки
HTML pattern

Связанные кейсы

18 — Шаблоны

About, теги и карьера

Паттерны личного профиля: галерея, список компетенций и раскрываемая профессиональная история.

Теги компетенций

Product DesignUX ResearchDesign SystemsPrototyping
HTML

Карьерная запись

Senior Product Designer

2024 — сейчас

Компания

Marketplace — B2B/B2C

Опишите ответственность, масштаб продукта, ключевые решения и измеримый результат.

HTML pattern

Photo slider

Портрет продуктового дизайнера
Рабочий портрет
1 / 2
HTML + site.js

19 — Шаблоны

Header, оглавление и footer

Глобальные оболочки сайта. Их разметка сейчас статическая, поэтому при изменении структуры синхронизируйте все языковые страницы; стили и поведение уже общие.

Архитектурный статусCSS и JS — единый источникHTML shell — требует синхронизации

Header

HTML shell

Оглавление кейса

Иерархия оглавления

Основные пункты используют токен --font-size-case-contents — 16 px. Связанные этапы сценария объединяйте через .case-contents__group: светлая подпись объясняет логику группы, линия остаётся фоном, а каждый пункт отмечается отдельной точкой. Активный этап отличается тёмным маркером и более контрастным текстом.

Marquee

FigmaWebflowFramerGoogle AnalyticsHotjar
HTML + animation — вертикальный отступ var(--space-6)
Логотипы инструментов

Используйте горизонтальный lockup из официального знака и полного названия. В спокойном состоянии весь элемент имеет --opacity-brand-muted; при наведении — --opacity-brand-active. Знак и название меняют тон одновременно, а длительность движения --motion-marquee-duration компенсирует увеличенную ширину элементов.

Footer

20 — Шаблоны

Страница ошибки

Единый шаблон для кодов 400, 403, 404, 410, 500 и 503. Меняются только статус, сообщение и modifier страницы.

21 — Шаблоны

Контактные действия

Крупные текстовые ссылки подходят для нескольких каналов, primary-кнопка — для главного следующего шага.

22 — Конструктор

Каркас новой страницы

Скопируйте базовую разметку, замените заголовки, тексты и изображения, затем добавьте только нужные компоненты из каталога. Подробный локальный сценарий описан в LOCAL-EDITING.md.

HTML skeleton
  1. 1
    Создайте RU-маршрут

    Запустите tools/new-case.ps1 -Slug my-case или скопируйте HTML-каркас существующей страницы своего типа.

  2. 2
    Соберите секции

    Используйте классы case-story-section, case-study-stats, altprof-insights и case-media; не добавляйте inline-стили.

  3. 3
    Замените контент

    Обновите текст, alt, размеры изображения, метаданные и ссылки, сохранив классы и data-атрибуты компонентов.

  4. 4
    Проверьте

    Desktop 1440 px, tablet 1024/768 px, mobile 390 px, клавиатуру, фокус и отсутствие переполнения.

23 — Качество

Доступность и контент

Чек-лист обязателен для любого нового компонента или шаблона.

Семантика
  • Один h1 на страницу
  • Последовательная иерархия заголовков
  • Кнопка запускает действие, ссылка ведёт по адресу
Клавиатура
  • Все действия доступны через Tab
  • Видимый :focus-visible
  • Esc закрывает модальные слои
Изображения
  • Содержательный alt
  • Пустой alt у декоративных изображений
  • Указаны width и height
Адаптив
  • Touch-target не меньше 44 px
  • Нет горизонтального scroll
  • Текст не обрезается при 200% zoom
Motion
  • Учитывается reduced motion
  • Анимация не блокирует действие
  • Нет вспышек и резких скачков
Текст
  • Название действия однозначно
  • Не полагаться только на цвет
  • Числа и единицы оформлены единообразно
Стабильные

Buttons, navigation, hero, case cards, case sections, media, sliders, stats, единый accordion выводов, about, career, contacts, overlays и error pages.

Определены, но отключены

Dark theme и theme switcher: токены существуют, однако текущий сайт принудительно использует light theme.

Ещё не реализованы

Input, select, textarea, checkbox, radio, toggle, tooltip, toast, skeleton и progress. Не копируйте случайные локальные стили — сначала добавьте системный компонент.

24 — Справочник

Все CSS-токены

Полный автоматически собранный список переменных из дизайн-системы. Значение и вызов каждого token можно скопировать.