项目文件夹

文件
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 спроєктована, а не прикрашена. Кожен піксель виражає позицію: це інструмент для людей, які дбають про дифи, збірки та пул-реквести. Фон сторінки — чистий #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): Стан «відкрито» для задачі/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 Блоки коду, дифи
Code Inline SFMono 0.85em 400 inherit normal Вбудовані code фрагменти

Принципи

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

4. Стилізація компонентів

Кнопки

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

  • Background: #1f883d
  • Text: #ffffff
  • Border: 1px solid rgba(31, 35, 40, 0.15)
  • Padding: 5px 16px
  • Radius: 6px
  • Shadow: 0 1px 0 rgba(31,35,40,0.1)
  • Hover: background #1a7f37
  • Використання: «Створити репозиторій», «Злити пул-реквест»

Стандартна

  • Background: #f6f8fa
  • Text: #1f2328
  • Border: 1px solid #d0d7de
  • Padding: 5px 16px
  • Radius: 6px
  • Hover: background #f3f4f6, border #d0d7de

Контурна (стиль синього посилання)

  • Background: #ffffff
  • Text: #0969da
  • Border: 1px solid #d0d7de
  • Hover: background #0969da, text #ffffff

Небезпечна

  • Background: #ffffff
  • Text: #cf222e
  • Border: 1px solid #d0d7de
  • Hover: background #a40e26, text #ffffff, border #a40e26

Картки / Блоки

  • Background: #ffffff
  • Border: 1px solid #d0d7de
  • Radius: 6px
  • Padding: 16px (заголовок) + 16px (тіло)
  • Заголовок має смугу #f6f8fa з нижньою рамкою.

Поля введення

  • Background: #ffffff
  • Border: 1px solid #d0d7de
  • Radius: 6px
  • Padding: 5px 12px
  • Focus: border #0969da, ring 0 0 0 3px rgba(9,105,218,0.3)

Таблетки статусу (задача / PR)

  • Відкрито: background #1a7f37, текст білий, padding 4px 10px, radius 9999px.
  • Закрито: background #cf222e, текст білий.
  • Злито: background #8250df, текст білий.
  • Чернетка: background #6e7781, текст білий.

Мітки (теги на задачах/PR)

  • Padding: 0 7px
  • Radius: 9999px
  • Font: 12px / 500
  • Фон і текст визначаються програмно (колір мітки → текст обчислюється для контрастності).

5. Відступи та макет

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

6. Анімація

  • Тривалість: 80ms для наведення; 200ms для відкриття меню/поповера.
  • Прискорення: ease-out для відкриття, ease-in для закриття.
  • Уникається: анімація при завантаженні сторінки, ефект паралаксу, постійні мікровзаємодії. Елементи з'являються; вони не виступають.

7. Обмеження використання

  • Тримайте щільні списки, блоки з рамками та системну типографіку разом; одних зелених кнопок недостатньо, щоб створити поверхню, схожу на GitHub.
  • Використовуйте зелений для конструктивних дій у репозиторії, синій — для посилань і фокусу, а червоний/фіолетовий/сірий — лише для станів задач, PR і робочих процесів.
  • Надавайте перевагу тихому інтерфейсу, чітким рамкам і компактним відступам, а не декоративним тіням або великим картками у маркетинговому стилі.