xPulse
🇩🇪 DE

Guide

Installation

npm install @xpulse/theme --registry=https://npm.xpulse.one

Nutzung

Wenn @xpulse/theme installiert und von @xpulse/app gestartet wurde, wird ein einzelnes minifiziertes CSS-Bundle unter /_theme/css/xpulse.css bereitgestellt. Alle Themes (dark, light sowie App-Overrides) sind darin enthalten.

Empfohlen – Template-Methods im Layout:

{% themeAssets() %}

Das rendert automatisch den Bundle-Link, das Anti-FOUC-Script und das Browser-Runtime-Script. Für Theme-Switching zusätzlich:

{% themeSwitcher() %}

JavaScript

@xpulse/theme ist ohne verpflichtendes Runtime-JavaScript nutzbar. Die meisten Anwendungsfälle basieren nur auf:

JavaScript ist nur für optionale Verhaltensschichten sinnvoll:

Was das Package liefert

Eigenes App-Theme

Lege in deiner App eine Datei unter src/themes/ an:

/* src/themes/app.css */
.xpulse-shell {
width: min(1100px, calc(100% - 32px));
margin: 32px auto;
}

Wichtig:

Theme Switcher

{% themeAssets() %}
{% themeSwitcher() %}

theme.allow und theme.default in xpulse.json steuern den Switcher:

{
"theme": {
"default": "dark",
"allow": ["dark", "light"]
}
}
allow Ergebnis
[] oder nicht gesetzt Alle entdeckten Themes erlaubt
["dark", "light"] Kompakter Mond/Sonne-Toggle
["dark", "light", "high-contrast"] Select-Dropdown
["dark"] Kein Switcher sichtbar

Caching

Das CSS-Bundle wird beim ersten Start in var/cache/theme/xpulse.css gecacht und bei Folgestarts direkt von dort geladen.

{
"theme": {
"cache": {
"enabled": true,
"ttl": 0
}
}
}

ttl: 0 bedeutet kein Ablauf. ttl: 3600 = Cache nach 1 Stunde ungültig.

Komponenten-Klassen

Die CSS-Klassen aus @xpulse/theme folgen dem xpulse-*-Prefix und BEM:

Die zugehörigen CSS-Variablen folgen dem Prefix --xpulse-*.

de/guide.md 2026-03-26