Fixed some bugs with various settings combinations
This commit is contained in:
		
							parent
							
								
									904484e2b4
								
							
						
					
					
						commit
						ec1acb115a
					
				
					 8 changed files with 177 additions and 180 deletions
				
			
		|  | @ -5,8 +5,9 @@ var gulp = require('gulp'), | |||
| 
 | ||||
| gulp.task('less', function () { | ||||
|     return gulp.src([ | ||||
|             './static/stylesheet/dark-theme-has-class.less', | ||||
|             './static/stylesheet/dark-theme-not-overridden.less', | ||||
|             './static/stylesheet/style.less', | ||||
|             './static/stylesheet/dark-theme.less', | ||||
|         ]) | ||||
|         .pipe(less()) | ||||
|         .pipe(minify()) | ||||
|  |  | |||
							
								
								
									
										14
									
								
								static/stylesheet/dark-theme-has-class.less
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								static/stylesheet/dark-theme-has-class.less
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,14 @@ | |||
| // | ||||
| // Dark Theme CSS that gets activated when the <html> element has the | ||||
| // .dark-theme class. | ||||
| // | ||||
| // To use this, add the .dark-theme class to the <html> element, and add the | ||||
| // following <link>: | ||||
| // | ||||
| // <link rel="stylesheet" type="text/css" | ||||
| //       href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/stylesheet/dark-theme-class.min.css"> | ||||
| // | ||||
| 
 | ||||
| html.dark-theme { | ||||
|   @import (multiple) "dark-theme-styles.less"; | ||||
| } | ||||
							
								
								
									
										15
									
								
								static/stylesheet/dark-theme-not-overridden.less
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								static/stylesheet/dark-theme-not-overridden.less
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,15 @@ | |||
| // | ||||
| // Dark Theme CSS for use inside of a media query. This will apply the dark | ||||
| // style except when overriden by a .light-theme class on the <html> tag. | ||||
| // | ||||
| // To use this, add a <link> like the following (change the media query how you | ||||
| // want): | ||||
| // | ||||
| // <link rel="stylesheet" type="text/css" | ||||
| //       media="(prefers-color-scheme: dark)" | ||||
| //       href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/stylesheet/dark-theme-class.min.css"> | ||||
| // | ||||
| 
 | ||||
| html:not(.light-theme) { | ||||
|   @import (multiple) "dark-theme-styles.less"; | ||||
| } | ||||
							
								
								
									
										120
									
								
								static/stylesheet/dark-theme-styles.less
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										120
									
								
								static/stylesheet/dark-theme-styles.less
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,120 @@ | |||
| // | ||||
| // Dark Theme CSS styles. | ||||
| // | ||||
| // Don't directly include this file, instead, use the `dark-theme-class` or | ||||
| // `dark-theme-override` files. | ||||
| // | ||||
| 
 | ||||
| @import "variables.less"; | ||||
| 
 | ||||
| body { | ||||
|   background-color: @body-bg-dark-theme; | ||||
|   color: @text-color-dark-theme; | ||||
| } | ||||
| 
 | ||||
| hr { | ||||
|   color: @solid-dark-grey; | ||||
|   background-color: @solid-dark-grey; | ||||
| } | ||||
| 
 | ||||
| aside { | ||||
|   background-color: @sidebar-bg-dark-theme; | ||||
|   color: @sidebar-text-color; | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| main { | ||||
|   nav { | ||||
|     border-bottom-color: @nav-border-color-dark-theme; | ||||
|   } | ||||
| 
 | ||||
|   nav, .translations { | ||||
|     a { | ||||
|       border-color: @nav-border-color-dark-theme; | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   article { | ||||
|     kbd { | ||||
|       background-color: #080808; | ||||
|       color: @light-grey; | ||||
|     } | ||||
| 
 | ||||
|     *:not(pre) > code { | ||||
|       background-color: #080808; | ||||
|       border-color: #000; | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   footer { | ||||
|     border-top-color: @footer-border-color-dark-theme; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| div.related-posts { | ||||
|   border-color: @rel-post-border-color-dark-theme; | ||||
| } | ||||
| 
 | ||||
| // Admonition | ||||
| div.admonition.attention { | ||||
|   p, div { | ||||
|     color: @admonition-attention-color-dark-theme; | ||||
|     background-color: @admonition-attention-bg-color-dark-theme; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| div.admonition.caution { | ||||
|   p, div { | ||||
|     color: @admonition-caution-color-dark-theme; | ||||
|     background-color: @admonition-caution-bg-color-dark-theme; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| div.admonition.danger { | ||||
|   p, div { | ||||
|     color: @admonition-danger-color-dark-theme; | ||||
|     background-color: @admonition-danger-bg-color-dark-theme; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| div.admonition.error { | ||||
|   p, div { | ||||
|     color: @admonition-error-color-dark-theme; | ||||
|     background-color: @admonition-error-bg-color-dark-theme; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| div.admonition.hint { | ||||
|   p, div { | ||||
|     color: @admonition-hint-color-dark-theme; | ||||
|     background-color: @admonition-hint-bg-color-dark-theme; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| div.admonition.important { | ||||
|   p, div { | ||||
|     color: @admonition-important-color-dark-theme; | ||||
|     background-color: @admonition-important-bg-color-dark-theme; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| div.admonition.note { | ||||
|   p, div { | ||||
|     color: @admonition-note-color-dark-theme; | ||||
|     background-color: @admonition-note-bg-color-dark-theme; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| div.admonition.tip { | ||||
|   p, div { | ||||
|     color: @admonition-tip-color-dark-theme; | ||||
|     background-color: @admonition-tip-bg-color-dark-theme; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| div.admonition.warning { | ||||
|   p, div { | ||||
|     color: @admonition-warning-color-dark-theme; | ||||
|     background-color: @admonition-warning-bg-color-dark-theme; | ||||
|   } | ||||
| } | ||||
|  | @ -1,144 +0,0 @@ | |||
| // | ||||
| // Dark Theme CSS. | ||||
| // | ||||
| // If you want to always use the dark theme, then you can use a <link> like the | ||||
| // following: | ||||
| // | ||||
| // <link rel="stylesheet" type="text/css" | ||||
| //       href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/stylesheet/dark-theme-detect-preferences.min.css"> | ||||
| // | ||||
| // If you want to enable only when the prefers-color-scheme is set to dark (and | ||||
| // potentially no-preference), make sure that you add the appropriate media | ||||
| // query to the <link>. For example: | ||||
| // | ||||
| // <link media="(prefers-color-scheme: dark), (prefers-color-scheme: no-preference)" | ||||
| //       rel="stylesheet" | ||||
| //       type="text/css" | ||||
| //       href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/stylesheet/dark-theme-detect-preferences.min.css"> | ||||
| // | ||||
| // or | ||||
| // | ||||
| // <link media="(prefers-color-scheme: dark)" | ||||
| //       rel="stylesheet" | ||||
| //       type="text/css" | ||||
| //       href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/stylesheet/dark-theme-detect-preferences.min.css"> | ||||
| // | ||||
| // depending on whether you want to default to dark mode or not when the user | ||||
| // hasn't set a preference. | ||||
| // | ||||
| 
 | ||||
| @import "variables.less"; | ||||
| 
 | ||||
| html:not(.light-theme), html.dark-theme { | ||||
|   body { | ||||
|     background-color: @body-bg-dark-theme; | ||||
|     color: @text-color-dark-theme; | ||||
|   } | ||||
| 
 | ||||
|   hr { | ||||
|     color: @solid-dark-grey; | ||||
|     background-color: @solid-dark-grey; | ||||
|   } | ||||
| 
 | ||||
|   aside { | ||||
|     background-color: @sidebar-bg-dark-theme; | ||||
|     color: @sidebar-text-color; | ||||
| 
 | ||||
|   } | ||||
| 
 | ||||
|   main { | ||||
|     nav { | ||||
|       border-bottom-color: @nav-border-color-dark-theme; | ||||
|     } | ||||
| 
 | ||||
|     nav, .translations { | ||||
|       a { | ||||
|         border-color: @nav-border-color-dark-theme; | ||||
|       } | ||||
|     } | ||||
| 
 | ||||
|     article { | ||||
|       kbd { | ||||
|         background-color: #080808; | ||||
|         color: @light-grey; | ||||
|       } | ||||
| 
 | ||||
|       *:not(pre) > code { | ||||
|         background-color: #080808; | ||||
|         border-color: #000; | ||||
|       } | ||||
|     } | ||||
| 
 | ||||
|     footer { | ||||
|       border-top-color: @footer-border-color-dark-theme; | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   div.related-posts { | ||||
|     border-color: @rel-post-border-color-dark-theme; | ||||
|   } | ||||
| 
 | ||||
|   // Admonition | ||||
|   div.admonition.attention { | ||||
|     p, div { | ||||
|       color: @admonition-attention-color-dark-theme; | ||||
|       background-color: @admonition-attention-bg-color-dark-theme; | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   div.admonition.caution { | ||||
|     p, div { | ||||
|       color: @admonition-caution-color-dark-theme; | ||||
|       background-color: @admonition-caution-bg-color-dark-theme; | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   div.admonition.danger { | ||||
|     p, div { | ||||
|       color: @admonition-danger-color-dark-theme; | ||||
|       background-color: @admonition-danger-bg-color-dark-theme; | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   div.admonition.error { | ||||
|     p, div { | ||||
|       color: @admonition-error-color-dark-theme; | ||||
|       background-color: @admonition-error-bg-color-dark-theme; | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   div.admonition.hint { | ||||
|     p, div { | ||||
|       color: @admonition-hint-color-dark-theme; | ||||
|       background-color: @admonition-hint-bg-color-dark-theme; | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   div.admonition.important { | ||||
|     p, div { | ||||
|       color: @admonition-important-color-dark-theme; | ||||
|       background-color: @admonition-important-bg-color-dark-theme; | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   div.admonition.note { | ||||
|     p, div { | ||||
|       color: @admonition-note-color-dark-theme; | ||||
|       background-color: @admonition-note-bg-color-dark-theme; | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   div.admonition.tip { | ||||
|     p, div { | ||||
|       color: @admonition-tip-color-dark-theme; | ||||
|       background-color: @admonition-tip-bg-color-dark-theme; | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   div.admonition.warning { | ||||
|     p, div { | ||||
|       color: @admonition-warning-color-dark-theme; | ||||
|       background-color: @admonition-warning-bg-color-dark-theme; | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | @ -694,17 +694,3 @@ div.admonition.warning { | |||
|   color: @admonition-warning-color; | ||||
|   background-color: @admonition-warning-bg-color; | ||||
| } | ||||
| 
 | ||||
| // | ||||
| // Dark Theme | ||||
| // | ||||
| 
 | ||||
| @media (prefers-color-scheme: dark) { | ||||
|   html:not(.light-theme) { | ||||
|     @import (multiple) "dark-theme.less"; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| html.dark-theme { | ||||
|   @import (multiple) "dark-theme.less"; | ||||
| } | ||||
|  |  | |||
|  | @ -32,27 +32,28 @@ | |||
|     <link rel="stylesheet" type="text/css" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/stylesheet/style.min.css"> | ||||
|   {% endif %} | ||||
| 
 | ||||
|   <!-- | ||||
|     DARK THEME STYLES | ||||
|     The dark theme will be enabled if any of the following are true: | ||||
|     * the <html> tag has the .dark-theme class. | ||||
|     * THEME_COLOR_AUTO_DETECT_BROWSER_PREFERENCE is true and the appropriate color scheme preference | ||||
|       is set in the browser and the <html> tag does not have the .light-theme class. | ||||
|   --> | ||||
|   <link rel="stylesheet" type="text/css" | ||||
|         {% if THEME_COLOR_AUTO_DETECT_BROWSER_PREFERENCE %} | ||||
|           {% if THEME_COLOR|default("light") == "dark" %} | ||||
|             media="(prefers-color-scheme: dark), (prefers-color-scheme: no-preference)" | ||||
|           {% else %} | ||||
|             media="(prefers-color-scheme: dark)" | ||||
|           {% endif %} | ||||
|         {% endif %} | ||||
|         href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/stylesheet/dark-theme.min.css"> | ||||
|   <!-- DARK THEME STYLES --> | ||||
|   {% if not THEME_COLOR_AUTO_DETECT_BROWSER_PREFERENCE and not THEME_COLOR_ENABLE_USER_OVERRIDE and THEME_COLOR == "dark" %} | ||||
|     <link rel="stylesheet" type="text/css" | ||||
|         href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/stylesheet/dark-theme-not-overridden.min.css"> | ||||
|   {% endif %} | ||||
|   {% if THEME_COLOR_AUTO_DETECT_BROWSER_PREFERENCE %} | ||||
|     <!-- Enable dark mode when media query matches and .light-theme class does not exist on <html> tag --> | ||||
|     <link rel="stylesheet" type="text/css" | ||||
|       {% if THEME_COLOR|default("light") == "dark" %} | ||||
|         media="(prefers-color-scheme: dark), (prefers-color-scheme: no-preference)" | ||||
|       {% else %} | ||||
|         media="(prefers-color-scheme: dark)" | ||||
|       {% endif %} | ||||
|     href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/stylesheet/dark-theme-not-overridden.min.css"> | ||||
|   {% endif %} | ||||
|   {% if THEME_COLOR_ENABLE_USER_OVERRIDE %} | ||||
|     <!-- Enable dark mode when .dark-theme class exists on <html> tag --> | ||||
|     <link rel="stylesheet" type="text/css" | ||||
|         href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/stylesheet/dark-theme-has-class.min.css"> | ||||
|   {% endif %} | ||||
| 
 | ||||
|   <!-- | ||||
|     PYGMENTS STYLES | ||||
| 
 | ||||
|   --> | ||||
|   <!-- PYGMENTS STYLES --> | ||||
|   {% if THEME_COLOR_AUTO_DETECT_BROWSER_PREFERENCE or THEME_COLOR == "dark" %} | ||||
|     <link rel="stylesheet" type="text/css" | ||||
|           {% if THEME_COLOR_AUTO_DETECT_BROWSER_PREFERENCE %} | ||||
|  |  | |||
|  | @ -23,7 +23,11 @@ | |||
| {% if THEME_COLOR_ENABLE_USER_OVERRIDE %} | ||||
|   <script> | ||||
|     {% if THEME_COLOR_AUTO_DETECT_BROWSER_PREFERENCE %} | ||||
|       const darkSchemeWatch = window.matchMedia('(prefers-color-scheme: dark)'); | ||||
|       {% if THEME_COLOR|default("light") == "dark" %} | ||||
|         const darkSchemeWatch = window.matchMedia('(prefers-color-scheme: dark), (prefers-color-scheme: no-preference)'); | ||||
|       {% else %} | ||||
|         const darkSchemeWatch = window.matchMedia('(prefers-color-scheme: dark)'); | ||||
|       {% endif %} | ||||
|     {% endif %} | ||||
| 
 | ||||
|     function detectThemeAndSwitchStyle() { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue