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, ring0 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 і робочих процесів.
- Надавайте перевагу тихому інтерфейсу, чітким рамкам і компактним відступам, а не декоративним тіням або великим картками у маркетинговому стилі.