diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2019-12-10 06:48:11 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-12-10 06:48:11 +0100 |
commit | c282cee4db7eb02b44a96989c430aa33e5517eab (patch) | |
tree | ea907c7de490659a9347ad7844a2dfee7f3f1c21 /config | |
parent | 5929c3da218fdecf70e11ff970e7b7cda50c9144 (diff) | |
download | Nim-c282cee4db7eb02b44a96989c430aa33e5517eab.tar.gz |
feature dracula themed doc (#12816)
* Implement gorgeous Dracula themed Nim documentation * Add color for escape sequences * fixes the test cases * the big CSS cleanup
Diffstat (limited to 'config')
-rw-r--r-- | config/nimdoc.cfg | 821 |
1 files changed, 54 insertions, 767 deletions
diff --git a/config/nimdoc.cfg b/config/nimdoc.cfg index 8cee21aaf..e3282ee7f 100644 --- a/config/nimdoc.cfg +++ b/config/nimdoc.cfg @@ -84,6 +84,13 @@ $content doc.body_toc = """ <div class="row"> <div class="three columns"> + <div class="theme-switch-wrapper"> + <label class="theme-switch" for="checkbox"> + <input type="checkbox" id="checkbox" /> + <div class="slider round"></div> + </label> + <em>Dark Mode</em> + </div> <div id="global-links"> <ul class="simple-boot"> <li> @@ -120,6 +127,13 @@ doc.body_toc = """ doc.body_toc_group = """ <div class="row"> <div class="three columns"> + <div class="theme-switch-wrapper"> + <label class="theme-switch" for="checkbox"> + <input type="checkbox" id="checkbox" /> + <div class="slider round"></div> + </label> + <em>Dark Mode</em> + </div> <div id="global-links"> <ul class="simple-boot"> <li> @@ -160,6 +174,13 @@ doc.body_toc_group = """ doc.body_toc_group = """ <div class="row"> <div class="three columns"> + <div class="theme-switch-wrapper"> + <label class="theme-switch" for="checkbox"> + <input type="checkbox" id="checkbox" /> + <div class="slider round"></div> + </label> + <em>Dark Mode</em> + </div> <div id="global-links"> <ul class="simple"> </ul> @@ -216,772 +237,7 @@ doc.file = """<?xml version="1.0" encoding="utf-8" ?> <!-- CSS --> <title>$title</title> -<style type="text/css" > -/* -Stylesheet for use with Docutils/rst2html. - -See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to -customize this style sheet. - -Modified from Chad Skeeters' rst2html-style -https://bitbucket.org/cskeeters/rst2html-style/ - -Modified by Boyd Greenfield and narimiran -*/ - -html { - font-size: 100%; - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; } - -body { - font-family: "Lato", "Helvetica Neue", "HelveticaNeue", Helvetica, Arial, sans-serif; - font-weight: 400; - font-size: 1.125em; - line-height: 1.5; - color: #222; - background-color: #FCFCFC; } - -/* Skeleton grid */ -.container { - position: relative; - width: 100%; - max-width: 1050px; - margin: 0 auto; - padding: 0; - box-sizing: border-box; } - -.column, -.columns { - width: 100%; - float: left; - box-sizing: border-box; - margin-left: 1%; -} - -.column:first-child, -.columns:first-child { - margin-left: 0; } - -.three.columns { - width: 19%; } - -.nine.columns { - width: 80.0%; } - -.twelve.columns { - width: 100%; - margin-left: 0; } - -@media screen and (max-width: 860px) { - .three.columns { - display: none; - } - .nine.columns { - width: 98.0%; - } - body { - font-size: 1em; - line-height: 1.35; - } -} - -cite { - font-style: italic !important; } - - -/* Nim search input */ -div#searchInputDiv { - margin-bottom: 1em; -} -input#searchInput { - width: 80%; -} - -/* - * Some custom formatting for input forms. - * This also fixes input form colors on Firefox with a dark system theme on Linux. - */ -input { - -moz-appearance: none; - color: #333; - background-color: #f8f8f8; - border: 1px solid #aaa; - font-family: "Lato", "Helvetica Neue", "HelveticaNeue", Helvetica, Arial, sans-serif; - font-size: 0.9em; - padding: 6px; -} -input:focus { - border: 1px solid #1fa0eb; - box-shadow: 0 0 2px #1fa0eb; -} - -/* Docgen styles */ -/* Links */ -a { - color: #07b; - text-decoration: none; -} - -a span.Identifier { - text-decoration: underline; - text-decoration-color: #aab; -} - -a.reference-toplevel { - font-weight: bold; -} - -a.toc-backref { - text-decoration: none; - color: #222; } - -a.link-seesrc { - color: #607c9f; - font-size: 0.9em; - font-style: italic; } - -a:hover, -a:focus { - color: #607c9f; - text-decoration: underline; } - -a:hover span.Identifier { - color: #607c9f; -} - - -sub, -sup { - position: relative; - font-size: 75%; - line-height: 0; - vertical-align: baseline; } - -sup { - top: -0.5em; } - -sub { - bottom: -0.25em; } - -img { - width: auto; - height: auto; - max-width: 100%; - vertical-align: middle; - border: 0; - -ms-interpolation-mode: bicubic; } - -@media print { - * { - color: black !important; - text-shadow: none !important; - background: transparent !important; - box-shadow: none !important; } - - a, - a:visited { - text-decoration: underline; } - - a[href]:after { - content: " (" attr(href) ")"; } - - abbr[title]:after { - content: " (" attr(title) ")"; } - - .ir a:after, - a[href^="javascript:"]:after, - a[href^="#"]:after { - content: ""; } - - pre, - blockquote { - border: 1px solid #999; - page-break-inside: avoid; } - - thead { - display: table-header-group; } - - tr, - img { - page-break-inside: avoid; } - - img { - max-width: 100% !important; } - - @page { - margin: 0.5cm; } - - h1 { - page-break-before: always; } - - h1.title { - page-break-before: avoid; } - - p, - h2, - h3 { - orphans: 3; - widows: 3; } - - h2, - h3 { - page-break-after: avoid; } -} - - -p { - margin-top: 0.5em; - margin-bottom: 0.5em; -} - -small { - font-size: 85%; } - -strong { - font-weight: 600; - font-size: 0.95em; - color: #3c3c3c; -} - -em { - font-style: italic; } - -h1 { - font-size: 1.8em; - font-weight: 400; - padding-bottom: .25em; - border-bottom: 1px solid #aaa; - margin-top: 2.5em; - margin-bottom: 1em; - line-height: 1.2em; } - -h1.title { - padding-bottom: 1em; - border-bottom: 0px; - font-size: 2.5em; - text-align: center; - font-weight: 900; - margin-top: 0.75em; - margin-bottom: 0em; -} - -h2 { - font-size: 1.3em; - margin-top: 2em; } - -h2.subtitle { - text-align: center; } - -h3 { - font-size: 1.125em; - font-style: italic; - margin-top: 1.5em; } - -h4 { - font-size: 1.125em; - margin-top: 1em; } - -h5 { - font-size: 1.125em; - margin-top: 0.75em; } - -h6 { - font-size: 1.1em; } - - -ul, -ol { - padding: 0; - margin-top: 0.5em; - margin-left: 0.75em; } - -ul ul, -ul ol, -ol ol, -ol ul { - margin-bottom: 0; - margin-left: 1.25em; } - -li { - list-style-type: circle; -} - -ul.simple-boot li { - list-style-type: none; - margin-left: 0em; - margin-bottom: 0.5em; -} - -ol.simple > li, ul.simple > li { - margin-bottom: 0.25em; - margin-left: 0.4em } - -ul.simple.simple-toc > li { - margin-top: 1em; -} - -ul.simple-toc { - list-style: none; - font-size: 0.9em; - margin-left: -0.3em; - margin-top: 1em; } - -ul.simple-toc > li { - list-style-type: none; -} - -ul.simple-toc-section { - list-style-type: circle; - margin-left: 1em; - color: #6c9aae; } - - -ol.arabic { - list-style: decimal; } - -ol.loweralpha { - list-style: lower-alpha; } - -ol.upperalpha { - list-style: upper-alpha; } - -ol.lowerroman { - list-style: lower-roman; } - -ol.upperroman { - list-style: upper-roman; } - -ul.auto-toc { - list-style-type: none; } - - -dl { - margin-bottom: 1.5em; } - -dt { - margin-bottom: -0.5em; - margin-left: 0.0em; } - -dd { - margin-left: 2.0em; - margin-bottom: 3.0em; - margin-top: 0.5em; } - - -hr { - margin: 2em 0; - border: 0; - border-top: 1px solid #aaa; } - -blockquote { - font-size: 0.9em; - font-style: italic; - padding-left: 0.5em; - margin-left: 0; - border-left: 5px solid #bbc; -} - -.pre { - font-family: "Source Code Pro", Monaco, Menlo, Consolas, "Courier New", monospace; - font-weight: 500; - font-size: 0.85em; - background-color: #f0f3ff; - padding-left: 3px; - padding-right: 3px; - border-radius: 4px; -} - -pre { - font-family: "Source Code Pro", Monaco, Menlo, Consolas, "Courier New", monospace; - color: #222; - font-weight: 500; - display: inline-block; - box-sizing: border-box; - min-width: 100%; - padding: 0.5em; - margin-top: 0.5em; - margin-bottom: 0.5em; - font-size: 0.85em; - white-space: pre !important; - overflow-y: hidden; - overflow-x: visible; - background-color: ghostwhite; - border: 1px solid #dde; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; } - -.pre-scrollable { - max-height: 340px; - overflow-y: scroll; } - - -/* Nim line-numbered tables */ -.line-nums-table { - width: 100%; - table-layout: fixed; } - -table.line-nums-table { - border-radius: 4px; - border: 1px solid #cccccc; - background-color: ghostwhite; - border-collapse: separate; - margin-top: 15px; - margin-bottom: 25px; } - -.line-nums-table tbody { - border: none; } - -.line-nums-table td pre { - border: none; - background-color: transparent; } - -.line-nums-table td.blob-line-nums { - width: 28px; } - -.line-nums-table td.blob-line-nums pre { - color: #b0b0b0; - -webkit-filter: opacity(75%); - text-align: right; - border-color: transparent; - background-color: transparent; - padding-left: 0px; - margin-left: 0px; - padding-right: 0px; - margin-right: 0px; } - - -table { - max-width: 100%; - background-color: transparent; - margin-top: 0.5em; - margin-bottom: 1.5em; - border-collapse: collapse; - border-color: #ccc; - border-spacing: 0; - font-size: 0.9em; -} - -table th, table td { - padding: 0px 0.5em 0px; -} - -table th { - background-color: #e8e8e8; - font-weight: bold; } - -table th.docinfo-name { - background-color: transparent; -} - -table tr:hover { - background-color: ghostwhite; } - - -/* rst2html default used to remove borders from tables and images */ -.borderless, table.borderless td, table.borderless th { - border: 0; } - -table.borderless td, table.borderless th { - /* Override padding for "table.docutils td" with "! important". - The right padding separates the table cells. */ - padding: 0 0.5em 0 0 !important; } - -.first { - /* Override more specific margin styles with "! important". */ - margin-top: 0 !important; } - -.last, .with-subtitle { - margin-bottom: 0 !important; } - -.hidden { - display: none; } - -blockquote.epigraph { - margin: 2em 5em; } - -dl.docutils dd { - margin-bottom: 0.5em; } - -object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] { - overflow: hidden; } - - -div.figure { - margin-left: 2em; - margin-right: 2em; } - -div.footer, div.header { - clear: both; - text-align: center; - color: #666; - font-size: smaller; } - -div.footer { - padding-top: 5em; -} - -div.line-block { - display: block; - margin-top: 1em; - margin-bottom: 1em; } - -div.line-block div.line-block { - margin-top: 0; - margin-bottom: 0; - margin-left: 1.5em; } - -div.topic { - margin: 2em; } - -div.search_results { - background-color: antiquewhite; - margin: 3em; - padding: 1em; - border: 1px solid #4d4d4d; -} - -div#global-links ul { - margin-left: 0; - list-style-type: none; -} - -div#global-links > simple-boot { - margin-left: 3em; -} - -hr.docutils { - width: 75%; } - -img.align-left, .figure.align-left, object.align-left { - clear: left; - float: left; - margin-right: 1em; } - -img.align-right, .figure.align-right, object.align-right { - clear: right; - float: right; - margin-left: 1em; } - -img.align-center, .figure.align-center, object.align-center { - display: block; - margin-left: auto; - margin-right: auto; } - -.align-left { - text-align: left; } - -.align-center { - clear: both; - text-align: center; } - -.align-right { - text-align: right; } - -/* reset inner alignment in figures */ -div.align-right { - text-align: inherit; } - -p.attribution { - text-align: right; - margin-left: 50%; } - -p.caption { - font-style: italic; } - -p.credits { - font-style: italic; - font-size: smaller; } - -p.label { - white-space: nowrap; } - -p.rubric { - font-weight: bold; - font-size: larger; - color: maroon; - text-align: center; } - -p.topic-title { - font-weight: bold; } - -pre.address { - margin-bottom: 0; - margin-top: 0; - font: inherit; } - -pre.literal-block, pre.doctest-block, pre.math, pre.code { - margin-left: 2em; - margin-right: 2em; } - -pre.code .ln { - color: grey; } - -/* line numbers */ -pre.code, code { - background-color: #eeeeee; } - -pre.code .comment, code .comment { - color: #5c6576; } - -pre.code .keyword, code .keyword { - color: #3B0D06; - font-weight: bold; } - -pre.code .literal.string, code .literal.string { - color: #0c5404; } - -pre.code .name.builtin, code .name.builtin { - color: #352b84; } - -pre.code .deleted, code .deleted { - background-color: #DEB0A1; } - -pre.code .inserted, code .inserted { - background-color: #A3D289; } - -span.classifier { - font-style: oblique; } - -span.classifier-delimiter { - font-weight: bold; } - -span.option { - white-space: nowrap; } - -span.problematic { - color: #b30000; } - -span.section-subtitle { - /* font-size relative to parent (h1..h6 element) */ - font-size: 80%; } - -span.DecNumber { - color: #252dbe; } - -span.BinNumber { - color: #252dbe; } - -span.HexNumber { - color: #252dbe; } - -span.OctNumber { - color: #252dbe; } - -span.FloatNumber { - color: #252dbe; } - -span.Identifier { - color: #222; } - -span.Keyword { - font-weight: 600; - color: #5e8f60; } - -span.StringLit { - color: #a4255b; } - -span.LongStringLit { - color: #a4255b; } - -span.CharLit { - color: #a4255b; } - -span.EscapeSequence { - color: black; } - -span.Operator { - color: black; } - -span.Punctuation { - color: black; } - -span.Comment, span.LongComment { - font-style: italic; - font-weight: 400; - color: #484a86; } - -span.RegularExpression { - color: darkviolet; } - -span.TagStart { - color: darkviolet; } - -span.TagEnd { - color: darkviolet; } - -span.Key { - color: #252dbe; } - -span.Value { - color: #252dbe; } - -span.RawData { - color: #a4255b; } - -span.Assembler { - color: #252dbe; } - -span.Preprocessor { - color: #252dbe; } - -span.Directive { - color: #252dbe; } - -span.Command, span.Rule, span.Hyperlink, span.Label, span.Reference, -span.Other { - color: black; } - -/* Pop type, const, proc, and iterator defs in nim def blocks */ -dt pre > span.Identifier, dt pre > span.Operator { - color: #155da4; - font-weight: 700; } - -dt pre > span.Keyword ~ span.Identifier, dt pre > span.Identifier ~ span.Identifier, -dt pre > span.Operator ~ span.Identifier, dt pre > span.Other ~ span.Identifier { - color: inherit; - font-weight: inherit; } - -/* Nim sprite for the footer (taken from main page favicon) */ -.nim-sprite { - display: inline-block; - height: 16px; - width: 16px; - background-position: 0 0; - background-size: 16px 16px; - -webkit-filter: opacity(50%); - background-repeat: no-repeat; - background-image: url("data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="); - margin-bottom: -5px; } - -span.pragmadots { - /* Position: relative frees us up to make the dots - look really nice without fucking up the layout and - causing bulging in the parent container */ - position: relative; - /* 1px down looks slightly nicer */ - top: 1px; - padding: 2px; - background-color: #e8e8e8; - border-radius: 4px; - margin: 0 2px; - cursor: pointer; - font-size: 0.8em; -} - -span.pragmadots:hover { - background-color: #DBDBDB; -} -span.pragmawrap { - display: none; -} - -span.attachedType { - display: none; - visibility: hidden; -} -</style> +<link rel="stylesheet" type="text/css" href="nimdoc.css"> <script type="text/javascript" src="dochack.js"></script> @@ -996,6 +252,37 @@ function main() { event.target.parentNode.nextElementSibling.style.display = "inline"; } } + + const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]'); + function switchTheme(e) { + if (e.target.checked) { + document.documentElement.setAttribute('data-theme', 'dark'); + localStorage.setItem('theme', 'dark'); + } else { + document.documentElement.setAttribute('data-theme', 'light'); + localStorage.setItem('theme', 'light'); + } + } + + toggleSwitch.addEventListener('change', switchTheme, false); + + + if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) { + document.documentElement.setAttribute('data-theme', "dark"); + toggleSwitch.checked = true; + } else if (window.matchMedia && window.matchMedia('(prefers-color-scheme: light)').matches) { + document.documentElement.setAttribute('data-theme', "light"); + toggleSwitch.checked = false; + } else { + const currentTheme = localStorage.getItem('theme') ? localStorage.getItem('theme') : null; + if (currentTheme) { + document.documentElement.setAttribute('data-theme', currentTheme); + + if (currentTheme === 'dark') { + toggleSwitch.checked = true; + } + } + } } </script> @@ -1009,7 +296,7 @@ function main() { <div class="twelve-columns footer"> <span class="nim-sprite"></span> <br/> - <small>Made with Nim. Generated: $date $time UTC</small> + <small style="color: var(--hint);">Made with Nim. Generated: $date $time UTC</small> </div> </div> </div> |