项目文件夹

文件
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

8.2 KiB

Design System Inspired by GitHub

Category: Entwicklerwerkzeuge Code-zentrierte Plattform. Funktionale Dichte, Blau-auf-Weiß-Präzision, Primer-Grundlagen.

1. Visuelles Thema & Atmosphäre

GitHubs Oberfläche ist ingenieurmäßig gestaltet, nicht dekoriert. Jeder Pixel setzt eine klare Haltung: Dies ist ein Werkzeug für Menschen, denen Diffs, Builds und Pull Requests wichtig sind. Der Seitenhintergrund ist ein klares #ffffff (hell) oder #0d1117 (dunkel), mit Inhalten auf dichten rechteckigen Bereichen, die durch haarfeine Rahmen statt Weißraum getrennt sind. Informationsdichte ist das Markenzeichen — Listenzeilen, Code-Zeilen, Repository-Header und Benachrichtigungskarten sind eng zusammengepackt, damit ein erfahrener Nutzer hundert Einträge ohne Scrollen überfliegen kann.

Die charakteristischen Akzente sind das Primer-Blau (#0969da) für Links und primäre Aktionen sowie das GitHub-Grün (#1a7f37) für Merge-Zustände, Erfolg und den Merge-Button selbst. Beide wirken leicht gedämpft im Vergleich zu Consumer-Produkt-Blau- und -Grüntönen — gesättigt genug, um sich gegen den dichten grauen Text abzuheben, zurückhaltend genug, um im Hintergrund zu verschwinden, wenn mehrere davon in einem Viewport erscheinen.

Die Typografie verwendet den system-ui-Stack im gesamten Produkt, sodass Text auf jedem Betriebssystem scharf gerendert wird, ergänzt durch SFMono / Menlo / Consolas für Code. Es gibt keine redaktionelle Display-Schrift; GitHubs Stimme ist die Stimme des Systems, das Sie bereits verwenden.

Hauptmerkmale:

  • Reines Weiß als Hintergrund (#ffffff) oder tiefes Marineschwarz (#0d1117) — keine Wärme, kein Farbton
  • Haarfeine graue Rahmen (#d0d7de) definieren jeden Bereich und jedes Panel
  • Primer-Blau (#0969da) für Links/Primäraktionen; GitHub-Grün (#1a7f37) für Erfolg/Merge
  • system-ui für Fließtext; SFMono für Code — keine eigene Schriftart
  • Dichte Listenzeilen mit minimalem Innenabstand; Weißraum ist selten
  • Octicon-Symbolik bei 16px / 24px — einzeiliger Strich, geometrisch, konsistent
  • Pillenförmige Status-Badges mit starker Farbsemantik

2. Farbpalette & Rollen

Primär

  • Canvas Default (#ffffff): Primärer Seitenhintergrund, helles Theme.
  • Canvas Subtle (#f6f8fa): Sekundäre Oberfläche, Seitenleiste, Eingabehintergrund, Header-Streifen.
  • Canvas Inset (#eaeef2): Code-Block-Hintergrund, tief eingebettete Oberfläche.
  • Fg Default (#1f2328): Primärtext, Überschriften, Schrift.
  • Fg Muted (#656d76): Sekundärtext, Bildunterschriften, Dateipfade.

Markenakzent

  • Primer Blue (#0969da): Links, primäre CTAs, Fokusring-Basis — die universelle interaktive Farbe.
  • Primer Blue Hover (#0550ae): Hover/Gedrückt für primäres Blau.
  • Accent Subtle (#ddf4ff): Weiche blaue Oberfläche für Hinweise, Info-Banner.

Semantisch

  • Success / Merge Green (#1a7f37): Gemergte PRs, Erfolgs-Badges, Merge-Button.
  • Success Subtle (#dafbe1): Heller Erfolgsfarbton.
  • Open Green (#1a7f37): „Open"-Zustand für Issues/PRs.
  • Closed / Danger Red (#cf222e): Geschlossene PRs, destruktive Aktion, Validierungsfehler.
  • Danger Subtle (#ffebe9): Fehler-Banner-Oberfläche.
  • Attention / Warning Yellow (#9a6700): Warnungstext auf Bernsteinoberfläche.
  • Attention Subtle (#fff8c5): Warnungs-Banner-Oberfläche.
  • Done Purple (#8250df): Gemergt und archiviert, „Erledigt"-Zustand, Premium-Badge.
  • Sponsor Pink (#bf3989): Sponsors-Herz, GitHub Sponsors-Marke.

Rahmen & Trennlinie

  • Border Default (#d0d7de): Standard-Haarrahmen, Panel-Umriss.
  • Border Muted (#d8dee4): Innere Trennlinien innerhalb eines Panels.
  • Border Subtle (#eaeef2): Dezente Tabellenzeilen-Trennlinien.

Dunkles Theme

  • Dark Canvas (#0d1117): Dunkler Seitenhintergrund.
  • Dark Surface (#161b22): Seitenleiste, Header, sekundäre Oberfläche.
  • Dark Border (#30363d): Standard-Rahmen im Dunkelmodus.
  • Dark Fg (#e6edf3): Primärtext auf dunklem Hintergrund.

3. Typografieregeln

Schriftfamilie

  • Fließtext / 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"

Hierarchie

Rolle Schrift Größe Gewicht Zeilenhöhe Buchstabenabstand Hinweise
Display system-ui 32px (2rem) 600 1.25 -0.01em Repository-Header, Marketing-Hero
H1 system-ui 24px (1.5rem) 600 1.25 normal Seitenüberschrift
H2 system-ui 20px (1.25rem) 600 1.25 normal Abschnittsüberschrift
H3 system-ui 16px (1rem) 600 1.25 normal Unterabschnitt, Panel-Header
Body system-ui 14px (0.875rem) 400 1.5 normal Standard-Textgröße — nicht 16px
Body Small system-ui 12px (0.75rem) 400 1.4 normal Bildunterschriften, Datei-Metadaten
Code SFMono 12px (0.75rem) 400 1.45 normal Code-Blöcke, Diff
Code Inline SFMono 0.85em 400 inherit normal Inline-code-Spans

Grundsätze

  • 14px Fließtext, nicht 16px: GitHubs Prosadichte ist seine Identität. Das Produkt wird bei 14px gelesen, um mehr Zeilen in einen Viewport zu passen.
  • Gewicht binär: 400 standardmäßig für alles; 600 für Überschriften und Hervorhebungen. Kein 500, kein 700.
  • Systemschriften immer: Niemals eine Webfont für Chrome laden — Text muss bei langsamen Verbindungen sofort gerendert werden.

4. Komponenten-Stile

Buttons

Primär (Grün)

  • 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
  • Verwendung: „Repository erstellen", „Pull Request mergen"

Standard

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

Outline (Blauer Link-Stil)

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

Gefahr

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

Karten / Boxen

  • Background: #ffffff
  • Border: 1px solid #d0d7de
  • Radius: 6px
  • Padding: 16px (Header) + 16px (Body)
  • Header hat einen #f6f8fa-Streifen mit unterem Rahmen.

Eingabefelder

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

Status-Pillen (Issue / PR)

  • Open: background #1a7f37, Text weiß, padding 4px 10px, radius 9999px.
  • Closed: background #cf222e, Text weiß.
  • Merged: background #8250df, Text weiß.
  • Draft: background #6e7781, Text weiß.

Labels (Tags für Issues/PRs)

  • Padding: 0 7px
  • Radius: 9999px
  • Font: 12px / 500
  • Hintergrund und Text sind programmatisch (Label-Farbe → Text für Kontrast berechnet).

5. Abstände & Layout

  • Basiseinheit: 4px. Abstands-Skala: 4, 8, 12, 16, 24, 32, 40, 48.
  • Maximale Seitenbreite: 1280px (Container-xl).
  • Seitenleiste: 296px auf Desktop, bricht unter 1012px zusammen.
  • Zeilen-Padding: 16px horizontal, 12px vertikal (Listen sind konstruktionsbedingt dicht).

6. Animation

  • Dauer: 80ms für Hover; 200ms für Menü-/Popover-Öffnung.
  • Easing: ease-out beim Öffnen, ease-in beim Schließen.
  • Vermieden: Seitenlade-Animation, Parallax, persistente Micro-Interactions. Dinge erscheinen; sie performen nicht.

7. Verwendungsrichtlinien

  • Dichte Listen, umrahmte Boxen und Systemtypografie zusammenhalten; isolierte grüne Buttons allein reichen nicht aus, um eine GitHub-ähnliche Produktoberfläche zu erzeugen.
  • Grün für konstruktive Repository-Aktionen verwenden, Blau für Links und Fokus, und Rot/Lila/Grau nur für Issue-, PR- und Workflow-Zustände.
  • Ruhige Benutzeroberfläche, explizite Rahmen und kompakte Abstände gegenüber dekorativen Schatten oder großen Marketing-Karten bevorzugen.