Paketformat

Aufbau einer Theme-.zip: theme.json, Stile, Templates, Header/Footer, Assets und Screenshots.

mein-theme.zip
theme.json                    Pflicht
config/settings_data.json     Stile (Presets)
templates/index.json          Startseite
templates/product.json        Produktseite (+ product.<name>.json als Alternativen)
templates/collection.json     Kollektionsseite (+ collection.<name>.json)
templates/page.json           Inhaltsseiten (+ page.<name>.json)
sections/header-group.json    Header
sections/footer-group.json    Footer
assets/theme.css              optional
assets/*.webp|png|jpg|avif    Bilder
screenshots/<stil>[-n].webp   Vorschaubilder je Stil

JSON darf //-Kommentare und abschließende Kommas enthalten. Ein einzelner Ordner auf oberster Ebene im Archiv ist erlaubt. Limits: Zip 20 MB, 80 Dateien, 10 MB pro Datei.

#theme.json

theme.json
jsonc
{
  "format": 1,
  "name": "Atelier",
  "handle": "atelier",        // optional, sonst aus dem Namen
  "version": "1.0.0",         // Pflicht, semver – muss bei Updates steigen
  "author": "…",
  "description": "…",
  "preview": "assets/preview.webp"
}

#config/settings_data.json

config/settings_data.json
jsonc
{
  "current": "Leinen",
  "presets": {
    "Leinen": {
      "colors": { "background": "#f7f2ea", "foreground": "#1f1c18", "primary": "#2f4a3a",
                  "primaryForeground": "#f7f2ea", "accent": "#e9dfcd", "muted": "#efe7da" },
      "schemes": {                // optional; fehlende Werte werden aus "colors" abgeleitet
        "default": { "background": "…", "foreground": "…", "primary": "…", "primaryForeground": "…", "muted": "…", "border": "…" },
        "muted": {}, "primary": {}, "accent": {}, "contrast": {}
      },
      "style": {
        "pageWidth": "narrow | normal | wide | full",
        "sectionSpacing": "compact | normal | airy",
        "buttonShape": "theme | square | rounded | pill",
        "buttonCase": "normal | uppercase",
        "headingWeight": "regular | medium | semibold | bold",
        "headingCase": "normal | uppercase",
        "headingTracking": "tight | normal | wide",
        "cardStyle": "border | shadow | plain",
        "imageRatio": "square | portrait | landscape"
      },
      "radius": "none | sm | md | lg",
      "fontHeading": "inter",
      "fontBody": "inter"
    }
  }
}

Schriften: system, inter, dm-sans, manrope, space-grotesk, archivo, fredoka, lora, playfair, cormorant, fraunces – selbst gehostet und nur geladen, wenn sie verwendet werden.

#Templates

Siehe Templates und Sections.

#Screenshots

screenshots/<stil-slug>.webp, -2.webp, -3.webp – je Stil z. B. Startseite, Produktseite, Kollektionsseite, 1200 × 750 px. Der Stil-Slug ist der Name des Presets in Kleinbuchstaben mit Bindestrichen (Neon Tokyo → neon-tokyo). Die Vorschau im Dashboard zeigt beim Wechsel des Stils dessen Bilder.

#Packen

bash
python themes/packages/zip.py atelier
# → themes/packages/dist/atelier-1.0.0.zip

Zuletzt aktualisiert am 21. Oktober 2026