Zum Inhalt springen

Code

Die Syntaxhervorhebung übernimmt highlight.js. Die Bibliothek liegt im Theme (kern-ux/vendor/highlightjs), es wird kein CDN kontaktiert. Farbschema und Zusatzsprachen sind über hljs_style, hljs_style_dark und hljs_languages einstellbar; beim Umschalten auf dunkel wechselt auch das Farbschema.

Fläche, Rahmen und Abstand kommen weiterhin aus den KERN-Token – so passen Codeblöcke zum übrigen Design.

Inline

Ein Absatz mit mkdocs build --strict mittendrin.

Mit Sprache

from pathlib import Path


def kit_version(theme_dir: Path) -> str:
    """Liest die Version des gevendorten KERN-Kits."""
    version = theme_dir / "kern-ux" / "vendor" / "kern" / "VERSION"
    return version.read_text(encoding="utf-8").strip()
theme:
  name: kern-ux
  hljs_style: github
  hljs_style_dark: github-dark
  hljs_languages:
    - php
<?php

declare(strict_types=1);

/**
 * Liest die Version des gevendorten KERN-Kits.
 */
function kern_kit_version(string $themeDir): string
{
    $file = $themeDir . '/kern-ux/vendor/kern/VERSION';

    if (!is_readable($file)) {
        return 'unbekannt';
    }

    return trim((string) file_get_contents($file));
}

$version = kern_kit_version(__DIR__);
printf("KERN-Kit %s%s", $version, PHP_EOL);
npm run vendor:update && mkdocs build --strict -f demo/mkdocs.yml

Ohne Sprachangabe

Kein Sprachhinweis: highlight.js rät die Sprache.
Zwei Zeilen, damit die Zeilenhöhe sichtbar wird.

Sehr lange Zeile (scrollt und ist mit der Tastatur erreichbar)

Diese Zeile ist absichtlich sehr lang, damit der Codeblock horizontal scrollen muss und das Theme ihn als Region mit tabindex="0" auszeichnet, wie es WCAG 2.1.1 für scrollbare Bereiche verlangt.

Längerer Block

(function () {
  'use strict';

  var toggles = document.querySelectorAll('[data-kux-theme-toggle]');

  function effectiveTheme() {
    var attr = document.documentElement.getAttribute('data-kern-theme');
    if (attr === 'dark' || attr === 'light') {
      return attr;
    }
    return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
  }

  toggles.forEach(function (btn) {
    btn.addEventListener('click', function () {
      var next = effectiveTheme() === 'dark' ? 'light' : 'dark';
      document.documentElement.setAttribute('data-kern-theme', next);
      localStorage.setItem('kern-ux-theme', next);
    });
  });
})();

Serverseitige Hervorhebung

Wer codehilite oder pymdownx.highlight einsetzt, färbt bereits beim Bauen. Dann highlightjs: false setzen und ein Pygments-Stylesheet über extra_css einbinden – das Theme rührt vorgefärbte Blöcke nicht an.

Suche

Der Suchindex wird geladen …