Skip to main content

WPW Dark Mode

Overview

Version 0.1.3 by wpwhite.com. Adds a Dark Reader toggle button to the GeneratePress menu bar on single posts and pages. Uses the Dark Reader library (darkreader.min.js) for dynamic dark mode transformation.

Features

  • Toggle button in the GeneratePress menu bar (sun/moon icons)
  • Persists preference in localStorage
  • Dark Reader library handles CSS inversion and color scheme adjustment
  • Smooth transition between light and dark modes

Toggle Button

Rendered via generate_menu_bar_items hook at priority 60. The button has:

AttributeValue
Classwpstrategist-dark-mode-toggle
Rolebutton
aria-label"Enable reading mode" / "Disable reading mode"
aria-pressedfalse / true

Two SVG icons toggle visibility based on state:

  • Sun icon: Visible when dark mode is off (default state)
  • Moon icon: Visible when dark mode is active

Assets

FilePurpose
assets/js/darkreader.min.jsDark Reader library (vendored)
assets/js/dark-mode.jsToggle logic, localStorage persistence
assets/css/dark-mode.cssToggle button styles

JavaScript Behavior

// Dark Reader API usage
DarkReader.enable({ brightness: 100, contrast: 90, sepia: 10 });
DarkReader.disable();

// Persistence
localStorage.getItem('wpstrategist-dark-mode');
localStorage.setItem('wpstrategist-dark-mode', 'enabled');

Conditional Loading

Assets only enqueue when:

  • Not admin
  • Is a single post or page (is_singular(array('post', 'page')))