diff --git a/book-example/src/format/config.md b/book-example/src/format/config.md index 81db7a0175..4dfae4eef0 100644 --- a/book-example/src/format/config.md +++ b/book-example/src/format/config.md @@ -150,6 +150,10 @@ The following configuration options are available: files with the ones found in the specified folder. - **default-theme:** The theme color scheme to select by default in the 'Change Theme' dropdown. Defaults to `light`. +- **preferred-dark-theme:** The default dark theme. This theme will be used if + the browser requests the dark version of the site via the + ['prefers-color-scheme'](https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-color-scheme) + CSS media query. Defaults to the same theme as `default-theme`. - **curly-quotes:** Convert straight quotes to curly quotes, except for those that occur in code blocks and code spans. Defaults to `false`. - **mathjax-support:** Adds support for [MathJax](mathjax.md). Defaults to @@ -217,6 +221,7 @@ description = "The example book covers examples." [output.html] theme = "my-theme" default-theme = "light" +preferred-dark-theme = "navy" curly-quotes = true mathjax-support = false google-analytics = "123456" diff --git a/src/config.rs b/src/config.rs index 9713bace77..b64e76c1aa 100644 --- a/src/config.rs +++ b/src/config.rs @@ -427,6 +427,9 @@ pub struct HtmlConfig { pub theme: Option, /// The default theme to use, defaults to 'light' pub default_theme: Option, + /// The theme to use if the browser requests the dark version of the site. + /// Defaults to the same as 'default_theme' + pub preferred_dark_theme: Option, /// Use "smart quotes" instead of the usual `"` character. pub curly_quotes: bool, /// Should mathjax be enabled? diff --git a/src/renderer/html_handlebars/hbs_renderer.rs b/src/renderer/html_handlebars/hbs_renderer.rs index b2b747a801..2007b7ed04 100644 --- a/src/renderer/html_handlebars/hbs_renderer.rs +++ b/src/renderer/html_handlebars/hbs_renderer.rs @@ -406,6 +406,15 @@ fn make_data( }; data.insert("default_theme".to_owned(), json!(default_theme)); + let preferred_dark_theme = match html_config.preferred_dark_theme { + Some(ref theme) => theme, + None => default_theme, + }; + data.insert( + "preferred_dark_theme".to_owned(), + json!(preferred_dark_theme), + ); + // Add google analytics tag if let Some(ref ga) = html_config.google_analytics { data.insert("google_analytics".to_owned(), json!(ga)); diff --git a/src/theme/index.hbs b/src/theme/index.hbs index 6240c11a9a..abb5c837ae 100644 --- a/src/theme/index.hbs +++ b/src/theme/index.hbs @@ -43,7 +43,7 @@