项目文件夹

文件
wehub-resource-sync 070959e133
landing-page-staging / Deploy landing page to staging (push) Has been skipped
landing-page-ci / Validate landing page (push) Failing after 4s
visual-baseline / Capture visual baselines (push) Has been cancelled
bake-plugin-previews / Bake plugin previews (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:00:47 +08:00

12 KiB

Дизайн-система, вдохновлённая GitHub

Category: Инструменты разработчика Платформа, ориентированная на код. Функциональная плотность, точность синего на белом, основы Primer.

1. Визуальная тема и атмосфера

Поверхность GitHub спроектирована, а не украшена. Каждый пиксель выражает позицию: это инструмент для людей, которым важны диффы, сборки и pull request'ы. Фон страниц — чистый #ffffff (светлая тема) или #0d1117 (тёмная), а контент размещается на плотных прямоугольных панелях, разделённых тонкими границами, а не отступами. Плотность информации — это бренд: строки списков, строки кода, заголовки репозиториев и карточки уведомлений стоят близко, чтобы опытный пользователь мог просмотреть сотню элементов без прокрутки.

Характерные акценты — синий Primer (#0969da) для ссылок и основных действий и зелёный GitHub (#1a7f37) для состояний слияния, успеха и самой кнопки слияния. Оба цвета выглядят немного приглушёнными по сравнению с синим и зелёным в потребительских продуктах — насыщенными ровно настолько, чтобы читаться на фоне плотного серого текста, и сдержанными настолько, чтобы растворяться в фоне, когда их несколько в одном вьюпорте.

Типографика использует стек system-ui во всём продукте, чтобы текст чётко рендерился в любой ОС; для кода применяется SFMono / Menlo / Consolas. Редакционных декоративных шрифтов нет; голос GitHub — это голос системы, в которой вы уже находитесь.

Ключевые характеристики:

  • Чисто белый холст (#ffffff) или глубокий тёмно-синий/чёрный (#0d1117) — без теплоты, без оттенка
  • Тонкие серые границы (#d0d7de) определяют каждую панель
  • Синий Primer (#0969da) — для ссылок и основных действий; зелёный GitHub (#1a7f37) — для успеха и слияния
  • system-ui — для прозы; SFMono — для кода; никаких пользовательских гарнитур
  • Плотные строки списков с минимальными отступами; пространство используется редко
  • Иконография Octicon 16px / 24px — одноконтурная, геометрическая, последовательная
  • Статусные бейджи в форме таблеток с чёткой цветовой семантикой

2. Цветовая палитра и роли цветов

Основные

  • Canvas Default (#ffffff): основной фон страницы, светлая тема.
  • Canvas Subtle (#f6f8fa): вторичная поверхность, боковая панель, фон полей ввода, полоса заголовка.
  • Canvas Inset (#eaeef2): фон блоков кода, глубоко утопленная поверхность.
  • Fg Default (#1f2328): основной текст, заголовки, шрифт.
  • Fg Muted (#656d76): вторичный текст, подписи, пути к файлам.

Брендовый акцент

  • Primer Blue (#0969da): ссылки, основные CTA, кольцо фокуса — универсальный интерактивный цвет.
  • Primer Blue Hover (#0550ae): наведение/нажатие для основного синего.
  • Accent Subtle (#ddf4ff): мягкая синяя поверхность для подсказок и информационных баннеров.

Семантические

  • Success / Merge Green (#1a7f37): смёрженные PR, бейджи успеха, кнопка слияния.
  • Success Subtle (#dafbe1): оттенок поверхности успеха.
  • Open Green (#1a7f37): состояние «Открыт» для issue/PR.
  • Closed / Danger Red (#cf222e): закрытые PR, деструктивное действие, ошибка валидации.
  • Danger Subtle (#ffebe9): поверхность баннера ошибки.
  • Attention / Warning Yellow (#9a6700): предупредительный текст на янтарной поверхности.
  • Attention Subtle (#fff8c5): поверхность предупредительного баннера.
  • Done Purple (#8250df): смёрженное и архивированное состояние, статус «готово», премиальный бейдж.
  • Sponsor Pink (#bf3989): значок сердца спонсоров, бренд GitHub Sponsors.

Границы и разделители

  • Border Default (#d0d7de): стандартная тонкая граница, контур панели.
  • Border Muted (#d8dee4): внутренние разделители внутри панели.
  • Border Subtle (#eaeef2): едва заметные разделители строк таблицы.

Тёмная тема

  • Dark Canvas (#0d1117): тёмный фон страницы.
  • Dark Surface (#161b22): боковая панель, заголовок, вторичная поверхность.
  • Dark Border (#30363d): стандартная граница тёмного режима.
  • Dark Fg (#e6edf3): основной текст на тёмном фоне.

3. Правила типографики

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

  • Основной текст / UI: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif
  • Код / Моно: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace
  • Emoji: "Apple Color Emoji", "Segoe UI Emoji"

Иерархия

Роль Шрифт Размер Начертание Межстрочный интервал Трекинг Примечания
Display system-ui 32px (2rem) 600 1.25 -0.01em Заголовок репозитория, маркетинговый герой
H1 system-ui 24px (1.5rem) 600 1.25 normal Заголовок страницы
H2 system-ui 20px (1.25rem) 600 1.25 normal Заголовок раздела
H3 system-ui 16px (1rem) 600 1.25 normal Подраздел, заголовок панели
Body system-ui 14px (0.875rem) 400 1.5 normal Стандартный размер текста — не 16px
Body Small system-ui 12px (0.75rem) 400 1.4 normal Подписи, метаданные файлов
Code SFMono 12px (0.75rem) 400 1.45 normal Блоки кода, diff
Code Inline SFMono 0.85em 400 inherit normal Встроенные фрагменты code

Принципы

  • 14px для основного текста, не 16px: плотность прозы GitHub — его идентичность. Продукт читается при 14px, чтобы вместить больше строк в область просмотра.
  • Два варианта начертания: 400 для всего по умолчанию; 600 для заголовков и акцентов. Ни 500, ни 700.
  • Системные шрифты всегда: никогда не загружайте веб-шрифты для интерфейса — текст должен рендериться мгновенно при медленном соединении.

4. Стили компонентов

Кнопки

Основная (зелёная)

  • Фон: #1f883d
  • Текст: #ffffff
  • Граница: 1px solid rgba(31, 35, 40, 0.15)
  • Отступы: 5px 16px
  • Скругление: 6px
  • Тень: 0 1px 0 rgba(31,35,40,0.1)
  • Наведение: фон #1a7f37
  • Использование: «Create repository», «Merge pull request»

По умолчанию

  • Фон: #f6f8fa
  • Текст: #1f2328
  • Граница: 1px solid #d0d7de
  • Отступы: 5px 16px
  • Скругление: 6px
  • Наведение: фон #f3f4f6, граница #d0d7de

Контурная (стиль синей ссылки)

  • Фон: #ffffff
  • Текст: #0969da
  • Граница: 1px solid #d0d7de
  • Наведение: фон #0969da, текст #ffffff

Опасная

  • Фон: #ffffff
  • Текст: #cf222e
  • Граница: 1px solid #d0d7de
  • Наведение: фон #a40e26, текст #ffffff, граница #a40e26

Карточки / блоки

  • Фон: #ffffff
  • Граница: 1px solid #d0d7de
  • Скругление: 6px
  • Отступы: 16px (заголовок) + 16px (тело)
  • Заголовок имеет полосу #f6f8fa с нижней границей.

Поля ввода

  • Фон: #ffffff
  • Граница: 1px solid #d0d7de
  • Скругление: 6px
  • Отступы: 5px 12px
  • Фокус: граница #0969da, кольцо 0 0 0 3px rgba(9,105,218,0.3)

Статусные таблетки (Issue / PR)

  • Открыт: фон #1a7f37, белый текст, отступы 4px 10px, скругление 9999px.
  • Закрыт: фон #cf222e, белый текст.
  • Смёрджен: фон #8250df, белый текст.
  • Черновик: фон #6e7781, белый текст.

Метки (теги на Issue/PR)

  • Отступы: 0 7px
  • Скругление: 9999px
  • Шрифт: 12px / 500
  • Фон и текст задаются программно (цвет метки → цвет текста вычисляется для контрастности).

5. Отступы и компоновка

  • Базовая единица: 4px. Шкала отступов: 4, 8, 12, 16, 24, 32, 40, 48.
  • Максимальная ширина страницы: 1280px (Container-xl).
  • Боковая панель: 296px на десктопе, сворачивается ниже 1012px.
  • Отступы строки: 16px по горизонтали, 12px по вертикали (списки намеренно плотные).

6. Движение

  • Длительность: 80ms для наведения; 200ms для открытия меню/поповера.
  • Easing: ease-out для открытия, ease-in для закрытия.
  • Избегать: анимаций при загрузке страницы, параллакса, постоянных микровзаимодействий. Элементы появляются — но не выступают.

7. Ограничения использования

  • Используйте плотные списки, обрамлённые блоки и системную типографику вместе; изолированные зелёные кнопки сами по себе не создают поверхность, похожую на GitHub.
  • Применяйте зелёный для конструктивных действий с репозиторием, синий — для ссылок и фокуса, красный/фиолетовый/серый — только для состояний issue, PR и рабочих процессов.
  • Отдавайте предпочтение сдержанному оформлению, чётким границам и компактным отступам вместо декоративных теней или крупных маркетинговых карточек.