File: thumbspage/template-autothemes.html

<STYLE>

/*---------------------------------------------------------------------
[3.0] CSS code for automatic dark theme per host device's settings.
Auto-added to generated index and viewer pages if useCannedDarkTheme 
in user_configs.py is 'host' or 'always'.  'always' uses the dark mode 
here whether set on host or not, and 'host' toggles between dark mode 
here and other color configs per the host device's mode setting.

This is a template with two uppercase replacements and a %% escape.
Its BODY:not(#body-viewer) and BODY#body-viewer mean only index and 
pages, respectively (<body> may be in a custom HEADER.html for indexes).
Its rules generally override host pages (and hence, user_configs.py), 
subject to CSS specificity and ordering.  Themes can be coded in 
JavaScript too, but CSS is auto-responsive to host-setting changes.

Edit this file as desired, but please mod this brittle code with care
if you're unfamiliar with CSS; it's complex because thumbspage was not
originally designed for this use case, and this file overrides and 
does not mesh with the original and simpler color-configs model.

For more info, see the comments at user_configs.py's useCannedDarkTheme
switch and the overview in UserGuide.html#3.0.

Nit: this may have been coded more simply as a top-level media query 
that selects between light and dark color sets, but we also need to
override colors in custom index-page headers but not custom index-page 
footers, and these may use arbitrary styling.  Feedback is welcome.
-----------------------------------------------------------------------*/


/* LIGHT MODE, PER HOST */

@media (prefers-color-scheme: light) {        /* if light mode on host, now or post change */
  
  /* tbd: if used, overrides some user_configs.py settings */

}


/* DARK MODE, PER HOST OR FORCED */

@media %(FORCEDARKMODE)s (prefers-color-scheme: dark) {

  /* if dark mode on host, now or post user change */
  /* used for light _or_ dark if forcing dark theme */ 

  BODY:not(#body-viewer) {                    /* index page only, may have HEADER/FOOTER.html */
      color: %(DARKINDEXFGCOLOR)s;            /* off-white, #e0e0e0 between #eee and #ddd */
      background-color: %(DARKINDEXBGCOLOR)s; /* off-black, #121212 per material design (black=#000) */
  }

  /* viewer-page global fg/bg colors use a template-viewpage media query */

  IMG {                                       /* all image borders, index and viewer pages */
      border-color:                           /* !important to override style= attr in HTML */
          %(DARKTHUMBSBDCOLOR)s !important;   
  }

  #theimg {                                   /* border of images in viewer pages only */
      border-color: 
          %(DARKVIEWERBDCOLOR)s !; 
  }

  BODY:not(#body-viewer) IMG {                /* else bright imgs can make text hard to read */
      filter: brightness(90%%);               /* but just for index, not viewer pages; %%=one */
  }

  #thumbslinks {                              /* index-page table (fixed) or div (dynamic) */
      border-color: %(DARKTHUMBSBDCOLOR)s !important;       /* !important: override HTML style= */
      background-color: %(DARKTHUMBSBGCOLOR)s !important;
  }

  #thumbslinks TD {                           /* image labels/captions in thumbs table (fixed) */
      color: %(DARKTHUMBSFGCOLOR)s !important;
  }
  #thumbslinks DIV:last-child {               /* image labels/captions in thumbs div (fixed) */
      color: %(DARKTHUMBSFGCOLOR)s !important;
  }

  BODY A {                                    /* index-page hyperlinks, overrides HEADER.html */
      color: %(DARKLINKSCOLOR)s;              /* not !important: may mod links in FOOTER.html */
  }                                           /* & not > specificity "BODY:not(#body-viewer)" */ 

  BODY#body-viewer A {                        /* hyperlinks on viewer pages + <a> tags in Notes */
      color: %(DARKLINKSCOLOR)s !important;   /* there is no footer to impact on viewer pages */
  }

  .NoteBox, .InfoBox  {                       /* viewer popups in dark theme: note, info, msg */
      color: %(DARKPOPUPFG)s;                 /* can be configed in user_configs.py vs here */
      background-color: %(DARKPOPUPBG)s;      /* viewer page is implied: not in indexes */
      border-color: %(DARKPOPUPBD)s;          /* border of popups viewer (!= border of image) */
  }
}

</STYLE>



[Home page] Books Code Blog Python Author Train Find ©M.Lutz