Design System v2.0
Golova

Единая система для SaaS-продукта Golova и всей экосистемы связанных продуктов. Три уровня токенов — примитивы → семантика → компоненты — так изменения палитры не ломают компоненты, собранные поверх неё.

Структура: css/tokens.css — примитивы и семантические токены (цвет, шрифты, отступы, радиусы, тени), css/components.css — компоненты поверх токенов, включая полный набор форм. fonts/ и logos/ — фирменные ассеты. Шрифты: Roboto Flex — весь UI-текст, PragmataPro — только логотип и декоративные акценты.

Foundations

Бренд

Базовое описание Golova как продукта, миссии, видения и ценностей бренда. Этот раздел задает смысловую рамку для интерфейса, коммуникаций и продуктовых решений.

Что такое Golova

Golova — профессиональная SaaS-платформа для компаний, занимающихся арендой AV-оборудования и техническим обеспечением мероприятий. Система объединяет процессы планирования, управления оборудованием, персоналом, финансами, документами и логистикой в едином рабочем пространстве.

Наша цель — стать операционной системой индустрии, так же как POS-система стала стандартом для ресторанов или ERP — для производства.

Миссия

Упростить управление сложными проектами и оборудованием, автоматизировав рутинные процессы и предоставив единую цифровую среду для всей команды.

Golova помогает компаниям быстрее принимать решения, снижать количество ошибок и сосредоточиться на реализации проектов, а не на работе с таблицами, файлами и разрозненными сервисами.

Видение

Мы создаём экосистему продуктов, которая станет единым стандартом работы для компаний AV rental и event production.

Основная платформа дополняется специализированными сервисами, объединёнными общими данными и AI-инструментами.

Ценность бренда: Практичность

Каждый элемент интерфейса существует для решения конкретной рабочей задачи. Мы избегаем декоративности ради декоративности.

Бренд

Принципы дизайна

Golova — профессиональная B2B SaaS-платформа для компаний, занимающихся арендой AV-оборудования и техническим обеспечением мероприятий. Каждый экран должен в первую очередь помогать быстро выполнять ежедневные рабочие задачи.

Интерфейс должен ощущаться как

  • инженерный;
  • профессиональный;
  • насыщенный информацией;
  • спокойный и надежный;
  • ориентированный на ежедневную работу.

Избегаем

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

Визуальный язык

  • минимализм и плоский интерфейс;
  • тонкие разделители вместо толстых рамок;
  • практически без теней;
  • скругления только там, где они нужны;
  • иерархия строится типографикой, а не цветами.
Интерфейс Golova должен напоминать современную ERP/CRM-систему, а не лендинг или BI-панель: много структурированной информации, спокойная плотность, понятные действия и минимум декоративного шума.
Гайдлайны

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

✓ Так делаем

Компоненты ссылаются только на семантические токены (text/*, bg/*...), никогда напрямую на neutral/* или brand/*.

✗ Так не делаем

Не хардкодим hex в компонентах и не создаём новые цвета «по ощущению» — сначала примитив, потом семантика.

✓ Так делаем

Все поля форм — 4px радиус, без исключений. Это единообразный, узнаваемо угловатый язык форм.

✗ Так не делаем

Не скругляем формы под общий radius-lg карточек — формы концептуально более острые, чем контейнеры.

Основы

Типографика

Типографика Golova построена на единой системе размеров, интервалов и ролей текста. Пользователь может переключать гарнитуру интерфейса, при этом размеры, иерархия и компоненты остаются неизменными.

Работа с гарнитурами

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

✓ Так делаем

Все гарнитуры используют единую типографическую шкалу и одинаковые роли текста.

✗ Так не делаем

Не создаём отдельные размеры, line-height или компоненты под каждую гарнитуру.

Правила использования

  • Один экран — одна гарнитура.
  • Не смешивать разные гарнитуры внутри одного интерфейса.
  • Иерархия строится размером и насыщенностью, а не цветом.
  • Для Pragmata Pro Mono использовать только рекомендованные параметры Line Height и Letter Spacing.
  • Переключение гарнитуры не должно влиять на размеры компонентов или нарушать сетку интерфейса.

Текущая гарнитура

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

Preview

Pragmata Pro Mono

ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
1234567890

Особенности

    Recommended settings

    WeightRegular
    Line Height18 px
    Letter Spacing-0.3 px

    Используется

    • Таблицы
    • ERP
    • Аналитика
    • Рабочие экраны

    Пример

    АртикулINV-02344
    Стоимость12 450 €
    Дата09.07.2026
    Display
    32/40 · 700
    Найдите нужное решение
    H1
    24/32 · 700
    Заголовок раздела
    H2
    18/26 · 600
    Подзаголовок
    Body
    14/20 · 400
    Обычный текст интерфейса
    Body Bold
    14/20 · 700
    Акцентный текст
    Caption
    12/16 · 500
    Подпись, мета-информация
    Eyebrow
    11/14 · 700, upper
    Категория

    Font Switching Contract

    Смена шрифта — пользовательская настройка интерфейса. Компоненты не знают конкретную гарнитуру и всегда читают один алиас.

    Token

    font/ui/robotodefault
    font/ui/intersecondary
    font/ui/pragmatamono UI

    Runtime

    defaultdata-ui-font="roboto"
    interdata-ui-font="inter"
    pragmatadata-ui-font="pragmata"
    <html data-ui-font="roboto">
    
    body {
      font-family: var(--font-body);
    }
    Основы

    Цвет

    Трёхуровневая модель: примитивы задают физические значения, семантика называет их по роли в интерфейсе, компоненты используют только семантику — никогда не примитивы напрямую. SaaS Platform Palette фиксирует продуктовые имена токенов, которые можно передавать в разработку и Figma.

    Collection 1 · Primitive / Neutral

    Базовая графитовая шкала. Шаги неравномерные (90→80→70→50→30→20→0) — так и задумано.

    neutral/90#333333
    neutral/80#727272
    neutral/70#DADADA
    neutral/50#E1E5EF
    neutral/30#F0F2F7
    neutral/20#F7F9FB
    neutral/0#FFFFFF

    Collection 2 · Primitive / Brand

    Основные и их soft-варианты (10% opacity) для подложек.

    Основные
    brand/informative#4976F4
    brand/positive#38B000
    brand/error#E63A1E
    Soft (10% opacity)
    brand/informative-softrgba(73,118,244,.10)
    brand/positive-softrgba(56,176,0,.10)
    brand/error-softrgba(230,58,30,.10)

    SaaS Platform Palette

    Продуктовые токены для основной SaaS-платформы. Старые neutral/* и brand/* остаются для обратной совместимости компонентов.

    Content / Neutral
    content-neutral/90#333333
    content-neutral/80#727272
    content-neutral/70#DADADA
    content-neutral/60#F4F4F4
    content-neutral/50#E4E4E4
    content-neutral/40#E8E8E8
    content-neutral/30#F2F2F2
    content-neutral/20#F9F9F9
    content-neutral/10#FDFDFD
    content-neutral/0#FFFFFF
    Content / Semantic
    content/informative#4976F4
    content/positive#38B000
    content/error#E63A1E
    warning/rating#F5A623
    Border
    border/informative#D1DDFC
    border/positive#CDEBBF
    border/error#F9CEC7
    Background
    background/primary#FFFFFF
    background/secondary#F9F9F9
    background/tertiary#F2F2F2
    background/blue#EDF2FE
    background/green#EEF5F0
    background/red#F7EDED
    background/orange#FBF4EC
    background/purple#F4EDF7
    background/yellow#F7F7E8
    Category
    category/equipment#EC407A
    category/services#7E57C2
    category/components#42A5F5
    category/consumables#66BB6A
    category/kits#FFCA28
    category/sets#FF7043

    Collection 3 · Semantic

    Роль → примитив. Компоненты ссылаются только на эти имена.

    Text
    text/primary→ neutral/90
    text/secondary→ neutral/80
    text/disabled→ neutral/70
    text/inverse→ neutral/0
    text/link→ brand/informative
    text/error→ brand/error
    text/success→ brand/positive
    Background
    bg/page→ neutral/20
    bg/card→ neutral/0
    bg/table-hover→ neutral/30
    bg/selected→ brand/informative-soft
    bg/error→ brand/error-soft
    bg/success→ brand/positive-soft
    Border
    border/default→ neutral/50
    border/strong→ neutral/70
    border/focus→ brand/informative
    border/error→ brand/error
    Icon
    icon/primary→ neutral/90
    icon/secondary→ neutral/80
    icon/disabled→ neutral/70
    icon/informative→ brand/informative
    icon/error→ brand/error
    icon/success→ brand/positive
    warning/rating используется для звезды рейтинга в карточке товара. Не используем этот цвет как общий статус ошибки или предупреждения без отдельного продуктового правила.

    Применение цветов

    Как семантика ложится на конкретные UI-паттерны.

    Текст

    Основной текст neutral/90
    Вторичный текст neutral/80
    Disabled текст neutral/70

    Фоны

    Фон страницы neutral/20
    Карточки / модалки neutral/0
    Hover строк таблицы neutral/30

    Границы

    Обычная граница neutral/50
    Активная граница brand/informative
    Ошибка brand/error

    Состояния

    Выделенная строка informative-soft
    Ошибка инпута error + error-soft
    Успешное состояние positive + positive-soft

    Кнопки

    Primary фон 90, текст 0
    Secondary фон 0, обводка 70
    Danger фон error, текст 0
    Основы

    Layout

    Интерфейс адаптируется не под разрешение монитора, а под ширину viewport. Компоненты строятся на responsive grid и spacing scale.

    Responsive philosophy

    В ERP самый важный вопрос — не breakpoint, а что меняется при переходе между ними. Количество колонок, навигация и поведение панелей должны меняться предсказуемо.

    ✓ Так делаем

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

    ✗ Так не делаем

    Не привязываем интерфейс к конкретным моделям устройств или физическому разрешению монитора.

    Responsive grid

    Количество колонок меняется в зависимости от ширины viewport. Это базовая сетка для продуктовых экранов Golova.

    Width

    320–767mobile
    768–1023tablet
    1024–1439desktop
    1440+wide

    Layout

    320–7674 колонки
    768–10238 колонок
    1024–143912 колонок
    1440+12 колонок

    Grid

    320–767Bottom Sheet
    768–1023Side Navigation
    1024–1439Sidebar
    1440+Sidebar

    Navigation

    320–767Drawer
    768–1023Collapsed
    1024–1439Expanded
    1440+Expanded + панели

    iPhone и Android adaptation

    Мобильная версия SaaS-интерфейса не должна быть уменьшенной копией desktop. На телефоне показываем рабочий минимум: главное действие, текущий статус, поиск, фильтры и быстрый доступ к деталям.

    iPhone

    Safe areaучитывать notch и home indicator
    Navigationbottom sheet / drawer
    Primary actionв нижней зоне большого пальца
    Formsодна колонка, крупные поля

    Android

    System barsучитывать status/navigation bars
    Navigationdrawer / bottom navigation
    Primary actionFAB или закрепленная кнопка
    Formsклавиатура не перекрывает CTA
    ✓ Так делаем

    Таблицы превращаем в список сущностей: ключевой идентификатор, статус, сумма/дата и действие. Детали раскрываются на отдельном экране или в bottom sheet.

    ✓ Так делаем

    Фильтры, сортировку и массовые действия переносим в drawer или bottom sheet, чтобы не съедать рабочую ширину.

    ✗ Так не делаем

    Не показываем desktop-таблицу с горизонтальным скроллом как основной мобильный сценарий.

    ✗ Так не делаем

    Не размещаем критические кнопки рядом с системными жестами без safe-area отступов.

    Основы

    Скругления

    Система в целом угловатая. Формы — самые острые: 4px флэт, без исключений (кроме переключателя-свитча — он физическая пилюля по смыслу).

    4 · form — все поля форм
    6 · sm — чипы, теги
    8 · md — кнопки, поповеры
    12 · lg — карточки, панели
    16 · xl — модалки
    pill — только switch-track
    Основы

    Тени

    Незаметны в покое, раскрываются на интерактиве. Focus/error-ring — отдельные токены для полей форм.

    rest
    card
    float
    focus-ring
    error-ring
    Активы

    Иконки

    В интерфейсах используем Bootstrap Icons. Иконки подключены как шрифт через CDN и вызываются классами bi bi-*.

    Core Set

    Базовый набор для навигации, действий, таблиц, форм и системных состояний.

    Searchbi bi-search
    Addbi bi-plus-lg
    Downloadbi bi-download
    Uploadbi bi-upload
    Editbi bi-pencil
    Deletebi bi-trash3
    Morebi bi-three-dots
    Filtersbi bi-sliders
    Settingsbi bi-gear
    Listbi bi-list-ul
    Gridbi bi-grid-3x3-gap
    Tablebi bi-table
    Successbi bi-check-lg
    Closebi bi-x-lg
    Warningbi bi-exclamation-triangle
    Infobi bi-info-circle
    Expandbi bi-chevron-down
    Nextbi bi-arrow-right
    ✓ Так делаем

    Используем системные классы bi bi-* и красим иконки через semantic tokens: icon/*, text/*.

    ✗ Так не делаем

    Не смешиваем Bootstrap Icons с другими наборами без отдельного решения в дизайн-системе.

    Активы

    Иллюстрации

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

    Brand Mechanics

    Базовая техническая иллюстрация для брендовых и документационных материалов.

    Golova brand mechanics illustration Golova brand mechanics illustration dark theme

    Product Workflow 1

    Дополнительная SVG-иллюстрация. Темные контуры переключаются на светлые в dark theme.

    Golova product workflow illustration 1 Golova product workflow illustration 1 dark theme

    Product Workflow 2

    Дополнительная SVG-иллюстрация. Графитовые линии адаптируются под темную тему.

    Golova product workflow illustration 2 Golova product workflow illustration 2 dark theme
    Компоненты

    Кнопки

    Один компонент .btn, собираемый из вариантов, размеров и состояний. Иконки — Bootstrap Icons (MIT, свободная лицензия), подключены как иконный шрифт: класс bi bi-*.

    Варианты .btn-primary / -secondary / -informative / -danger / -ghost / -link

    Primary — одна на экран, для главного действия. Secondary — для второстепенного рядом с primary. Danger — необратимые/разрушающие действия. Ghost — низкоприоритетные действия в тулбарах. Link — действие, встроенное в текст.

    <button class="btn btn-md btn-primary">
      <i class="bi bi-plus-lg"></i>
      Создать
    </button>
    Размеры .btn-sm / .btn-md / .btn-lg
    Состояния hover / focus / active — интерактивны, наведите и нажмите
    С иконками bi bi-* ведущая / замыкающая / только иконка

    У icon-only кнопок обязателен aria-label — своей подписи у них нет.

    Круглые иконочные кнопки .btn-round — тулбары, действия над таблицей, FAB

    Круглая форма — только для плотных тулбаров над таблицами/деревьями (действия с выбранными, параметры, сворачивание уровней) и для одиночного FAB-действия «добавить». Обычные действия в интерфейсе — квадратные .btn-icon-only выше.

    Группа кнопок .btn-group — сегментированный переключатель
    Компоненты

    Бейджи и теги

    Информативный Нейтральный Тёмный 💡 Категория Активно
    Компоненты

    Табы

    <div class="tabs">
      <button class="tab active">Все</button>
      <button class="tab">В аренде</button>
      <button class="tab">Резерв</button>
    </div>
    Компоненты

    Формы

    Полный набор форм-компонентов на базе переменных Golova. Все контролы — 4px радиус (--radius-form), фокус — рамка border/focus + мягкое кольцо shadow-focus-ring, ошибка — border/error + shadow-error-ring.

    Text input .field / .ctrl
    Как в учредительных документах
    ⚠ Должно быть 10 или 12 цифр
    ✓ Промокод применён
    🔍
    <label class="field">
      <span class="field-label">Название компании <span class="req">*</span></span>
      <input class="ctrl" type="text" placeholder="ООО Ромашка">
      <span class="field-hint">Юридическое или рабочее название клиента.</span>
    </label>
    Textarea .ctrl (textarea)
    Select select.ctrl
    Checkbox / Radio / Switch
    Checkbox
    Radio
    Switch
    Fieldset + form actions
    Контактное лицо
    Компоненты

    Карточка товара

    Продажа
    фото товара
    Audiotechnik Y8 Line Array
    88 500 ₽
    Light sound lab · 4.8 (12)
    📍 Москва, Московская область
    Продажа б/у
    фото товара
    ADJ Mega Par Profile
    8 500 ₽ Комплект
    Light sound lab · 4.8 (12)
    📍 Москва, Московская область
    <article class="pcard">
      <div class="img">
        <span class="badge badge-neutral">Продажа б/у</span>
        <div class="fav">♥</div>
        фото товара
      </div>
      <div class="body">
        <h3 class="title">Акустическая система Yamaha DXR12</h3>
        <p class="price">8 500 ₽ <span class="kit-flag"><i></i>Комплект</span></p>
        <div class="seller"><span class="star">★</span> 4.9 · Pro Sound</div>
        <div class="loc">Москва · самовывоз</div>
        <button class="cta">Подробнее</button>
      </div>
    </article>
    Компоненты

    Модалки

    Три сценария под самые частые действия у сложных таблиц/деревьев: форма-редактор строки, подтверждение удаления, настройка видимости колонок. Структура одинаковая: заголовок с подписью и крестиком → тело (скроллится само, если контента много) → футер с действиями, прижатыми вправо.

    Форма редактирования строки .modal → .modal-header / .modal-body / .modal-footer
    <div class="modal">
      <div class="modal-header">
        <div>
          <h3>Редактировать позицию</h3>
          <p>Изменения применятся к текущей строке.</p>
        </div>
        <button class="btn btn-sm btn-icon-only btn-ghost modal-close" aria-label="Закрыть">
          <i class="bi bi-x-lg"></i>
        </button>
      </div>
      <div class="modal-body">...</div>
      <div class="modal-footer">
        <button class="btn btn-md btn-secondary">Отмена</button>
        <button class="btn btn-md btn-primary">Сохранить</button>
      </div>
    </div>
    Подтверждение удаления деструктивное действие — danger в футере
    Настройка колонок таблицы для плотных таблиц/деревьев с параметрами
    ✓ Так делаем

    Заголовок модалки — краткий, подпись под ним уточняет контекст (где именно мы редактируем). Крестик закрытия — всегда круглый ghost справа.

    ✗ Так не делаем

    Не ставим danger-действие первым/слева в футере — порядок всегда: второстепенное слева, главное (в т.ч. деструктивное) справа.

    Основы

    Темная тема

    Темная версия строится тем же способом, что и светлая: примитивы → семантика → компоненты. Компоненты не получают отдельные dark-классы; меняются значения семантических токенов через .theme-dark или [data-theme="dark"].

    Primitive / Dark Surface

    Отдельная шкала темных поверхностей нужна, чтобы не ломать существующую neutral-шкалу.

    dark/100#0F1114фон приложения
    dark/90#15181Cглубокие поверхности
    dark/80#1E2228карточки и модалки
    dark/70#2A3038hover и разделители
    dark/60#3A424Dактивные границы
    dark/20#C9D0DDвторичный текст
    dark/0#F7F9FBосновной текст

    Semantic Mapping

    Названия токенов не меняются между темами; меняются только значения.

    Text

    text/primarydark/0
    text/secondarydark/20
    text/disableddark/50

    Background

    bg/pagedark/100
    bg/carddark/80
    bg/table-hoverdark/70

    Border

    border/defaultdark/70
    border/strongdark/60
    border/focus#7FA0FF

    State

    bg/selectedinformative 18%
    bg/errorerror 18%
    bg/successpositive 18%

    Рабочий экран в темной теме

    Плотный B2B-интерфейс: минимум декора, видимые разделители, спокойная иерархия.

    Позиция
    Статус
    Локация
    Действие
    Yamaha QL5В арендеПавильон 4
    Shure ULXD4QРезервСклад A
    Astera Titan TubeКомплектВыездная зона
    ✓ Так делаем

    Темная тема меняет только semantic/component tokens. Разметка компонента остается такой же, как в светлой теме.

    ✗ Так не делаем

    Не создаем отдельные классы вроде .button-dark и не хардкодим цвета в компонентах.

    Гайдлайны

    Developer Handoff

    Этот раздел нужен разработчикам и ИИ-агентам, которые собирают прототипы или переносят паттерны в продукт. Источник истины остается в токенах, компонентах и правилах витрины.

    Runtime CSS

    css/tokens.css и css/components.css подключаются напрямую в HTML-прототип.

    Machine Tokens

    tokens.json можно читать агентам, скриптам, Figma-плагинам и будущему экспорту токенов.

    AI Instructions

    AI_USAGE.md — короткий контракт для Claude Code, Codex и других агентов.

    Copy Snippets

    Базовые HTML-snippets лежат рядом с кнопками, табами, формами, модалками и карточкой товара.

    Где взять файлы

    Разработчик или ИИ-агент может взять файлы из репозитория или скачать прямо из этой статической витрины.

    Repository

    GitHubgithub.com/ulyru/design-system

    Downloads

    Работает при открытии через static server или из репозитория.

    Минимальный prompt для ИИ-агента

    Можно вставить в Claude Code перед созданием прототипа Golova.

    Перед началом прочитай AI_USAGE.md, tokens.json, css/tokens.css и css/components.css.
    Собери прототип Golova как плотный B2B SaaS/ERP экран.
    Используй существующие CSS variables и component classes.
    Не хардкодь цвета, не делай лендинг, не используй градиенты и декоративные иллюстрации.
    Поддержи светлую и темную тему через data-theme="dark".