Theming
prokodo UI basiert auf einem CSS-Kustomeigenschaften-System (Design-Tokens). Theming bedeutet das Überschreiben von --pk-*-Variablen — kein JavaScript erforderlich, kein Build-Schritt, kein Theme-Provider.
Wie Tokens funktionieren
Alle Designentscheidungen — Farbe, Abstände, Typografie, Rahmen-Radien, Schatten — sind als --pk-* CSS-Variablen definiert. Komponenten verwenden diese Variablen direkt aus ihren CSS Modules.
Tokens werden in zwei Dateien bereitgestellt:
| Datei | Inhalt | Größe |
|---|---|---|
@prokodo/ui/theme-tokens.css | Nur Design-Tokens (--pk-* Variablen) | Klein |
@prokodo/ui/theme.css | Tokens + alle Komponenten-Styles | ~288 KB |
Für beste Performance nutze theme-tokens.css und lade Komponenten-CSS pro Komponente (siehe Installation).
Überschreibe beliebige Tokens in deinem globalen Stylesheet nach dem Token-Import:
@import "@prokodo/ui/theme-tokens.css";
:root {
/* Markenfarben */
--pk-color-primary: #7c3aed;
--pk-color-primary-100: #ede9fe;
--pk-color-primary-500: #7c3aed;
--pk-color-primary-900: #2e1065;
/* Typografie */
--pk-font-family-base: "Inter", sans-serif;
--pk-font-size-base: 1rem;
/* Rahmen-Radien */
--pk-radius-sm: 4px;
--pk-radius-md: 8px;
--pk-radius-lg: 16px;
}
Dark Mode
prokodo UI unterstützt Dark Mode über das data-theme="dark"-Attribut am <html>-Element:
:root[data-theme="dark"] {
--pk-color-background: #0f0f0f;
--pk-color-surface: #1a1a1a;
--pk-color-text: #f5f5f5;
}
Aktiviere den Dark Mode mit document.documentElement.dataset.theme = 'dark' in deinem Client-Code.
Token-Referenz
Die vollständige Liste aller --pk-*-Kustomeigenschaften findest du unter Design-Tokens.
Schrift laden
prokodo UI bündelt keine Schriftarten. Importiere deine Schrift im Root-Layout und setze --pk-font-family-base:
import { Inter } from "next/font/google"
import "@prokodo/ui/theme-tokens.css"
import "./globals.css"
const inter = Inter({ subsets: ["latin"], variable: "--font-inter" })
export default function RootLayout({ children }) {
return (
<html lang="de" className={inter.variable}>
<body>{children}</body>
</html>
)
}
:root {
--pk-font-family-base: var(--font-inter), sans-serif;
}