diff options
| author | 2025-12-04 20:06:21 +0100 | |
|---|---|---|
| committer | 2025-12-04 20:06:21 +0100 | |
| commit | 5e9c3617cac1e3eac246e2ae7df6f4b71c33d37c (patch) | |
| tree | 435618816d2ccc5d29b21fa0c089f814972a2ce7 /docs/assets | |
| parent | 78e40c6fe3afe7f815ef9d32646610e2d5436ba3 (diff) | |
Improve layout of documentation page and add search feature (#8247)
* Improve layout of documentation page and add search feature
Closes https://github.com/FreshRSS/FreshRSS/issues/7915, https://github.com/FreshRSS/FreshRSS/issues/5325
Also: anchor headings and fix building site locally
* Further improvements
* Set color of hyperlinks
* Consistent styling of close aside button across devices
* Mobile layout 600px -> 1200px
* Add suffix to docs `<title>`
* Note: titles of pages probably need to be improved, since currently they are just derived from the names of the first heading on every page
* Add favicon
* Improve font
* Try to fix favicon not loading correctly on GH pages
* Use local font
* Attempt to fix GH pages
* Final improvements
* Copy to clipboard button
* Support for nojs search
* Dark mode
* Load search.json (200KB json) only on search input focus
* Keep scroll state of sidebar across navigations
* Clickable images and CSP
CSP so we avoid hotlinking resources and clickable images are useful for zooming on mobile for example
* Fix typos
* Disable Dark Reader extension if dark mode CSS is loaded
* Support internationalisation (via language dropdown)
* Add Gemfile.lock
* Make CI build work with the custom plugin
* Make menus closable with Esc
* Fix typos CI
* Suggestions
* Use `ruby/setup-ruby` action in workflow for installing and caching gems.
* Run build only when there are changes to `docs/`
See: https://docs.github.com/en/actions/reference/workflows-and-actions/events-that-trigger-workflows?versionId=free-pro-team%40latest&productId=actions#running-your-workflow-only-when-a-push-to-specific-branches-occurs
* Change font to `Open Sans`
* Increase line height
* Fix Liquid syntax error
Diffstat (limited to 'docs/assets')
| -rw-r--r-- | docs/assets/css/darkmode.css | 620 | ||||
| -rw-r--r-- | docs/assets/css/docs.css | 3 | ||||
| -rw-r--r-- | docs/assets/css/highlight.css | 282 | ||||
| -rw-r--r-- | docs/assets/css/normalize.css | 350 | ||||
| -rw-r--r-- | docs/assets/css/style.scss | 11 | ||||
| -rw-r--r-- | docs/assets/fonts/OpenSans.woff2 | bin | 0 -> 48320 bytes | |||
| -rw-r--r-- | docs/assets/js/docs.js | 63 | ||||
| -rw-r--r-- | docs/assets/js/simple-jekyll-search.min.js | 6 |
8 files changed, 1324 insertions, 11 deletions
diff --git a/docs/assets/css/darkmode.css b/docs/assets/css/darkmode.css new file mode 100644 index 000000000..371ff1a2b --- /dev/null +++ b/docs/assets/css/darkmode.css @@ -0,0 +1,620 @@ +/* stylelint-disable */ +/*! Dark reader generated CSS | Licensed under MIT https://github.com/darkreader/darkreader/blob/main/LICENSE */ + +/* User-Agent Style */ +@layer { +html { + background-color: var(--darkreader-background-ffffff, #181a1b) !important; +} +html { + color-scheme: dark !important; +} +iframe { + color-scheme: dark !important; +} +html, body { + background-color: var(--darkreader-background-ffffff, #181a1b); +} +html, body { + border-color: var(--darkreader-border-4c4c4c, #736b5e); + color: var(--darkreader-text-000000, #e8e6e3); +} +a { + color: var(--darkreader-text-0040ff, #3391ff); +} +table { + border-color: var(--darkreader-border-808080, #545b5e); +} +mark { + color: var(--darkreader-text-000000, #e8e6e3); +} +::placeholder { + color: var(--darkreader-text-a9a9a9, #b2aba1); +} +input:-webkit-autofill, +textarea:-webkit-autofill, +select:-webkit-autofill { + background-color: var(--darkreader-background-faffbd, #404400) !important; + color: var(--darkreader-text-000000, #e8e6e3) !important; +} +::selection { + background-color: var(--darkreader-background-0060d4, #004daa) !important; + color: var(--darkreader-text-ffffff, #e8e6e3) !important; +} +::-moz-selection { + background-color: var(--darkreader-background-0060d4, #004daa) !important; + color: var(--darkreader-text-ffffff, #e8e6e3) !important; +} +} + +/* Variables Style */ +:root { + --darkreader-neutral-background: var(--darkreader-background-ffffff, #181a1b); + --darkreader-neutral-text: var(--darkreader-text-000000, #e8e6e3); + --darkreader-selection-background: var(--darkreader-background-0060d4, #004daa); + --darkreader-selection-text: var(--darkreader-text-ffffff, #e8e6e3); +} + +/* Modified CSS */ +:root { + --aside-width: 300px; +} +aside { + border-right-color: var(--darkreader-border-000000, #8c8273); +} +section.search { + border-bottom-color: var(--darkreader-border-000000, #8c8273); +} +div.lang-dropdown:target nav { + background-color: var(--darkreader-background-ffffff, #181a1b); + border-bottom-color: var(--darkreader-border-000000, #8c8273); + border-left-color: var(--darkreader-border-000000, #8c8273); + border-right-color: var(--darkreader-border-000000, #8c8273); + border-top-color: var(--darkreader-border-000000, #8c8273); +} +div.lang-dropdown:target nav a:hover { + background-color: var(--darkreader-background-c0c0c0, #3c4143); +} +@media (max-width: 1200px) { + body:has(aside:target) > a.close { + background-color: var(--darkreader-background-000000, #000000); + } + aside:target { + background-color: var(--darkreader-background-ffffff, #181a1b); + } + nav.mobile-nav { + border-bottom-color: var(--darkreader-border-000000, #8c8273); + } + nav.mobile-nav > a.toggle-aside { + color: var(--darkreader-text-000000, #e8e6e3); + } +} +a { + color: var(--darkreader-text-0000ee, #3d84ff); + text-decoration-color: currentcolor; +} +aside a.close { + color: var(--darkreader-text-ff0000, #ff1a1a); +} +table, +th, +tr, +td { + border-bottom-color: var(--darkreader-border-000000, #8c8273); + border-left-color: var(--darkreader-border-000000, #8c8273); + border-right-color: var(--darkreader-border-000000, #8c8273); + border-top-color: var(--darkreader-border-000000, #8c8273); +} +a.lang-btn { + color: var(--darkreader-text-000000, #e8e6e3); +} +.highlight .cm { + color: var(--darkreader-text-999988, #a29a8e); +} +.highlight .cp { + color: var(--darkreader-text-999999, #a8a095); +} +.highlight .c1 { + color: var(--darkreader-text-999988, #a29a8e); +} +.highlight .cs { + color: var(--darkreader-text-999999, #a8a095); +} +.highlight .c, +.highlight .ch, +.highlight .cd, +.highlight .cpf { + color: var(--darkreader-text-999988, #a29a8e); +} +.highlight .err { + background-color: var(--darkreader-background-e3d2d2, #3a2424); + color: var(--darkreader-text-a61717, #e95e5e); +} +.highlight .gd { + background-color: var(--darkreader-background-ffdddd, #470000); + color: var(--darkreader-text-000000, #e8e6e3); +} +.highlight .ge { + color: var(--darkreader-text-000000, #e8e6e3); +} +.highlight .gr { + color: var(--darkreader-text-aa0000, #ff5555); +} +.highlight .gh { + color: var(--darkreader-text-999999, #a8a095); +} +.highlight .gi { + background-color: var(--darkreader-background-ddffdd, #124700); + color: var(--darkreader-text-000000, #e8e6e3); +} +.highlight .go { + color: var(--darkreader-text-888888, #9d9488); +} +.highlight .gp { + color: var(--darkreader-text-555555, #b2aca2); +} +.highlight .gu { + color: var(--darkreader-text-aaaaaa, #b2aca2); +} +.highlight .gt { + color: var(--darkreader-text-aa0000, #ff5555); +} +.highlight .kc { + color: var(--darkreader-text-000000, #e8e6e3); +} +.highlight .kd { + color: var(--darkreader-text-000000, #e8e6e3); +} +.highlight .kn { + color: var(--darkreader-text-000000, #e8e6e3); +} +.highlight .kp { + color: var(--darkreader-text-000000, #e8e6e3); +} +.highlight .kr { + color: var(--darkreader-text-000000, #e8e6e3); +} +.highlight .kt { + color: var(--darkreader-text-445588, #8ba6c5); +} +.highlight .k, +.highlight .kv { + color: var(--darkreader-text-000000, #e8e6e3); +} +.highlight .mf { + color: var(--darkreader-text-009999, #61ffff); +} +.highlight .mh { + color: var(--darkreader-text-009999, #61ffff); +} +.highlight .il { + color: var(--darkreader-text-009999, #61ffff); +} +.highlight .mi { + color: var(--darkreader-text-009999, #61ffff); +} +.highlight .mo { + color: var(--darkreader-text-009999, #61ffff); +} +.highlight .m, +.highlight .mb, +.highlight .mx { + color: var(--darkreader-text-009999, #61ffff); +} +.highlight .sa { + color: var(--darkreader-text-000000, #e8e6e3); +} +.highlight .sb { + color: var(--darkreader-text-dd1144, #ef3564); +} +.highlight .sc { + color: var(--darkreader-text-dd1144, #ef3564); +} +.highlight .sd { + color: var(--darkreader-text-dd1144, #ef3564); +} +.highlight .s2 { + color: var(--darkreader-text-dd1144, #ef3564); +} +.highlight .se { + color: var(--darkreader-text-dd1144, #ef3564); +} +.highlight .sh { + color: var(--darkreader-text-dd1144, #ef3564); +} +.highlight .si { + color: var(--darkreader-text-dd1144, #ef3564); +} +.highlight .sx { + color: var(--darkreader-text-dd1144, #ef3564); +} +.highlight .sr { + color: var(--darkreader-text-009926, #61ff88); +} +.highlight .s1 { + color: var(--darkreader-text-dd1144, #ef3564); +} +.highlight .ss { + color: var(--darkreader-text-990073, #ff61d8); +} +.highlight .s, +.highlight .dl { + color: var(--darkreader-text-dd1144, #ef3564); +} +.highlight .na { + color: var(--darkreader-text-008080, #72ffff); +} +.highlight .bp { + color: var(--darkreader-text-999999, #a8a095); +} +.highlight .nb { + color: var(--darkreader-text-0086b3, #4fd3ff); +} +.highlight .nc { + color: var(--darkreader-text-445588, #8ba6c5); +} +.highlight .no { + color: var(--darkreader-text-008080, #72ffff); +} +.highlight .nd { + color: var(--darkreader-text-3c5d5d, #b8b2a8); +} +.highlight .ni { + color: var(--darkreader-text-800080, #ff72ff); +} +.highlight .ne { + color: var(--darkreader-text-990000, #ff6161); +} +.highlight .nf, +.highlight .fm { + color: var(--darkreader-text-990000, #ff6161); +} +.highlight .nl { + color: var(--darkreader-text-990000, #ff6161); +} +.highlight .nn { + color: var(--darkreader-text-555555, #b2aca2); +} +.highlight .nt { + color: var(--darkreader-text-000080, #7faeff); +} +.highlight .vc { + color: var(--darkreader-text-008080, #72ffff); +} +.highlight .vg { + color: var(--darkreader-text-008080, #72ffff); +} +.highlight .vi { + color: var(--darkreader-text-008080, #72ffff); +} +.highlight .nv, +.highlight .vm { + color: var(--darkreader-text-008080, #72ffff); +} +.highlight .ow { + color: var(--darkreader-text-000000, #e8e6e3); +} +.highlight .o { + color: var(--darkreader-text-000000, #e8e6e3); +} +.highlight .w { + color: var(--darkreader-text-bbbbbb, #bdb7af); +} +.highlight { + background-color: var(--darkreader-background-f8f8f8, #1c1e1f); +} +a { + background-color: transparent; +} +abbr[title] { + border-bottom-color: currentcolor; + text-decoration-color: currentcolor; +} +button:focus-visible, +[type="button"]:focus-visible, +[type="reset"]:focus-visible, +[type="submit"]:focus-visible { + outline-color: var(--darkreader-border-000000, #8c8273); +} +legend { + color: inherit; +} +@layer { + html { + background-color: var(--darkreader-bg--darkreader-background-ffffff, var(--darkreader-background-181a1b, #131516)) !important; + } + html { + color-scheme: dark !important; + } + iframe { + color-scheme: dark !important; + } + html, + body { + background-color: var(--darkreader-bg--darkreader-background-ffffff, var(--darkreader-background-181a1b, #131516)); + } + html, + body { + border-color: var(--darkreader-border--darkreader-border-4c4c4c, var(--darkreader-border-736b5e, #6a6257)); + color: var(--darkreader-text--darkreader-text-000000, var(--darkreader-text-e8e6e3, #d8d4cf)); + } + a { + color: var(--darkreader-text--darkreader-text-0040ff, var(--darkreader-text-3391ff, #3da5ff)); + } + table { + border-color: var(--darkreader-border--darkreader-border-808080, var(--darkreader-border-545b5e, #6f675b)); + } + mark { + color: var(--darkreader-text--darkreader-text-000000, var(--darkreader-text-e8e6e3, #d8d4cf)); + } + ::placeholder { + color: var(--darkreader-text--darkreader-text-a9a9a9, var(--darkreader-text-b2aba1, #b2aba1)); + } + input:autofill, + textarea:autofill, + select:autofill { + background-color: var(--darkreader-bg--darkreader-background-faffbd, var(--darkreader-background-404400, #333600)) !important; + color: var(--darkreader-text--darkreader-text-000000, var(--darkreader-text-e8e6e3, #d8d4cf)) !important; + } + ::selection { + background-color: var(--darkreader-bg--darkreader-background-0060d4, var(--darkreader-background-004daa, #003e88)) !important; + color: var(--darkreader-text--darkreader-text-ffffff, var(--darkreader-text-e8e6e3, #d8d4cf)) !important; + } + ::selection { + background-color: var(--darkreader-bg--darkreader-background-0060d4, var(--darkreader-background-004daa, #003e88)) !important; + color: var(--darkreader-text--darkreader-text-ffffff, var(--darkreader-text-e8e6e3, #d8d4cf)) !important; + } +} +:root { + --darkreader-neutral-background: var(--darkreader-background-ffffff, #181a1b); + --darkreader-neutral-text: var(--darkreader-text-000000, #e8e6e3); + --darkreader-selection-background: var(--darkreader-background-0060d4, #004daa); + --darkreader-selection-text: var(--darkreader-text-ffffff, #e8e6e3); +} +:root { + --aside-width: 300px; +} +aside { + border-right-color: var(--darkreader-border--darkreader-border-000000, var(--darkreader-border-8c8273, #545b5f)); +} +section.search { + border-bottom-color: var(--darkreader-border--darkreader-border-000000, var(--darkreader-border-8c8273, #545b5f)); +} +@media (max-width: 1200px) { + body:has(aside:target) > a#close { + background-color: var(--darkreader-bg--darkreader-background-000000, var(--darkreader-background-000000, #000000)); + } + aside:target { + background-color: var(--darkreader-bg--darkreader-background-ffffff, var(--darkreader-background-181a1b, #131516)); + } + nav.mobile-nav { + border-bottom-color: var(--darkreader-border--darkreader-border-000000, var(--darkreader-border-8c8273, #545b5f)); + } +} +a { + color: var(--darkreader-text--darkreader-text-0000ee, var(--darkreader-text-3d84ff, #44a2ff)); + text-decoration-color: currentcolor; +} +aside a#close { + color: var(--darkreader-text--darkreader-text-ff0000, var(--darkreader-text-ff1a1a, #ff2c2c)); +} +table, +th, +tr, +td { + border-bottom-color: var(--darkreader-border--darkreader-border-000000, var(--darkreader-border-8c8273, #545b5f)); + border-left-color: var(--darkreader-border--darkreader-border-000000, var(--darkreader-border-8c8273, #545b5f)); + border-right-color: var(--darkreader-border--darkreader-border-000000, var(--darkreader-border-8c8273, #545b5f)); + border-top-color: var(--darkreader-border--darkreader-border-000000, var(--darkreader-border-8c8273, #545b5f)); +} +.highlight .cm { + color: var(--darkreader-text--darkreader-text-999988, var(--darkreader-text-a29a8e, #a79f94)); +} +.highlight .cp { + color: var(--darkreader-text--darkreader-text-999999, var(--darkreader-text-a8a095, #aba499)); +} +.highlight .c1 { + color: var(--darkreader-text--darkreader-text-999988, var(--darkreader-text-a29a8e, #a79f94)); +} +.highlight .cs { + color: var(--darkreader-text--darkreader-text-999999, var(--darkreader-text-a8a095, #aba499)); +} +.highlight .c, +.highlight .ch, +.highlight .cd, +.highlight .cpf { + color: var(--darkreader-text--darkreader-text-999988, var(--darkreader-text-a29a8e, #a79f94)); +} +.highlight .err { + background-color: var(--darkreader-bg--darkreader-background-e3d2d2, var(--darkreader-background-3a2424, #2e1d1d)); + color: var(--darkreader-text--darkreader-text-a61717, var(--darkreader-text-e95e5e, #e96161)); +} +.highlight .gd { + background-color: var(--darkreader-bg--darkreader-background-ffdddd, var(--darkreader-background-470000, #390000)); + color: var(--darkreader-text--darkreader-text-000000, var(--darkreader-text-e8e6e3, #d8d4cf)); +} +.highlight .ge { + color: var(--darkreader-text--darkreader-text-000000, var(--darkreader-text-e8e6e3, #d8d4cf)); +} +.highlight .gr { + color: var(--darkreader-text--darkreader-text-aa0000, var(--darkreader-text-ff5555, #ff5555)); +} +.highlight .gh { + color: var(--darkreader-text--darkreader-text-999999, var(--darkreader-text-a8a095, #aba499)); +} +.highlight .gi { + background-color: var(--darkreader-bg--darkreader-background-ddffdd, var(--darkreader-background-124700, #0e3900)); + color: var(--darkreader-text--darkreader-text-000000, var(--darkreader-text-e8e6e3, #d8d4cf)); +} +.highlight .go { + color: var(--darkreader-text--darkreader-text-888888, var(--darkreader-text-9d9488, #a39c90)); +} +.highlight .gp { + color: var(--darkreader-text--darkreader-text-555555, var(--darkreader-text-b2aca2, #b2aca2)); +} +.highlight .gu { + color: var(--darkreader-text--darkreader-text-aaaaaa, var(--darkreader-text-b2aca2, #b2aca2)); +} +.highlight .gt { + color: var(--darkreader-text--darkreader-text-aa0000, var(--darkreader-text-ff5555, #ff5555)); +} +.highlight .kc { + color: var(--darkreader-text--darkreader-text-000000, var(--darkreader-text-e8e6e3, #d8d4cf)); +} +.highlight .kd { + color: var(--darkreader-text--darkreader-text-000000, var(--darkreader-text-e8e6e3, #d8d4cf)); +} +.highlight .kn { + color: var(--darkreader-text--darkreader-text-000000, var(--darkreader-text-e8e6e3, #d8d4cf)); +} +.highlight .kp { + color: var(--darkreader-text--darkreader-text-000000, var(--darkreader-text-e8e6e3, #d8d4cf)); +} +.highlight .kr { + color: var(--darkreader-text--darkreader-text-000000, var(--darkreader-text-e8e6e3, #d8d4cf)); +} +.highlight .kt { + color: var(--darkreader-text--darkreader-text-445588, var(--darkreader-text-8ba6c5, #8cabc5)); +} +.highlight .k, +.highlight .kv { + color: var(--darkreader-text--darkreader-text-000000, var(--darkreader-text-e8e6e3, #d8d4cf)); +} +.highlight .mf { + color: var(--darkreader-text--darkreader-text-009999, var(--darkreader-text-61ffff, #5dffff)); +} +.highlight .mh { + color: var(--darkreader-text--darkreader-text-009999, var(--darkreader-text-61ffff, #5dffff)); +} +.highlight .il { + color: var(--darkreader-text--darkreader-text-009999, var(--darkreader-text-61ffff, #5dffff)); +} +.highlight .mi { + color: var(--darkreader-text--darkreader-text-009999, var(--darkreader-text-61ffff, #5dffff)); +} +.highlight .mo { + color: var(--darkreader-text--darkreader-text-009999, var(--darkreader-text-61ffff, #5dffff)); +} +.highlight .m, +.highlight .mb, +.highlight .mx { + color: var(--darkreader-text--darkreader-text-009999, var(--darkreader-text-61ffff, #5dffff)); +} +.highlight .sa { + color: var(--darkreader-text--darkreader-text-000000, var(--darkreader-text-e8e6e3, #d8d4cf)); +} +.highlight .sb { + color: var(--darkreader-text--darkreader-text-dd1144, var(--darkreader-text-ef3564, #f0426e)); +} +.highlight .sc { + color: var(--darkreader-text--darkreader-text-dd1144, var(--darkreader-text-ef3564, #f0426e)); +} +.highlight .sd { + color: var(--darkreader-text--darkreader-text-dd1144, var(--darkreader-text-ef3564, #f0426e)); +} +.highlight .s2 { + color: var(--darkreader-text--darkreader-text-dd1144, var(--darkreader-text-ef3564, #f0426e)); +} +.highlight .se { + color: var(--darkreader-text--darkreader-text-dd1144, var(--darkreader-text-ef3564, #f0426e)); +} +.highlight .sh { + color: var(--darkreader-text--darkreader-text-dd1144, var(--darkreader-text-ef3564, #f0426e)); +} +.highlight .si { + color: var(--darkreader-text--darkreader-text-dd1144, var(--darkreader-text-ef3564, #f0426e)); +} +.highlight .sx { + color: var(--darkreader-text--darkreader-text-dd1144, var(--darkreader-text-ef3564, #f0426e)); +} +.highlight .sr { + color: var(--darkreader-text--darkreader-text-009926, var(--darkreader-text-61ff88, #5dff85)); +} +.highlight .s1 { + color: var(--darkreader-text--darkreader-text-dd1144, var(--darkreader-text-ef3564, #f0426e)); +} +.highlight .ss { + color: var(--darkreader-text--darkreader-text-990073, var(--darkreader-text-ff61d8, #ff5dd7)); +} +.highlight .s, +.highlight .dl { + color: var(--darkreader-text--darkreader-text-dd1144, var(--darkreader-text-ef3564, #f0426e)); +} +.highlight .na { + color: var(--darkreader-text--darkreader-text-008080, var(--darkreader-text-72ffff, #69ffff)); +} +.highlight .bp { + color: var(--darkreader-text--darkreader-text-999999, var(--darkreader-text-a8a095, #aba499)); +} +.highlight .nb { + color: var(--darkreader-text--darkreader-text-0086b3, var(--darkreader-text-4fd3ff, #51d3ff)); +} +.highlight .nc { + color: var(--darkreader-text--darkreader-text-445588, var(--darkreader-text-8ba6c5, #8cabc5)); +} +.highlight .no { + color: var(--darkreader-text--darkreader-text-008080, var(--darkreader-text-72ffff, #69ffff)); +} +.highlight .nd { + color: var(--darkreader-text--darkreader-text-3c5d5d, var(--darkreader-text-b8b2a8, #b6b0a6)); +} +.highlight .ni { + color: var(--darkreader-text--darkreader-text-800080, var(--darkreader-text-ff72ff, #ff69ff)); +} +.highlight .ne { + color: var(--darkreader-text--darkreader-text-990000, var(--darkreader-text-ff6161, #ff5d5d)); +} +.highlight .nf, +.highlight .fm { + color: var(--darkreader-text--darkreader-text-990000, var(--darkreader-text-ff6161, #ff5d5d)); +} +.highlight .nl { + color: var(--darkreader-text--darkreader-text-990000, var(--darkreader-text-ff6161, #ff5d5d)); +} +.highlight .nn { + color: var(--darkreader-text--darkreader-text-555555, var(--darkreader-text-b2aca2, #b2aca2)); +} +.highlight .nt { + color: var(--darkreader-text--darkreader-text-000080, var(--darkreader-text-7faeff, #72b9ff)); +} +.highlight .vc { + color: var(--darkreader-text--darkreader-text-008080, var(--darkreader-text-72ffff, #69ffff)); +} +.highlight .vg { + color: var(--darkreader-text--darkreader-text-008080, var(--darkreader-text-72ffff, #69ffff)); +} +.highlight .vi { + color: var(--darkreader-text--darkreader-text-008080, var(--darkreader-text-72ffff, #69ffff)); +} +.highlight .nv, +.highlight .vm { + color: var(--darkreader-text--darkreader-text-008080, var(--darkreader-text-72ffff, #69ffff)); +} +.highlight .ow { + color: var(--darkreader-text--darkreader-text-000000, var(--darkreader-text-e8e6e3, #d8d4cf)); +} +.highlight .o { + color: var(--darkreader-text--darkreader-text-000000, var(--darkreader-text-e8e6e3, #d8d4cf)); +} +.highlight .w { + color: var(--darkreader-text--darkreader-text-bbbbbb, var(--darkreader-text-bdb7af, #bab4ab)); +} +.highlight { + background-color: var(--darkreader-bg--darkreader-background-f8f8f8, var(--darkreader-background-1c1e1f, #161819)); +} +a { + background-color: transparent; +} +abbr[title] { + border-bottom-color: currentcolor; + text-decoration-color: currentcolor; +} +button:focus-visible, +[type="button"]:focus-visible, +[type="reset"]:focus-visible, +[type="submit"]:focus-visible { + outline-color: var(--darkreader-border--darkreader-border-000000, var(--darkreader-border-8c8273, #545b5f)); +} +legend { + color: inherit; +} diff --git a/docs/assets/css/docs.css b/docs/assets/css/docs.css new file mode 100644 index 000000000..05a407784 --- /dev/null +++ b/docs/assets/css/docs.css @@ -0,0 +1,3 @@ +--- +--- +{% include docs.css %} diff --git a/docs/assets/css/highlight.css b/docs/assets/css/highlight.css new file mode 100644 index 000000000..6b5c4b725 --- /dev/null +++ b/docs/assets/css/highlight.css @@ -0,0 +1,282 @@ +pre.highlight { + padding: 1rem; + overflow-x: scroll; +} + +/* generated with `rougify style github` */ +.highlight table td { padding: 5px; } + +.highlight table pre { margin: 0; } + +.highlight .cm { + color: #998; + font-style: italic; +} + +.highlight .cp { + color: #999; + font-weight: bold; +} + +.highlight .c1 { + color: #998; + font-style: italic; +} + +.highlight .cs { + color: #999; + font-weight: bold; + font-style: italic; +} + +.highlight .c, .highlight .ch, .highlight .cd, .highlight .cpf { + color: #998; + font-style: italic; +} + +.highlight .err { + color: #a61717; + background-color: #e3d2d2; +} + +.highlight .gd { + color: #000; + background-color: #fdd; +} + +.highlight .ge { + color: #000; + font-style: italic; +} + +.highlight .gr { + color: #a00; +} + +.highlight .gh { + color: #999; +} + +.highlight .gi { + color: #000; + background-color: #dfd; +} + +.highlight .go { + color: #888; +} + +.highlight .gp { + color: #555; +} + +.highlight .gs { + font-weight: bold; +} + +.highlight .gu { + color: #aaa; +} + +.highlight .gt { + color: #a00; +} + +.highlight .kc { + color: #000; + font-weight: bold; +} + +.highlight .kd { + color: #000; + font-weight: bold; +} + +.highlight .kn { + color: #000; + font-weight: bold; +} + +.highlight .kp { + color: #000; + font-weight: bold; +} + +.highlight .kr { + color: #000; + font-weight: bold; +} + +.highlight .kt { + color: #458; + font-weight: bold; +} + +.highlight .k, .highlight .kv { + color: #000; + font-weight: bold; +} + +.highlight .mf { + color: #099; +} + +.highlight .mh { + color: #099; +} + +.highlight .il { + color: #099; +} + +.highlight .mi { + color: #099; +} + +.highlight .mo { + color: #099; +} + +.highlight .m, .highlight .mb, .highlight .mx { + color: #099; +} + +.highlight .sa { + color: #000; + font-weight: bold; +} + +.highlight .sb { + color: #d14; +} + +.highlight .sc { + color: #d14; +} + +.highlight .sd { + color: #d14; +} + +.highlight .s2 { + color: #d14; +} + +.highlight .se { + color: #d14; +} + +.highlight .sh { + color: #d14; +} + +.highlight .si { + color: #d14; +} + +.highlight .sx { + color: #d14; +} + +.highlight .sr { + color: #009926; +} + +.highlight .s1 { + color: #d14; +} + +.highlight .ss { + color: #990073; +} + +.highlight .s, .highlight .dl { + color: #d14; +} + +.highlight .na { + color: #008080; +} + +.highlight .bp { + color: #999; +} + +.highlight .nb { + color: #0086b3; +} + +.highlight .nc { + color: #458; + font-weight: bold; +} + +.highlight .no { + color: #008080; +} + +.highlight .nd { + color: #3c5d5d; + font-weight: bold; +} + +.highlight .ni { + color: #800080; +} + +.highlight .ne { + color: #900; + font-weight: bold; +} + +.highlight .nf, .highlight .fm { + color: #900; + font-weight: bold; +} + +.highlight .nl { + color: #900; + font-weight: bold; +} + +.highlight .nn { + color: #555; +} + +.highlight .nt { + color: #000080; +} + +.highlight .vc { + color: #008080; +} + +.highlight .vg { + color: #008080; +} + +.highlight .vi { + color: #008080; +} + +.highlight .nv, .highlight .vm { + color: #008080; +} + +.highlight .ow { + color: #000; + font-weight: bold; +} + +.highlight .o { + color: #000; + font-weight: bold; +} + +.highlight .w { + color: #bbb; +} + +.highlight { + background-color: #f8f8f8; +} diff --git a/docs/assets/css/normalize.css b/docs/assets/css/normalize.css new file mode 100644 index 000000000..bcc16e96b --- /dev/null +++ b/docs/assets/css/normalize.css @@ -0,0 +1,350 @@ +/* stylelint-disable */ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ + +/* Document + ========================================================================== */ + +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in iOS. + */ + +html { + line-height: 1.15; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/* Sections + ========================================================================== */ + +/** + * Remove the margin in all browsers. + */ + +body { + margin: 0; +} + +/** + * Render the `main` element consistently in IE. + */ + +main { + display: block; +} + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/* Grouping content + ========================================================================== */ + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ + +hr { + box-sizing: content-box; /* 1 */ + height: 0; /* 1 */ + overflow: visible; /* 2 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +pre { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Remove the gray background on active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * 1. Remove the bottom border in Chrome 57- + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ + +abbr[title] { + border-bottom: none; /* 1 */ + text-decoration: underline; /* 2 */ + text-decoration: underline dotted; /* 2 */ +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +b, +strong { + font-weight: bolder; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +code, +kbd, +samp { + /* font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/** + * Add the correct font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove the border on images inside links in IE 10. + */ + +img { + border-style: none; +} + +/* Forms + ========================================================================== */ + +/** + * 1. Change the font styles in all browsers. + * 2. Remove the margin in Firefox and Safari. + */ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + margin: 0; /* 2 */ +} + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ + +button, +input { /* 1 */ + overflow: visible; +} + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ + +button, +select { /* 1 */ + text-transform: none; +} + +/** + * Correct the inability to style clickable types in iOS and Safari. + */ + +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + +/** + * Remove the inner border and padding in Firefox. + */ + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +/** + * Restore the focus styles unset by the previous rule. + */ + +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +/** + * Correct the padding in Firefox. + */ + +fieldset { + padding: 0.35em 0.75em 0.625em; +} + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ + +legend { + box-sizing: border-box; /* 1 */ + color: inherit; /* 2 */ + display: table; /* 1 */ + max-width: 100%; /* 1 */ + padding: 0; /* 3 */ + white-space: normal; /* 1 */ +} + +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ + +progress { + vertical-align: baseline; +} + +/** + * Remove the default vertical scrollbar in IE 10+. + */ + +textarea { + overflow: auto; +} + +/** + * 1. Add the correct box sizing in IE 10. + * 2. Remove the padding in IE 10. + */ + +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ + +[type="search"] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} + +/** + * Remove the inner padding in Chrome and Safari on macOS. + */ + +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ + +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} + +/* Interactive + ========================================================================== */ + +/* + * Add the correct display in Edge, IE 10+, and Firefox. + */ + +details { + display: block; +} + +/* + * Add the correct display in all browsers. + */ + +summary { + display: list-item; +} + +/* Misc + ========================================================================== */ + +/** + * Add the correct display in IE 10+. + */ + +template { + display: none; +} + +/** + * Add the correct display in IE 10. + */ + +[hidden] { + display: none; +} diff --git a/docs/assets/css/style.scss b/docs/assets/css/style.scss deleted file mode 100644 index fdd12eda4..000000000 --- a/docs/assets/css/style.scss +++ /dev/null @@ -1,11 +0,0 @@ -// stylelint-disable-next-line -@import "{{ site.theme }}"; - -.page-header .project-name a { - color: #fff; - - &:hover { - text-decoration: none; - opacity: .7; - } -} diff --git a/docs/assets/fonts/OpenSans.woff2 b/docs/assets/fonts/OpenSans.woff2 Binary files differnew file mode 100644 index 000000000..b5d54e762 --- /dev/null +++ b/docs/assets/fonts/OpenSans.woff2 diff --git a/docs/assets/js/docs.js b/docs/assets/js/docs.js new file mode 100644 index 000000000..c14fce920 --- /dev/null +++ b/docs/assets/js/docs.js @@ -0,0 +1,63 @@ +/* globals i18n */ + +if (window.matchMedia('(prefers-color-scheme: dark)').matches) { + document.head.insertAdjacentHTML('beforeend', ` + <meta name="darkreader-lock"> + `); +} + +let asideNav; + +window.addEventListener('beforeunload', () => { + sessionStorage.setItem('sidebar_scrollTop', asideNav.scrollTop); +}); + +window.addEventListener('keydown', (e) => { + if (e.key === 'Escape') { + location.hash = 'close'; + } +}); + +document.addEventListener('DOMContentLoaded', () => { + asideNav = document.querySelector('aside > nav.docs'); + + const sidebar_scrollTop = sessionStorage.getItem('sidebar_scrollTop'); + if (sidebar_scrollTop) { + asideNav.scrollTo(0, sidebar_scrollTop); + sessionStorage.removeItem('sidebar_scrollTop'); + } + + for (const el of document.querySelectorAll('div.highlight')) { + /* eslint-disable @stylistic/max-len */ + el.insertAdjacentHTML('afterbegin', ` + <button class="copy" title="${i18n.copy_to_clipboard}"> + <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16"> + <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1z"/> + <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0z"/> + </svg> + </button> + `); + /* eslint-enable @stylistic/max-len */ + const copyBtn = el.querySelector('button.copy'); + copyBtn.addEventListener('click', () => { + const snippet = el.querySelector('code').innerText; + if (navigator.clipboard) { + navigator.clipboard.writeText(snippet); + } else { + // Fallback if no HTTPS + const input = document.createElement('textarea'); + input.innerHTML = snippet; + document.body.append(input); + input.select(); + document.execCommand('copy'); + input.remove(); + } + }); + } + + for (const el of document.querySelectorAll('img')) { + if (el.parentNode.tagName !== 'A') { + el.outerHTML = `<a href="${el.getAttribute('src')}">${el.outerHTML}</a>`; + } + } +}); diff --git a/docs/assets/js/simple-jekyll-search.min.js b/docs/assets/js/simple-jekyll-search.min.js new file mode 100644 index 000000000..81df5d5a3 --- /dev/null +++ b/docs/assets/js/simple-jekyll-search.min.js @@ -0,0 +1,6 @@ +/*! + * Simple-Jekyll-Search + * Copyright 2015-2020, Christian Fei + * Licensed under the MIT License. + */ +!function(){"use strict";var f={compile:function(r){return i.template.replace(i.pattern,function(t,e){var n=i.middleware(e,r[e],i.template);return void 0!==n?n:r[e]||t})},setOptions:function(t){i.pattern=t.pattern||i.pattern,i.template=t.template||i.template,"function"==typeof t.middleware&&(i.middleware=t.middleware)}};const i={pattern:/\{(.*?)\}/g,template:"",middleware:function(){}};var n=function(t,e){var n=e.length,r=t.length;if(n<r)return!1;if(r===n)return t===e;t:for(var i=0,o=0;i<r;i++){for(var u=t.charCodeAt(i);o<n;)if(e.charCodeAt(o++)===u)continue t;return!1}return!0},e=new function(){this.matches=function(t,e){return n(e.toLowerCase(),t.toLowerCase())}},r=new function(){this.matches=function(e,t){return!!e&&(e=e.trim().toLowerCase(),(t=t.trim().toLowerCase()).split(" ").filter(function(t){return 0<=e.indexOf(t)}).length===t.split(" ").length)}},d={put:function(t){if(l(t))return a(t);if(function(t){return Boolean(t)&&"[object Array]"===Object.prototype.toString.call(t)}(t))return function(n){const r=[];s();for(let t=0,e=n.length;t<e;t++)l(n[t])&&r.push(a(n[t]));return r}(t);return undefined},clear:s,search:function(t){return t?function(e,n,r,i){const o=[];for(let t=0;t<e.length&&o.length<i.limit;t++){var u=function(t,e,n,r){for(const i in t)if(!function(n,r){for(let t=0,e=r.length;t<e;t++){var i=r[t];if(new RegExp(i).test(n))return!0}return!1}(t[i],r.exclude)&&n.matches(t[i],e))return t}(e[t],n,r,i);u&&o.push(u)}return o}(u,t,c.searchStrategy,c).sort(c.sort):[]},setOptions:function(t){c=t||{},c.fuzzy=t.fuzzy||!1,c.limit=t.limit||10,c.searchStrategy=t.fuzzy?e:r,c.sort=t.sort||o,c.exclude=t.exclude||[]}};function o(){return 0}const u=[];let c={};function s(){return u.length=0,u}function l(t){return Boolean(t)&&"[object Object]"===Object.prototype.toString.call(t)}function a(t){return u.push(t),u}c.fuzzy=!1,c.limit=10,c.searchStrategy=c.fuzzy?e:r,c.sort=o,c.exclude=[];var p={load:function(t,e){const n=window.XMLHttpRequest?new window.XMLHttpRequest:new ActiveXObject("Microsoft.XMLHTTP");n.open("GET",t,!0),n.onreadystatechange=h(n,e),n.send()}};function h(e,n){return function(){if(4===e.readyState&&200===e.status)try{n(null,JSON.parse(e.responseText))}catch(t){n(t,null)}}}var m=function y(t){if(!(e=t)||!("undefined"!=typeof e.required&&e.required instanceof Array))throw new Error("-- OptionsValidator: required options missing");var e;if(!(this instanceof y))return new y(t);const r=t.required;this.getRequiredOptions=function(){return r},this.validate=function(e){const n=[];return r.forEach(function(t){"undefined"==typeof e[t]&&n.push(t)}),n}},w={merge:function(t,e){const n={};for(const r in t)n[r]=t[r],"undefined"!=typeof e[r]&&(n[r]=e[r]);return n},isJSON:function(t){try{return t instanceof Object&&JSON.parse(JSON.stringify(t))?!0:!1}catch(e){return!1}}};!function(t){let i={searchInput:null,resultsContainer:null,json:[],success:Function.prototype,searchResultTemplate:'<li><a href="{url}" title="{desc}">{title}</a></li>',templateMiddleware:Function.prototype,sortMiddleware:function(){return 0},noResultsText:"No results found",limit:10,fuzzy:!1,debounceTime:null,exclude:[]},n;const e=function(t,e){e?(clearTimeout(n),n=setTimeout(t,e)):t.call()};var r=["searchInput","resultsContainer","json"];const o=m({required:r});function u(t){d.put(t),i.searchInput.addEventListener("input",function(t){-1===[13,16,20,37,38,39,40,91].indexOf(t.which)&&(c(),e(function(){l(t.target.value)},i.debounceTime))})}function c(){i.resultsContainer.innerHTML=""}function s(t){i.resultsContainer.innerHTML+=t}function l(t){var e;(e=t)&&0<e.length&&(c(),function(e,n){var r=e.length;if(0===r)return s(i.noResultsText);for(let t=0;t<r;t++)e[t].query=n,s(f.compile(e[t]))}(d.search(t),t))}function a(t){throw new Error("SimpleJekyllSearch --- "+t)}t.SimpleJekyllSearch=function(t){var n;0<o.validate(t).length&&a("You must specify the following required options: "+r),i=w.merge(i,t),f.setOptions({template:i.searchResultTemplate,middleware:i.templateMiddleware}),d.setOptions({fuzzy:i.fuzzy,limit:i.limit,sort:i.sortMiddleware,exclude:i.exclude}),w.isJSON(i.json)?u(i.json):(n=i.json,p.load(n,function(t,e){t&&a("failed to get JSON ("+n+")"),u(e)}));t={search:l};return"function"==typeof i.success&&i.success.call(t),t}}(window)}();
\ No newline at end of file |
