Skip to main content

Farbsystem

Zuletzt aktualisiert:

Das Farbsystem von Frutjam verwendet semantische CSS-Token, die so konzipiert sind, dass sie standardmäßig die WCAG AA-Kontrastverhältnisse erfüllen. Kein JavaScript, Dark Mode-fähig, kompatibel mit Tailwind CSS v4. Funktioniert mit Django, HTMX, Laravel und jedem reinen CSS-Stack.

Frutjam verwendet benutzerdefinierte CSS-Eigenschaften als Design-Token für alle Farben. Jede Farbe wird pro Thema definiert und funktioniert automatisch mit Tailwind CSS-Dienstprogrammklassen, keine zusätzliche Konfiguration erforderlich. Nur CSS, kein JavaScript erforderlich. WCAG AA-Kontrast garantiert für jedes Farbpaar, funktioniert mit Django, HTMX, Laravel, React und jedem Tailwind CSS v4-Projekt.

Farbnamen

Frutjam definiert die folgenden semantischen Farbrollen. Zu jeder Farbe gibt es eine passende on-{color} Token für barrierefreien Vordergrundtext.

FarbeTokenZweck
Base--color-baseSeitenhintergrund
neutral--color-neutralOberflächen, Seitenleisten, Overlays
primär--color-primaryPrimäre Markenfarbe
sekundär--color-secondarySekundäre Markenfarbe
Akzent--color-accentAkzent-/Hervorhebungsfarbe
Info--color-infoInformationsnachrichten
Erfolg--color-successErfolgszustände
Warnung--color-warningWarnzustände
Fehler--color-errorFehler und destruktive Zustände

Farbskala (50–950)

Jede Farbe generiert eine 11-stufige Skala, die aus den Variablen Ihres Stammthemas berechnet wird color-mix() in OKLCH und nicht zur Erstellungszeit. Legen Sie eine Markenfarbe fest und alle elf Schritte folgen daraus, sodass Sie sie nie von Hand festlegen müssen.

Jeder Schritt ist eine CSS-Variable und ein Tailwind-Dienstprogramm zugleich: use var(--color-primary-700) in Ihrem eigenen CSS, oder bg-primary-700 im Markup. Bewegen Sie den Mauszeiger über ein Farbfeld, um beide Namen anzuzeigen.

Colour50100200300400500600700800900950
primaryprimary 50primary 100primary 200primary 300primary 400primary 500primary 600primary 700primary 800primary 900primary 950
secondarysecondary 50secondary 100secondary 200secondary 300secondary 400secondary 500secondary 600secondary 700secondary 800secondary 900secondary 950
accentaccent 50accent 100accent 200accent 300accent 400accent 500accent 600accent 700accent 800accent 900accent 950
infoinfo 50info 100info 200info 300info 400info 500info 600info 700info 800info 900info 950
successsuccess 50success 100success 200success 300success 400success 500success 600success 700success 800success 900success 950
warningwarning 50warning 100warning 200warning 300warning 400warning 500warning 600warning 700warning 800warning 900warning 950
errorerror 50error 100error 200error 300error 400error 500error 600error 700error 800error 900error 950
neutralneutral 50neutral 100neutral 200neutral 300neutral 400neutral 500neutral 600neutral 700neutral 800neutral 900neutral 950
basebase 50base 100base 200base 300base 400base 500base 600base 700base 800base 900base 950

Da die Schritte anhand Ihres Themas berechnet und nicht fest codiert sind, ist dieses Raster kein Abbild der Farben von Frutjam. Es sind deine Farben. Wechseln Sie das Thema und jedes Farbfeld oben bewegt sich mit, weshalb auch keine Hexadezimalwerte daneben aufgedruckt sind.

Light tint, dark text
Dark shade, light text
Border and text
html
1
2
3
<div class="bg-primary-100 text-primary-900 p-4 rounded">Light tint, dark text</div>
<div class="bg-success-700 text-success-50 p-4 rounded">Dark shade, light text</div>
<div class="border-2 border-error-400 text-error-600 p-4 rounded">Border and text</div>
CSS-VariableBeschreibung
--color-{color}-5080 % des hellen Farbtons, 20 % der Farbe
--color-{color}-10065 % Licht, 35 % Farbe
--color-{color}-20050 % Licht, 50 % Farbe
--color-{color}-30035 % Licht, 65 % Farbe
--color-{color}-40018 % Licht, 82 % Farbe
--color-{color}-500die Farbe selbst, genauso wie --color-{color}
--color-{color}-60018 % dunkler Farbton, 82 % Farbe
--color-{color}-70034 % dunkel, 66 % farbig
--color-{color}-80050 % dunkel, 50 % farbig
--color-{color}-90065 % dunkel, 35 % farbig
--color-{color}-95080 % dunkel, 20 % farbig

Farbdienstprogrammklassen

Alle Frutjam-Farben funktionieren mit jedem CSS-Farbdienstprogramm von Tailwind. Ersetzen {color} mit einem beliebigen Farbnamen aus der Tabelle oben, optional gefolgt von einem Schritt aus der Skala 50–950: bg-primary, bg-primary-100, text-error-900, border-success-300.

KlasseBeschreibung
bg-{color}Hintergrundfarbe
text-{color}Textfarbe
border-{color}Randfarbe
ring-{color}Ringfarbe
outline-{color}Umrissfarbe
shadow-{color}Schattenfarbe
fill-{color}SVG-Füllfarbe
stroke-{color}SVG-Strichfarbe
decoration-{color}Farbe der Textdekoration
caret-{color}Geben Sie die Caret-Farbe ein
placeholder-{color}Farbe des Platzhaltertextes
divide-{color}Farbe des Teilerrahmens
{utility}-{color}-{step}Zum Beispiel jedes der oben genannten in einem Maßstabsschritt bg-accent-200
Primary background
Secondary background
Primary border and text
html
1
2
3
<div class="bg-primary text-on-primary p-4 rounded">Primary background</div>
<div class="bg-secondary text-on-secondary p-4 rounded">Secondary background</div>
<div class="border border-primary text-primary p-4 rounded">Primary border and text</div>

Deckkraftmodifikator

Steuern Sie die Farbdeckkraft mit /{value} Modifikator, genau wie jede Tailwind-Farbe.

10% primary background
20% primary background
60% opacity text
html
1
2
3
<div class="bg-primary/10 text-primary p-4 rounded">10% primary background</div>
<div class="bg-primary/20 text-primary p-4 rounded">20% primary background</div>
<div class="text-on-base/60 p-4">60% opacity text</div>

Weich und aktiv

Statusbewusste Varianten für interaktive Elemente, die sich automatisch an helle und dunkle Themen anpassen.

CSS-VariableBeschreibung
--color-{color}-softDezent getönter Hintergrund für weiche Varianten
--color-on-{color}-softTextfarbe zur Verwendung auf weichen Hintergründen
--color-{color}-activeAbgedunkelter/aufgehellter Farbton für Schwebe- und Aktivzustände
--color-bodyBerechnete Textkörperfarbe (leicht abgeschwächt von on-base)

Theme-CSS-Variablen

Dies sind die Root-Tokens, die Sie beim Erstellen eines benutzerdefinierten Designs definieren. Alle anderen Farbtoken werden automatisch daraus berechnet.

CSS-VariableBeschreibung
--scheme-colorFarbschema: light oder dark
--border-radiusBasisrandradius für Komponenten
--color-baseHintergrundfarbe der Seite
--color-on-baseStandardtextfarbe auf Basishintergrund
--color-neutralNeutrale Oberflächenfarbe
--color-on-neutralTextfarbe auf neutralen Oberflächen
--color-primaryPrimäre Markenfarbe
--color-on-primaryTextfarbe auf primären Hintergründen
--color-secondarySekundäre Markenfarbe
--color-on-secondaryTextfarbe auf sekundären Hintergründen
--color-accentAkzentfarbe
--color-on-accentTextfarbe auf Akzenthintergründen
--color-infoInfofarbe
--color-on-infoTextfarbe auf Info-Hintergründen
--color-successErfolgsfarbe
--color-on-successTextfarbe auf Erfolgshintergründen
--color-warningWarnfarbe
--color-on-warningTextfarbe auf Warnhintergründen
--color-errorFehlerfarbe
--color-on-errorTextfarbe auf Fehlerhintergründen

Beispiel für ein benutzerdefiniertes Theme

Überschreiben Sie Root-Tokens, um ein benutzerdefiniertes Design zu erstellen. Frutjam berechnet alle Skalen und Zustände automatisch.

css
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
@import "tailwindcss";
@plugin "frutjam";

[data-theme="mytheme"] {
  --scheme-color: light;
  --border-radius: 0.5rem;

  --color-base: oklch(98% 0 0);
  --color-on-base: oklch(15% 0 0);

  --color-neutral: oklch(20% 0 0);
  --color-on-neutral: oklch(98% 0 0);

  --color-primary: oklch(55% 0.25 260);
  --color-on-primary: oklch(98% 0 0);

  --color-secondary: oklch(60% 0.20 320);
  --color-on-secondary: oklch(98% 0 0);

  --color-accent: oklch(65% 0.22 180);
  --color-on-accent: oklch(15% 0 0);

  --color-info: oklch(68% 0.17 237);
  --color-on-info: oklch(15% 0 0);

  --color-success: oklch(75% 0.20 150);
  --color-on-success: oklch(15% 0 0);

  --color-warning: oklch(82% 0.19 90);
  --color-on-warning: oklch(15% 0 0);

  --color-error: oklch(58% 0.24 27);
  --color-on-error: oklch(98% 0 0);
}

Found this useful?

Star Frutjam on GitHub. It's how other developers discover it.