Oluwa.io
All writing
·6 min readdesignsystemminimalismtillgänglighetdesigna tokens

Svart och vitt: ett designsystem byggt för fokus

Varför vi bygger varje produkt på ett minimalistiskt svartvitt designsystem: stängda grå ramper, typskala hierarki och tillgänglighet som standard.

By Vitor Lima

Vi bygger varje OLUWA-produkt i strikt svart och vitt. Inget märkesblått, ingen färgton, ingen "framgångsgrön" som smyger sig in i en skålnotis. Ett minimalistiskt svartvitt designsystem är ingen nostalgi för terminalen och det är inte en moodboard vi föll för. Det är en funktionsbegränsning som gör våra beslut snabbare, våra gränssnitt mer läsbara och vår tillgänglighetsbaslinje högre som standard. Det är därför vi valde monokrom, vad vi gav upp och de symboler och regler du kan anta imorgon.

Varför vi tog bort färg med flit

Färg är den mest missbrukade variabeln i gränssnittsdesign. Det är billigt att lägga till och dyrt att styra. I det ögonblick du har en palett tävlar varje element om en av dina nyanser, och "vilken färg ska det här vara" blir en fråga du svarar på hundratals gånger i veckan, vanligtvis inkonsekvent.

En destruktiv knapp är röd. Men så är ett feltillstånd, och en markör för obligatoriska fält, och meddelandemärket och diagramserien för churned användare. Rött betyder nu fem saker, det vill säga det betyder ingenting.

Att ta bort färg tar bort hela beslutsklassen. När du inte kan nå en nyans för att signalera vikt, signalerar du det med verktygen som faktiskt har betydelse: position, storlek, vikt och blanksteg. Dessa verktyg är mer ärliga. En rubrik läses som viktig eftersom den är stor och sitter högst upp med plats runt den, inte för att någon målat den lila.

Takeaway: om du använder färg för att fixa ett hierarkiproblem har du ett hierarkiproblem, inte ett färgproblem. Monokrom vägrar att låta dig skriva över det.

Hierarki utan färg: tre spakar

Med nyans från bordet gör tre spakar allt arbete.

Typ skala. Vi kör en modulskala med tydliga hopp, inte en kontinuerlig gradient av storlekar. Steg som sitter för nära läses som brus; ögat behöver entydig rang. Vår arbetsskala är ungefär 12 / 14 / 16 / 20 / 28 / 40 / 64px. Brödtext sitter på 16, sekundär metadata vid 14, och allt över 20 är strukturellt. Om två saker behöver kännas olika i betydelse får de olika steg, aldrig samma steg i två nyanser av grått.

Vikt och fodral. Med ett typsnitt och ingen färg blir vikten en primär signal. Vi använder som mest tre vikter: normal, medium och en enda fet som är reserverad för äkta betoning. Versaler med spårat bokstavsmellanrum gör jobbet som en "etikettfärg", markerar en sträng som en kategori eller ögonbryn utan en nyans.

Rymden. Whitespace är den bärande väggen i en monokrom layout. Närhetsgrupper relaterade saker; avstånd skiljer dem åt. I MadaiOps, vår kryptoorderapp, är beställningsbiljetten helt och hållet beroende av detta: pris, storlek och sida sitter tätt grupperade, medan bekräftelseåtgärden skjuts undan med avsiktligt utrymme så att den aldrig kan läggas fett bredvid en ingång. Ingen röd "fara"-styling krävs. Avståndet gör bevakningen.

Kontrast är ett system, inte en vibe

Fällan med svart och vitt är att tro att du bara har två värden. Du har en full gråskaleramp, och disciplinen ligger i att hålla tillbaka den. Vi definierar en liten, fast uppsättning trappsteg och förbjuder avfartsgrått. Här är rampen vi faktiskt skickar:

--ink-000: #000000   /* primary text, headings */
--ink-700: #3d3d3d   /* body on light, secondary headings */
--ink-500: #6b6b6b   /* metadata, captions, disabled-adjacent */
--ink-300: #b0b0b0   /* borders, dividers, placeholder */
--ink-100: #e6e6e6   /* subtle fills, hover backgrounds */
--paper:   #ffffff   /* base surface */

Sex värden. Det är hela systemet, plus dess invers för mörkt läge. Regeln vi upprätthåller i granskningen: det får inte finnas något grått som inte finns på rampen. I samma ögonblick som någon piper på en #8a8a8a eftersom "kanten kändes en aning tung", börjar systemet ruttna. En sluten uppsättning värden är det som hindrar ett monokromt användargränssnitt från att glida in i lerig enhetlighet.

Text rensar 4,5:1, struktur rensar 3:1

Varje text-on-surface-parning kontrolleras mot WCAG-kontrastförhållanden innan den skickas. --ink-500--paper landar runt 5,7:1, bekvämt förbi tröskeln 4,5:1 för brödtext. --ink-300 misslyckas som text och är därför endast tillåtet för gränser och avdelare, där 3:1 icke-texttröskeln gäller. Att koda regeln i tokens tillåtna användningsområden, inte bara dess värde, är det som gör att den fastnar.

Tillgänglighetsutdelningen

Det är här monokrom tyst vinner. Ungefär en av tolv män har någon form av färgseendebrist, och alla gränssnitt som lutar sig mot rött mot grönt för att bära mening är oläsligt för en meningsfull del av användare. Vi träffade aldrig den väggen, eftersom vi aldrig kodade betydelse i nyans till att börja med. Våra stater kännetecknas av form, etikett, vikt och position.

Den disciplinen tvingar fram ett hälsosammare mönster överallt: låt aldrig en enda kanal bära mening ensam. En inaktiverad knapp i vårt system är inte bara lättare. Den tappar gränsen och dess etikett sjunker till --ink-300, så tillståndet överlever på en gråskaleskärm, i starkt solljus och för en färgblind användare på samma sätt. Youp, vår journalapp, markerar humörposter med ikonografi och etiketttext snarare än den vanliga röd-till-grön sentimentgradienten, så den känslomässiga historien läses utan att förlita sig på ett spektrum som många inte kan se.

Du får stöd för hög kontrast och forcerade färger nästan gratis också, eftersom du aldrig kämpade mot webbläsarens egen tillgänglighetsöverstyrning med en delikat varumärkespalett.

Hur tvång påskyndar beslut

Den underskattade fördelen är hastigheten. En palett är en kombinatorisk explosion: varje ny komponent multipliceras mot varje nyans och varje tillstånd. Monokrom kollapsar det. Utan något färgbeslut att fatta, reduceras en komponents design till typsteg, vikt, avstånd och vilket gråskalesymbol för kantlinjen. Det är ett beslut du kan fatta på några sekunder och försvara i granskning med en regel istället för ett smakargument.

Det förenar också. Eftersom tokenuppsättningen är liten och stängd, består komponenterna förutsägbart: ett kort, en bordsrad och en modal drar alla från samma sex gråtoner och samma sju typsteg, så de ser relaterade ut utan någon koordination. Nya ytor ärver konsekvens istället för att förhandla om det. För en liten studio som levererar flera produkter är det delade underlaget skillnaden mellan fyra appar som känns som en familj och fyra appar som känns som fyra leverantörer.

Avvägningen är verklig och värd att nämna. Monokrom har mindre råa uttrycksfulla omfång, och vissa kategorier behöver verkligen färg: datavisualisering med många serier, allt kartläggning till en fysisk färg, varumärkesögonblick som handlar med värme. Vi låtsas inte annat. Vår hållning är att färg ska vara förtjänt och sällsynt, introduceras medvetet för ett specifikt jobb, aldrig som standardspaken för hierarki. När vi väl sträcker oss efter det landar det hårt just för att allt runt omkring är tyst.

Regler du kan anta imorgon

Om du vill prova detta utan att bygga om allt:

  • Stäng din grå ramp. Välj fem eller sex värden, namnge dem och blockera allt från rampen i kodgranskning. Denna enda regel gör det mesta av jobbet.
  • Gör en typskala och använd endast dess steg. Inga godtyckliga teckenstorlekar. Om du fortsätter att behöva en ny storlek är vågen fel; fixa skalan, lägg inte till en engångsföreteelse.
  • Koda tillåten användning till tokens. --ink-300 är "endast gränser", inte bara ett hexadecimalt värde. Dokumentera det där ingenjörer kommer att läsa det.
  • Granska varje meningsbärande signal för en andra kanal. Om du tar bort färg skulle göra ett tillstånd tvetydigt, lägg till form, etikett eller position tills det inte gör det.
  • Behandla blanktecken som en komponent. Ge mellanslag namngivna tokens och försvara dem i recension på det sätt som du försvarar färger på andra ställen.

Avslutande tanke

Att arbeta i svart och vitt är inte en begränsning vi tolererar; det är en lins som förtydligar. Ta bort den enklaste variabeln och de strukturella, rytm, proportion, kontrast, rymd, har ingenstans att gömma sig. Gränssnittet har antingen en riktig hierarki eller så har det inte, och du får reda på det direkt. Den ärligheten är mer värd för oss än någon palett.