GH GambleHub

Język jednego interfejsu

1) Jaki jest język jednego interfejsu i dlaczego jest potrzebny

Ujednolicony język interfejsu (NEI) to wspólny system koncepcji, reguł wizualnych i interakcji współdzielonych przez projektantów, inżynierów, analityków i autorów treści.

Cele:
  • Spójność - te same komponenty i terminy między produktami i zespołami.
  • Szybkość: szybkie budowanie, mniej holiwiarów, szybsze wsiadanie na pokład.
  • Jakość: spójne wzory UX, dostępność „domyślnie”.
  • Skalowalność: bezpieczna ewolucja bez rozpadu na „zoo UI”.

2) Warstwy jednego języka

1. Żetony (kolor, typografia, wymiary, cienie, tiret, promienie, animacje).
2. Komponenty (przyciski, pola wejściowe, tabele, wykresy, modale, tosty, zakładki).
3. Wzory (formularze, walidacja, kreatory krok po kroku, listy/tabele, powiadomienia).
4. Zawartość (mikro-copywriting, terminologia, komunikaty o błędach).
5. Ikonografia i ilustracje (rodzina, styl, wymiary i linie).
6. Dostępność i i18n/RTL (zasady A11y, tłumaczenie, lokalizacje).
7. Procesy (wersje, przewodniki, recenzje, lintery, prezentacje i przykłady).

3) Żetony projektowe (podstawa ekspresji)

Żetony są nazwane wartościami, które są ponownie wykorzystywane we wszystkich produktach.

3. 1 Struktura tokenu (przykład)

json
{
"color": {
"bg": { "base": "#FFFFFF", "subtle": "#F7F8FA" },
"fg": { "primary": "#11131A", "muted": "#656D76" },
"accent": { "primary": "#2F6BFF", "warning": "#FF9F1A", "critical": "#E53935", "success": "#2EAE60" }
},
"space": { "xs": 4, "sm": 8, "md": 12, "lg": 16, "xl": 24, "2xl": 32 },
"radius": { "sm": 8, "md": 12, "lg": 16, "pill": 1000 },
"shadow": { "sm": "0 1px 2px rgba(0,0,0,.08)", "md": "0 4px 12px rgba(0,0,0,.10)" },
"font": { "family": "Inter, system-ui", "size": { "sm": 12, "md": 14, "lg": 16, "xl": 20 } },
"motion": { "duration": { "fast": 120, "base": 200, "slow": 320 }, "curve": { "inout": "ease-in-out" } }
}

3. 2 Nazywanie żetonów

Od ogólnego do konkretnego: 'kolor. akcent. pierwszorzędowe ', невич Морович'.
Bez wiązania z marką w nazewnictwie (marka jest tematem, a nie tokenem).
Gradacje: 'fg. wyciszony „,” fg. pierwotny ',' fg. odwrotnie ". Nie kodować jasności w nazwie ('blue500') bez systemu.

3. 3 Żetony tematyczne

Światło, ciemność, kontrastowanie: zmiana wartości, nie nazwy.
Tematy - warstwa nadrzędna, interfejs użytkownika pozostaje spójny.

4) Komponenty: Kontrakt, stany, dostępność

Komponent = Visual + Behavior + Props Contract + A11y.

4. Przykład kontraktu na przycisk 1

ts type ButtonProps = {
kind: "primary"      "secondary"      "tertiary"      "danger";
size: "sm"      "md"      "lg";
icon?: "plus"      "download"      "trash";
disabled?: boolean;
loading?: boolean;
ariaLabel?: string;
onClick?: (e: MouseEvent) => void;
};

Stany: „domyślnie/zawisnąć/aktywny/ostrość/wyłączony/załadunek”.
Dostępność: pierścień ostrości, rozmiary docelowe ≥ 40-48 px, „aria-pressed” do przełączania.

4. 2 Gwarancje składowe

Stabilne wymiary (wysokość linii, okładziny).
Dostępność poza pudełkiem (role/aria, klawiatura, kontrast).
Niezmienne: błąd wewnątrz pola zawsze na dole i z 'aria-descripedby'.

5) wzory UX (powtarzalna logika)

Formularze: etykieta po lewej/górnej stronie, etykieta plakietka, obok siebie + błędy podsumowujące, maski wejściowe i prompty.
Modale: jeden główny CTA, "Esc' zamyka, pułapka ostrości, powrót ostrości.
Tabele/listy: sortowanie, lepki nagłówek, paginacja, eksport.
Filtry: explicit Przycisk, zresetuj, zapisane ustawienia wstępne.
Powiadomienia: toast ≤ 3-5 s, pauza w centrum uwagi, 'rola = „status/alert”'.
Deski rozdzielcze: top insights → kontekst → grafika → CTA.

6) Wspólna terminologia i mikroprocesoryzowanie

6. 1 Słownik

Utrzymuj jeden glosariusz terminów biznesowych i UX. Każdy artykuł interfejsu go odwołuje.
Dla dubletów - wybierz jedno słowo („portfel” vs „równowaga”), drugie - jako synonim w wyszukiwaniu.

6. 2 Zasady tekstu

Krótko i w sprawie; unikać żargonu.
Błędy - wyjaśnić, co zrobić: "Określić datę w formacie RRRY-MM-DD'.
Pozycje to rzeczowniki; przyciski - czasowniki („Zapisz”, „Anuluj”).
Spójne jednostki: data/godzina w UTC lub locale, waluty z kodem (EUR, USD).

7) Ikonografia i ilustracje

Rodzina jest izomorficzna: kąt pojedynczy, grubość linii, siatka 24 × 24.
Statusy i semantyka: kolor - wtórny; kształt/ikona + tekst - podstawowy.
Skalowanie: piktogramy nie „unoszą się” w różnych gęstościach (1 ×/2 ×/3 ×).

8) Dostępność (A11y) i lokalizacja (i18n/RTL)

Komponenty są poddawane WCAG AA: kontrast, nawigacja klawiatura, ostrość, „preferuje zredukowany ruch”.
Przetłumaczone ciągi - w zasobach, a nie w kodzie. Znaczniki i format numeru/daty są zlokalizowane.
RTL: ikony lustrzane, poprawne zamówienie Tab, logika DnD z klawiatury.

9) Numery, daty, waluty i formaty

Daty/godzina: ISO-8601, czas rzeczywisty - UTC; user - locale.
Waluta: niewielkie jednostki/ciągi dziesiętne; zawsze podaj kod (na przykład "€12. 34” lub „12. 34 EUR" - według locale).
Odsetki: '12. 3%'i punkty '+ 1. 2 pp 'cleically odróżnić.
Zaokrąglanie: do znaczących cyfr; "k/m' dla dużych liczb.

10) Zarządzanie: role, artefakty, kanały

Design Language Council (DLC): Token/właściciele komponentów, roszczenia RFC.

Artefakty:
  • Content Center (Figma/Code) + Katalog na żywo z przykładami.
  • Dokumentacja: przewodniki, wzory, A11y, przewodnik po treści.
  • Changelog z datami, poziomami (dodane/zmienione/usunięte/usunięte/stałe).
  • Kanały: cotygodniowy zlewozmywak projektowy, kanał Slack, prezentacje wdrożeniowe.

11) Wersioning i ewolucja

SemVer dla pakietu komponentów: "MAJOR. DROBNE. PATCH '.
MINOR - dodatek: nowe żetony, rekwizyty z domyślnymi, nowe komponenty.
MAJOR - łamanie: usuwanie rekwizytów, zmiana semantyki → przewodniki migracyjne.
Zmniejszenie: ostrzeżenia, okno ≥ 90 dni, flagi zgodności.

12) Lintery i automatyczne kontrole

UI-linter: zabronione kolory poza żetonami, anty-wzory (przycisk-diva, wyłączony obrys).
A11y-checks: kontrast, role/aria, ostrość, klawiatura.
i18n-linter: „twarde” linie w kodzie, nieprawidłowe znaczniki.
Testy zrzutu ekranu: regresje wizualne komponentów.
Kontrakty API wizualizacji (jeśli istnieją): typy danych, zakresy, podpisy.

13) Prezentacja komponentów (storybook/piaskownica)

Przykłady na żywo z sterowaniem rekwizytami, kodem, stanami, A11y-checker.
„Przepisy”: formularz rejestracyjny, etap 3 kreator, tabela + filtry, modalka + toast.
„Piaskownica lokalizacji”: przełączanie języka/formatów/RTL.

14) Wzory nazewnictwa i struktury

14. 1 Komponenty (BEM/semantyka, przykład CSS)


.btn/basic/
.btn--primary/view/
.btn--danger
.btn--lg/size/
.btn __ icon/part/

W kodzie - monotonne nazwy rekwizytów: 'size', 'kind', 'disabled', 'onClick'.

14. 2 Struktura plików bibliotecznych


/tokens
/components
/button
/input
/modal
/patterns
/docs
/changelog

15) Anty-wzory

„Wolne” kolory/tiret poza żetonami.
Duplikat komponentów: „ ” „ ButtonNew”.
Placeholder jako jedyna etykieta polowa.
Wyłączanie obrysu i przycisków.
Nieprzewidywalny zawisek/aktywny/wyłączony.
Transliterowane określenia zamiast zwykłego tłumaczenia.
Brak przewodników migracyjnych podczas aktualizacji.

16) Single Language Quality Metrics

Pokrycie - odsetek ekranów korzystających z biblioteki treści.
Wskaźnik spójności: Ponowne użycie żetonów vs „ręcznie” style.
A11y Pass Rate - procent składników przechodzących przez WCAG AA.
Defect Escape: wady interfejsu użytkownika/treści w sprzedaży 1k commit.
Time-to-Ship - czas na wdrożenie typowego ekranu przed/po DLS.
Przyjęcie: prezentacje DAU, numer PR z komponentami/wzorami.

17) Lista kontrolna ekranu

  • Używane żetony (kolor/tiret/promień), nie twarde wartości.
  • Komponenty z biblioteki; niestandardowe - tylko RFC.
  • Dostępność: klawiatura/focus/contrast/roles/aria.
  • Jednostki: daty/waluty/wartości procentowe - na podręcznik formatu.
  • Mikrokopie: przyciski = czasowniki, błędy = działanie poprawiające.
  • Locales/RTL nie łamie układu.
  • Państwa: załadunek/pusty/błąd są dostarczone.
  • Aktualizacja testów regresji wizualnej.

18) Plan realizacji (3 iteracje)

Iteracja 1 - Fundacja (2-3 tygodnie)

Żetony (kolor/typografia/rozstaw/ruch), podstawowe komponenty (przycisk, wejście, wybierz, podpowiedź, modal), przewodnik treści (ton, etykiety, błędy).
Prezentacja (storybook) i A11y-checker, token linter.

Iteracja 2 - Wzorce i lokalizacja (3-4 tygodnie)

Wzory formularzy/tabel/filtrów, pakiet ikon 24 × 24, RTL/i18n piaskownica, reguły dla numerów/dat/walut.
SemVer, changelog, proces RFC/migracji, autotests (visual + A11y).

Iteracja 3 - skala i ewolucja (ciągła)

Komponenty kompozycyjne (Kreator, Miernik, Mapa prymitywne), temizacja (światło/ciemność/kontrast), raporty mierników jakości, regularne audyty UX.

19) Mini-FAQ

Czy trzeba „wszystko od razu”?
Nie, nie jest. Zacznij od żetonów i podzespołów, a następnie dodaj wzory i procesy.

Jak przekonać zespoły do korzystania z Inicjatywy na rzecz zatrudnienia ludzi młodych?
Pokaż wygrane: prędkość, mniejsze usterki, gotowe przepisy ekranu i A11y poza pudełkiem.

Co zrobić ze spuścizną ekranów?
Plan migracji, style mostu przez żetony, ekrany priorytetowe - pierwszy.

Razem

Pojedynczy język interfejsu to nie tylko biblioteka komponentów. Jest to system zasad i procesów, w którym żetony określają ekspresywność, składniki - zachowanie i dostępność, wzorce - powtarzalność decyzji, a zarządzanie i mierniki - zrównoważony rozwój. Zrób swój język jasny, możliwy do zweryfikowania i rozszerzalny - a Twoje produkty będą wyglądać i działać jednolicie, szybko i niezawodnie.

Contact

Skontaktuj się z nami

Napisz do nas w każdej sprawie — pytania, wsparcie, konsultacje.Zawsze jesteśmy gotowi pomóc!

Telegram
@Gamble_GC
Rozpocznij integrację

Email jest wymagany. Telegram lub WhatsApp są opcjonalne.

Twoje imię opcjonalne
Email opcjonalne
Temat opcjonalne
Wiadomość opcjonalne
Telegram opcjonalne
@
Jeśli podasz Telegram — odpowiemy także tam, oprócz emaila.
WhatsApp opcjonalne
Format: kod kraju i numer (np. +48XXXXXXXXX).

Klikając przycisk, wyrażasz zgodę na przetwarzanie swoich danych.