8.2 KiB
System projektowy inspirowany GitHub
Category: Narzędzia deweloperskie Platforma zorientowana na kod. Gęstość funkcjonalna, precyzja niebieskiego na białym, fundamenty Primer.
1. Motyw wizualny i atmosfera
Powierzchnia GitHub jest zaprojektowana, nie ozdobiona. Każdy piksel wyraża stanowisko: to narzędzie dla osób, którym zależy na diffach, buildach i pull requestach. Tło strony to czysty #ffffff (jasny) lub #0d1117 (ciemny), a treść rozmieszczona jest na gęstych prostokątnych panelach oddzielonych cienkimi ramkami zamiast pustą przestrzenią. Gęstość informacji to marka — wiersze list, linie kodu, nagłówki repozytoriów i karty powiadomień są ściśle upakowane, aby zaawansowany użytkownik mógł przeskanować sto elementów bez przewijania.
Charakterystyczne akcenty to Primer blue (#0969da) dla łączy i podstawowych akcji oraz GitHub green (#1a7f37) dla scalonych stanów, sukcesów i samego przycisku scalania. Oba wyglądają nieco stonowanie w porównaniu z niebieskim i zielonym w produktach konsumenckich — wystarczająco nasycone, by odczytywać się na tle gęstego szarego tekstu, na tyle powściągliwe, by znikać w tle, gdy kilka z nich pojawi się w jednym widoku.
Typografia używa stosu system-ui w całym produkcie, dzięki czemu tekst renderuje się ostro na każdym systemie operacyjnym, w parze z SFMono / Menlo / Consolas dla kodu. Nie ma editorial display fontu; głosem GitHub jest głos systemu, na którym już pracujesz.
Kluczowe cechy:
- Czysto białe płótno (
#ffffff) lub głęboka granatowa czerń (#0d1117) — bez ciepła, bez odcienia - Cienkie szare ramki (
#d0d7de) definiują każdy panel - Primer blue (
#0969da) dla łączy/podstawowych; GitHub green (#1a7f37) dla sukcesu/scalania - system-ui dla prozy; SFMono dla kodu — brak niestandardowego kroju pisma
- Gęste wiersze list z minimalnym paddingiem; białe przestrzenie są rzadkością
- Ikonografia Octicon w rozmiarze 16px / 24px — pojedynczy obrys, geometryczna, spójna
- Odznaki statusu w kształcie pigułki z mocną semantyką kolorów
2. Paleta kolorów i role
Podstawowe
- Canvas Default (
#ffffff): Główne tło strony, jasny motyw. - Canvas Subtle (
#f6f8fa): Drugorzędna powierzchnia, pasek boczny, tło pola wprowadzania, pasek nagłówka. - Canvas Inset (
#eaeef2): Tło bloku kodu, głęboko wklęsła powierzchnia. - Fg Default (
#1f2328): Podstawowy tekst, nagłówki, tusz. - Fg Muted (
#656d76): Drugorzędny tekst, podpisy, ścieżki plików.
Akcent marki
- Primer Blue (
#0969da): Łącza, główne CTA, podstawa pierścienia fokusa — uniwersalny kolor interaktywny. - Primer Blue Hover (
#0550ae): Stan najechania/wciśnięcia dla podstawowego niebieskiego. - Accent Subtle (
#ddf4ff): Delikatna niebieska powierzchnia dla wyróżnień, banerów informacyjnych.
Semantyczne
- Success / Merge Green (
#1a7f37): Scalone PR, odznaki sukcesu, przycisk scalania. - Success Subtle (
#dafbe1): Odcień powierzchni sukcesu. - Open Green (
#1a7f37): Stan „Open" dla issue/PR. - Closed / Danger Red (
#cf222e): Zamknięte PR, działanie destrukcyjne, błąd walidacji. - Danger Subtle (
#ffebe9): Powierzchnia banera błędu. - Attention / Warning Yellow (
#9a6700): Tekst ostrzeżenia na bursztynowej powierzchni. - Attention Subtle (
#fff8c5): Powierzchnia banera ostrzeżenia. - Done Purple (
#8250df): Scalone i zarchiwizowane, stan „done", odznaka premium. - Sponsor Pink (
#bf3989): Serce sponsorów, marka GitHub Sponsors.
Ramka i separator
- Border Default (
#d0d7de): Standardowa cienka ramka, obrys panelu. - Border Muted (
#d8dee4): Wewnętrzne separatory w panelu. - Border Subtle (
#eaeef2): Słabe separatory wierszy tabeli.
Ciemny motyw
- Dark Canvas (
#0d1117): Ciemne tło strony. - Dark Surface (
#161b22): Pasek boczny, nagłówek, drugorzędna powierzchnia. - Dark Border (
#30363d): Standardowa ramka w trybie ciemnym. - Dark Fg (
#e6edf3): Podstawowy tekst na ciemnym tle.
3. Zasady typografii
Rodzina czcionek
- Body / UI:
-apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif - Code / Mono:
ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace - Emoji:
"Apple Color Emoji", "Segoe UI Emoji"
Hierarchia
| Rola | Czcionka | Rozmiar | Grubość | Wysokość linii | Odstęp liter | Uwagi |
|---|---|---|---|---|---|---|
| Display | system-ui | 32px (2rem) | 600 | 1.25 | -0.01em | Nagłówek repo, hero marketingowy |
| H1 | system-ui | 24px (1.5rem) | 600 | 1.25 | normal | Nagłówek strony |
| H2 | system-ui | 20px (1.25rem) | 600 | 1.25 | normal | Nagłówek sekcji |
| H3 | system-ui | 16px (1rem) | 600 | 1.25 | normal | Podsekcja, nagłówek panelu |
| Body | system-ui | 14px (0.875rem) | 400 | 1.5 | normal | Domyślny rozmiar tekstu — nie 16px |
| Body Small | system-ui | 12px (0.75rem) | 400 | 1.4 | normal | Podpisy, metadane pliku |
| Code | SFMono | 12px (0.75rem) | 400 | 1.45 | normal | Bloki kodu, diff |
| Code Inline | SFMono | 0.85em | 400 | inherit | normal | Wbudowane fragmenty code |
Zasady
- 14px body, nie 16px: Gęstość prozy GitHub to jego tożsamość. Produkt renderuje przy 14px, by zmieścić więcej wierszy w widoku.
- Grubość binarna: 400 dla wszystkiego domyślnie; 600 dla nagłówków i wyróżnień. Bez 500, bez 700.
- Zawsze czcionki systemowe: nigdy nie ładuj webfontu dla chrome — tekst musi renderować się natychmiast przy wolnym połączeniu.
4. Style komponentów
Przyciski
Primary (Green)
- Tło:
#1f883d - Tekst:
#ffffff - Ramka: 1px solid
rgba(31, 35, 40, 0.15) - Padding: 5px 16px
- Radius: 6px
- Cień:
0 1px 0 rgba(31,35,40,0.1) - Najechanie: tło
#1a7f37 - Użycie: „Create repository", „Merge pull request"
Default
- Tło:
#f6f8fa - Tekst:
#1f2328 - Ramka: 1px solid
#d0d7de - Padding: 5px 16px
- Radius: 6px
- Najechanie: tło
#f3f4f6, ramka#d0d7de
Outline (Blue Link Style)
- Tło:
#ffffff - Tekst:
#0969da - Ramka: 1px solid
#d0d7de - Najechanie: tło
#0969da, tekst#ffffff
Danger
- Tło:
#ffffff - Tekst:
#cf222e - Ramka: 1px solid
#d0d7de - Najechanie: tło
#a40e26, tekst#ffffff, ramka#a40e26
Karty / Boksy
- Tło:
#ffffff - Ramka: 1px solid
#d0d7de - Radius: 6px
- Padding: 16px (nagłówek) + 16px (treść)
- Nagłówek ma pasek
#f6f8faz dolną ramką.
Pola wprowadzania
- Tło:
#ffffff - Ramka: 1px solid
#d0d7de - Radius: 6px
- Padding: 5px 12px
- Fokus: ramka
#0969da, pierścień0 0 0 3px rgba(9,105,218,0.3)
Odznaki statusu (Issue / PR)
- Open: tło
#1a7f37, tekst biały, padding 4px 10px, radius 9999px. - Closed: tło
#cf222e, tekst biały. - Merged: tło
#8250df, tekst biały. - Draft: tło
#6e7781, tekst biały.
Etykiety (tagi na Issues/PRach)
- Padding: 0 7px
- Radius: 9999px
- Czcionka: 12px / 500
- Tło i tekst są programowe (kolor etykiety → tekst obliczany dla kontrastu).
5. Odstępy i układ
- Jednostka bazowa: 4px. Skala odstępów: 4, 8, 12, 16, 24, 32, 40, 48.
- Maksymalna szerokość strony: 1280px (
Container-xl). - Pasek boczny: 296px na desktopie, zwija się poniżej 1012px.
- Padding wiersza: 16px poziomo, 12px pionowo (listy są gęste z założenia).
6. Ruch
- Czas trwania: 80ms dla najechania; 200ms dla otwarcia menu/popovers.
- Wygładzanie:
ease-outdla otwarć,ease-indla zamknięć. - Unikane: animacje ładowania strony, parallax, trwałe mikrointerakcje. Rzeczy się pojawiają; nie performują.
7. Wytyczne użytkowania
- Utrzymuj gęste listy, obramowane boksy i czcionki systemowe razem; izolowane zielone przyciski nie wystarczą, by stworzyć powierzchnię produktu podobną do GitHub.
- Używaj zielonego dla konstruktywnych akcji repozytoriów, niebieskiego dla łączy i fokusa, a czerwonego/fioletowego/szarego wyłącznie dla stanów issue, PR i workflow.
- Preferuj spokojne chrome, wyraźne ramki i kompaktowe odstępy zamiast dekoracyjnych cieni lub dużych kart w stylu marketingowym.