From b76816ba715a6f1abafc0beb33422f1d968e88a7 Mon Sep 17 00:00:00 2001 From: xhdix Date: Mon, 27 Sep 2021 02:16:03 +0300 Subject: [PATCH 01/27] add simple auto dark mode --- layouts/_default/baseof.html | 5 ++++- static/css/master.css | 31 +++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html index cc098cbdc..ee5c57ce9 100644 --- a/layouts/_default/baseof.html +++ b/layouts/_default/baseof.html @@ -10,7 +10,10 @@ - + + + + {{ partial "opengraph.html" . }} {{ partial "twitter_cards.html" . }} diff --git a/static/css/master.css b/static/css/master.css index ac365c8d4..7e35ed680 100644 --- a/static/css/master.css +++ b/static/css/master.css @@ -999,3 +999,34 @@ p.test-paragraph { .app-store-badge:hover img { opacity: 0.8; } + + +/* ================================================================== */ +/* theme */ + +@media (prefers-color-scheme: dark) { + html,body { + background: #333; + color: #cecece; + } + + a { + color: #4fbef7; + } + + a:hover { + color: #9ed9f7; + } + + pre { + background-color: #3e3e3e; + } +} + +@media (prefers-color-scheme: light) { + html { + color: #1c1c1c; + background-color: #fff; + } +} + From a6d4f6d15638c2f6f2bcf8aac82a311a3eccc146 Mon Sep 17 00:00:00 2001 From: xhdix Date: Mon, 27 Sep 2021 02:54:42 +0300 Subject: [PATCH 02/27] change theme colors to variable --- static/css/master.css | 77 +++++++++++++++++++++++-------------------- 1 file changed, 42 insertions(+), 35 deletions(-) diff --git a/static/css/master.css b/static/css/master.css index 7e35ed680..082787fc8 100644 --- a/static/css/master.css +++ b/static/css/master.css @@ -1,17 +1,51 @@ /* ================================================================== */ /* Resets */ +/* ================================================================== */ +/* theme */ + +:root { + --body-background: #fff; + --body-font-color: #1c1c1c; + --link: #0588cb; + --link-hover: #0056b3; + --pre-bg: #f2f2f2; +} + + +@media (prefers-color-scheme: light) { + :root { + --body-background: #fff; + --body-font-color: #1c1c1c; + --link: #0588cb; + --link-hover: #0056b3; + --pre-bg: #f2f2f2; + } +} + +@media (prefers-color-scheme: dark) { + :root { + --body-background: #333; + --body-font-color: #cecece; + --link: #4fbef7; + --link-hover: #9ed9f7; + --pre-bg: #3e3e3e; + } +} + /* ================================================================== */ /* Font selection */ html { - color: #1c1c1c; - background-color: #fff; + color: var(--body-font-color); + background-color: var(--body-background); } body { overflow-x: hidden; font-family: "Fira Sans", sans-serif; + color: var(--body-font-color); + background-color: var(--body-background); } h1, h2, h3, h4, h5, nav, .toc { @@ -113,7 +147,11 @@ h2.overlined { a { text-decoration: none; - color: #0588cb; + color: var(--link); +} + +a:hover { + color: var(--link-hover); } p, ol, ul { @@ -173,7 +211,7 @@ a.explorer-button:hover { } pre { - background-color: #f2f2f2; + background-color: var(--pre-bg); padding: 0.5rem 1rem; margin: 1.6rem 0; position: relative; @@ -999,34 +1037,3 @@ p.test-paragraph { .app-store-badge:hover img { opacity: 0.8; } - - -/* ================================================================== */ -/* theme */ - -@media (prefers-color-scheme: dark) { - html,body { - background: #333; - color: #cecece; - } - - a { - color: #4fbef7; - } - - a:hover { - color: #9ed9f7; - } - - pre { - background-color: #3e3e3e; - } -} - -@media (prefers-color-scheme: light) { - html { - color: #1c1c1c; - background-color: #fff; - } -} - From a63d859f45dd31552190812019582e5b619966b7 Mon Sep 17 00:00:00 2001 From: xhdix Date: Mon, 27 Sep 2021 04:39:26 +0300 Subject: [PATCH 03/27] add a button to toggle theme --- layouts/_default/baseof.html | 4 ++++ static/css/master.css | 26 ++++++++++++++++++++++ static/js/toggle-theme.js | 42 ++++++++++++++++++++++++++++++++++++ 3 files changed, 72 insertions(+) create mode 100644 static/js/toggle-theme.js diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html index ee5c57ce9..955145f8a 100644 --- a/layouts/_default/baseof.html +++ b/layouts/_default/baseof.html @@ -73,6 +73,9 @@ {{end}} {{end}} + @@ -167,6 +170,7 @@ {{ end }} + {{ block "script" . }} {{ end }} diff --git a/static/css/master.css b/static/css/master.css index 082787fc8..e5031f7ad 100644 --- a/static/css/master.css +++ b/static/css/master.css @@ -33,6 +33,22 @@ } } +.light { + --body-background: #fff; + --body-font-color: #1c1c1c; + --link: #0588cb; + --link-hover: #0056b3; + --pre-bg: #f2f2f2; +} + +.dark { + --body-background: #333; + --body-font-color: #cecece; + --link: #4fbef7; + --link-hover: #9ed9f7; + --pre-bg: #3e3e3e; +} + /* ================================================================== */ /* Font selection */ @@ -474,6 +490,16 @@ nav.navbar { opacity: 1; } +.nav-menu-toggle-theme { + text-align: center; + padding: 5px; + cursor: pointer; +} + +.nav-menu-toggle-theme:hover { + filter: invert(1); +} + .nav-menu-install { text-align: center; } diff --git a/static/js/toggle-theme.js b/static/js/toggle-theme.js new file mode 100644 index 000000000..f040a77d8 --- /dev/null +++ b/static/js/toggle-theme.js @@ -0,0 +1,42 @@ +const themeColor = document.querySelector('meta[name="theme-color"]'); +const colorScheme = document.querySelector('meta[name="color-scheme"]'); +const body = document.body; +// Check for dark mode preference at the OS level +const prefersDarkScheme = window.matchMedia("(prefers-color-scheme: dark)"); +// Get the user's theme preference from local storage, if it's available +const currentTheme = localStorage.getItem("theme"); +// If the user's preference in localStorage is dark... +if (currentTheme == "dark") { + // ...let's toggle the .dark-theme class on the body + if (!prefersDarkScheme.matches) { + document.documentElement.classList.toggle("dark"); + } + themeColor.content = getComputedStyle(body).color; + colorScheme.content= "dark"; +// Otherwise, if the user's preference in localStorage is light... +} else if (currentTheme == "light") { + // ...let's toggle the .light-theme class on the body + if (prefersDarkScheme.matches) { + document.documentElement.classList.toggle("light"); + } + themeColor.content = getComputedStyle(body).color; + colorScheme.content= "light"; +} +function toggletheme() { + if (prefersDarkScheme.matches) { + // ...then toggle the light mode class + document.documentElement.classList.toggle("light"); + themeColor.content = getComputedStyle(body).color; + colorScheme.content= colorScheme.content == "dark" ? "light" : "dark"; + // ...but use .dark-mode if the .light-mode class is already on the body, + var theme = document.documentElement.classList.contains("light") ? "light" : "dark"; + } else { + // Otherwise, let's do the same thing, but for .dark-mode + document.documentElement.classList.toggle("dark"); + themeColor.content = getComputedStyle(body).color; + colorScheme.content= colorScheme.content == "dark" ? "light" : "dark"; + var theme = document.documentElement.classList.contains("dark") ? "dark" : "light"; + } + // Finally, let's save the current preference to localStorage to keep using it + localStorage.setItem("theme", theme); +} \ No newline at end of file From 61f4385bf9a6539339c931bc6b9fd1f3671e1345 Mon Sep 17 00:00:00 2001 From: xhdix Date: Mon, 27 Sep 2021 19:45:20 +0300 Subject: [PATCH 04/27] add theme-based homepage logo --- layouts/index.html | 15 ++++++++++----- .../logos/OONI-VerticalColor-Inverted.png | Bin 0 -> 8478 bytes .../logos/OONI-VerticalColor-Inverted@2x.png | Bin 0 -> 19159 bytes 3 files changed, 10 insertions(+), 5 deletions(-) create mode 100644 static/images/logos/OONI-VerticalColor-Inverted.png create mode 100644 static/images/logos/OONI-VerticalColor-Inverted@2x.png diff --git a/layouts/index.html b/layouts/index.html index 7805d7a91..f985be9f6 100644 --- a/layouts/index.html +++ b/layouts/index.html @@ -3,11 +3,16 @@
- -

{{ .Params.leadTitle }}

-

{{ .Params.leadDescription }}

+ + + + OONI logo + +

{{ .Params.leadTitle }}

+

{{ .Params.leadDescription }}

diff --git a/static/images/logos/OONI-VerticalColor-Inverted.png b/static/images/logos/OONI-VerticalColor-Inverted.png new file mode 100644 index 0000000000000000000000000000000000000000..5dd7a7777c1f08b5ca43384590d5acfe814893e2 GIT binary patch literal 8478 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%0D$H$45+eX7 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 literal 0 HcmV?d00001 From e17bd986868f0feb163ff1b2471b900333365353 Mon Sep 17 00:00:00 2001 From: xhdix Date: Mon, 27 Sep 2021 21:49:30 +0300 Subject: [PATCH 05/27] change toggle button for theme --- layouts/_default/baseof.html | 3 ++- static/css/master.css | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html index 955145f8a..3c1e96864 100644 --- a/layouts/_default/baseof.html +++ b/layouts/_default/baseof.html @@ -74,7 +74,8 @@ {{end}} {{end}} diff --git a/static/css/master.css b/static/css/master.css index e5031f7ad..23f7cb940 100644 --- a/static/css/master.css +++ b/static/css/master.css @@ -496,8 +496,9 @@ nav.navbar { cursor: pointer; } -.nav-menu-toggle-theme:hover { - filter: invert(1); +.nav-menu-toggle-theme:hover svg path { + transition: 0.2s; + d: path("M 17.207031 0.03125 C 15.089844 0.160156 13.003906 0.648438 11.070312 1.460938 C 10.257812 1.804688 8.734375 2.605469 8.253906 2.949219 C 8.1875 2.988281 7.945312 3.164062 7.707031 3.328125 C 7.195312 3.683594 6.660156 4.101562 6.214844 4.488281 C 5.75 4.894531 5.144531 5.457031 5.078125 5.542969 C 5.046875 5.585938 4.898438 5.75 4.75 5.910156 C 1.25 9.6875 -0.445312 14.78125 0.101562 19.882812 C 0.539062 23.988281 2.378906 27.785156 5.351562 30.710938 C 7.253906 32.578125 9.4375 33.960938 11.972656 34.890625 C 13.136719 35.3125 14.449219 35.644531 15.703125 35.816406 C 16.679688 35.953125 17.164062 35.984375 18.277344 35.984375 C 19.347656 35.984375 19.761719 35.960938 20.59375 35.855469 C 20.839844 35.824219 21.117188 35.792969 21.210938 35.785156 C 21.304688 35.777344 21.554688 35.734375 21.769531 35.6875 C 23.789062 35.238281 24.90625 34.863281 26.414062 34.128906 C 27.519531 33.59375 28.339844 33.101562 29.277344 32.410156 C 30.023438 31.855469 30.089844 31.78125 29.953125 31.644531 C 29.90625 31.597656 29.832031 31.589844 29.289062 31.574219 C 24.304688 31.433594 19.601562 29.214844 16.289062 25.453125 C 12.902344 21.605469 11.375 16.4375 12.132812 11.363281 C 12.753906 7.160156 14.902344 3.335938 18.207031 0.539062 C 18.539062 0.257812 18.535156 0.261719 18.535156 0.164062 C 18.535156 0.0195312 18.472656 0 18.003906 0.00390625 C 17.769531 0.00390625 17.410156 0.0195312 17.207031 0.03125 Z M 17.207031 0.03125"); } .nav-menu-install { From cdc34af72c6e107cb603b4dfd43203f87872dcf1 Mon Sep 17 00:00:00 2001 From: xhdix Date: Tue, 28 Sep 2021 10:42:52 +0300 Subject: [PATCH 06/27] change dark colors according to https://design.ooni.io/colors/ --- static/css/master.css | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/static/css/master.css b/static/css/master.css index 23f7cb940..521fe3ef8 100644 --- a/static/css/master.css +++ b/static/css/master.css @@ -25,11 +25,11 @@ @media (prefers-color-scheme: dark) { :root { - --body-background: #333; - --body-font-color: #cecece; - --link: #4fbef7; - --link-hover: #9ed9f7; - --pre-bg: #3e3e3e; + --body-background: #343a40; + --body-font-color: #dee2e6; + --link: #5db8fe; + --link-hover: #94d1ff; + --pre-bg: #495057; } } @@ -42,11 +42,11 @@ } .dark { - --body-background: #333; - --body-font-color: #cecece; - --link: #4fbef7; - --link-hover: #9ed9f7; - --pre-bg: #3e3e3e; + --body-background: #343a40; + --body-font-color: #dee2e6; + --link: #5db8fe; + --link-hover: #94d1ff; + --pre-bg: #495057; } /* ================================================================== */ From 356c9c7c663076671fafe4ebe3b96c7b27cb0603 Mon Sep 17 00:00:00 2001 From: xhdix Date: Tue, 28 Sep 2021 11:46:55 +0300 Subject: [PATCH 07/27] add filter to theme toggle button because Firefox does not support `d` in css property --- static/css/master.css | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/static/css/master.css b/static/css/master.css index 521fe3ef8..2fbd4fdce 100644 --- a/static/css/master.css +++ b/static/css/master.css @@ -493,11 +493,17 @@ nav.navbar { .nav-menu-toggle-theme { text-align: center; padding: 5px; - cursor: pointer; + cursor: + pointer; +} + +.nav-menu-toggle-theme svg { + overflow: visible; } .nav-menu-toggle-theme:hover svg path { transition: 0.2s; + filter: drop-shadow(2px 4px 6px black); d: path("M 17.207031 0.03125 C 15.089844 0.160156 13.003906 0.648438 11.070312 1.460938 C 10.257812 1.804688 8.734375 2.605469 8.253906 2.949219 C 8.1875 2.988281 7.945312 3.164062 7.707031 3.328125 C 7.195312 3.683594 6.660156 4.101562 6.214844 4.488281 C 5.75 4.894531 5.144531 5.457031 5.078125 5.542969 C 5.046875 5.585938 4.898438 5.75 4.75 5.910156 C 1.25 9.6875 -0.445312 14.78125 0.101562 19.882812 C 0.539062 23.988281 2.378906 27.785156 5.351562 30.710938 C 7.253906 32.578125 9.4375 33.960938 11.972656 34.890625 C 13.136719 35.3125 14.449219 35.644531 15.703125 35.816406 C 16.679688 35.953125 17.164062 35.984375 18.277344 35.984375 C 19.347656 35.984375 19.761719 35.960938 20.59375 35.855469 C 20.839844 35.824219 21.117188 35.792969 21.210938 35.785156 C 21.304688 35.777344 21.554688 35.734375 21.769531 35.6875 C 23.789062 35.238281 24.90625 34.863281 26.414062 34.128906 C 27.519531 33.59375 28.339844 33.101562 29.277344 32.410156 C 30.023438 31.855469 30.089844 31.78125 29.953125 31.644531 C 29.90625 31.597656 29.832031 31.589844 29.289062 31.574219 C 24.304688 31.433594 19.601562 29.214844 16.289062 25.453125 C 12.902344 21.605469 11.375 16.4375 12.132812 11.363281 C 12.753906 7.160156 14.902344 3.335938 18.207031 0.539062 C 18.539062 0.257812 18.535156 0.261719 18.535156 0.164062 C 18.535156 0.0195312 18.472656 0 18.003906 0.00390625 C 17.769531 0.00390625 17.410156 0.0195312 17.207031 0.03125 Z M 17.207031 0.03125"); } From 03824eac0c2bac787cfcaf474364013ac3243ba4 Mon Sep 17 00:00:00 2001 From: xhdix Date: Fri, 1 Oct 2021 17:50:46 +0300 Subject: [PATCH 08/27] IE support for colors --- static/css/master.css | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/static/css/master.css b/static/css/master.css index 2fbd4fdce..ac468739d 100644 --- a/static/css/master.css +++ b/static/css/master.css @@ -53,14 +53,18 @@ /* Font selection */ html { + color: #1c1c1c; color: var(--body-font-color); + background-color: #fff; background-color: var(--body-background); } body { overflow-x: hidden; font-family: "Fira Sans", sans-serif; + color: #1c1c1c; color: var(--body-font-color); + background-color: #fff; background-color: var(--body-background); } @@ -163,10 +167,12 @@ h2.overlined { a { text-decoration: none; + color: #0588cb; color: var(--link); } a:hover { + color: #0056b3; color: var(--link-hover); } @@ -227,6 +233,7 @@ a.explorer-button:hover { } pre { + background-color: #f2f2f2; background-color: var(--pre-bg); padding: 0.5rem 1rem; margin: 1.6rem 0; From 151fc9431959b5b3844faae062c2c2b2f87cdc69 Mon Sep 17 00:00:00 2001 From: xhdix Date: Fri, 1 Oct 2021 18:27:12 +0300 Subject: [PATCH 09/27] change the base blue for dark theme --- static/css/master.css | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/static/css/master.css b/static/css/master.css index ac468739d..329b2635d 100644 --- a/static/css/master.css +++ b/static/css/master.css @@ -10,6 +10,7 @@ --link: #0588cb; --link-hover: #0056b3; --pre-bg: #f2f2f2; + --base-blue: #0588cb; } @@ -20,6 +21,7 @@ --link: #0588cb; --link-hover: #0056b3; --pre-bg: #f2f2f2; + --base-blue: #0588cb; } } @@ -30,6 +32,7 @@ --link: #5db8fe; --link-hover: #94d1ff; --pre-bg: #495057; + --base-blue: #056aa6; } } @@ -39,6 +42,7 @@ --link: #0588cb; --link-hover: #0056b3; --pre-bg: #f2f2f2; + --base-blue: #0588cb; } .dark { @@ -47,6 +51,7 @@ --link: #5db8fe; --link-hover: #94d1ff; --pre-bg: #495057; + --base-blue: #056aa6; } /* ================================================================== */ @@ -160,7 +165,9 @@ h2.overlined { font-size: 0.95rem; font-weight: bold; color: #0588cb; + color: var(--base-blue); border-top: 0.2rem solid #0588cb; + border-top: 0.2rem solid var(--base-blue); padding-top: 0.2rem; margin: 0 0 1rem; } @@ -224,11 +231,13 @@ th, td { a.explorer-button { border: 2px solid #ffffff; background-color: #0588cb; + background-color: var(--base-blue); } a.explorer-button:hover { text-decoration: none; color: #0588cb; + color: var(--base-blue); background-color: #ffffff; } @@ -264,8 +273,10 @@ code { font-weight: 600; text-decoration: none; color: #0588cb; + color: var(--base-blue); background-color: white; border: 1px solid #0588cb; + border: 1px solid var(--base-blue); text-align: center; letter-spacing: .5px; cursor: pointer; @@ -275,7 +286,9 @@ code { .ooni-btn:hover { color: white; border: 1px solid #0588cb; + border: 1px solid var(--base-blue); background-color: #0588cb; + background-color: var(--base-blue); } .square-btn { @@ -284,6 +297,7 @@ code { outline: 0; text-decoration: none; background-color: #0588cb; + background-color: var(--base-blue); color: white; text-align: center; letter-spacing: .5px; @@ -384,6 +398,7 @@ table { th { color: #fff; background: #0588CB; + background: var(--base-blue); border-right: 1px dashed #fff; font-size: 1em; font-weight: 500; @@ -454,6 +469,7 @@ nav.navbar { position: relative; z-index: 10; background-color: #0588cb; + background-color: var(--base-blue); color: #fff; padding-bottom: 10px; } @@ -554,6 +570,7 @@ header .wordmark { /* How it works */ .homepage .ooni-explorer { background-color: #0588cb; + background-color: var(--base-blue); color: #fff; margin-bottom: 3.5rem; } @@ -564,6 +581,7 @@ header .wordmark { .blue-bg-section { background-color: #0588cb; + background-color: var(--base-blue); color: #fff; } @@ -607,6 +625,7 @@ h1.article-title { .read-more { color: #0588cb!important; + color: var(--base-blue)!important; } @@ -786,6 +805,7 @@ div.ooni-team-member { width: 100%; height: 20rem; background-color: #0588cb; + background-color: var(--base-blue); margin-top: 0.24rem; } @@ -851,6 +871,7 @@ pre span.lw { .toc .active { font-weight: bold; color: #0588cb; + color: var(--base-blue); } .toc a { @@ -1047,8 +1068,10 @@ p.test-paragraph { .question-container { border: #0588cb solid 1px; + border: var(--base-blue) solid 1px; border-radius: 10px; background: #0588cb; + background: var(--base-blue); transition: .1s; } @@ -1059,6 +1082,7 @@ p.test-paragraph { .question-container:hover { border: #0588cb solid 1px; + border: var(--base-blue) solid 1px; background: white; cursor: pointer; transition: .1s; @@ -1066,6 +1090,7 @@ p.test-paragraph { .question-container:hover > a { color: #0588cb; + color: var(--base-blue); transition: .1s; text-decoration: none; } From 585c805e61549cc2da6735ef6742f48530ae899a Mon Sep 17 00:00:00 2001 From: xhdix Date: Fri, 1 Oct 2021 19:20:34 +0300 Subject: [PATCH 10/27] change pgp key section --- layouts/index.html | 5 +---- static/css/master.css | 9 --------- 2 files changed, 1 insertion(+), 13 deletions(-) diff --git a/layouts/index.html b/layouts/index.html index f985be9f6..fa5b3f5cb 100644 --- a/layouts/index.html +++ b/layouts/index.html @@ -129,10 +129,7 @@

Contact

Contact the OONI team by sending an email to contact@openobservatory.org. Encrypted emails can be sent using the following PGP key:

-

- Key ID: 6B2943F00CB177B7
- Fingerprint: 4C15 DDA9 96C6 C0CF 48BD 3309 6B29 43F0 0CB1 77B7 -

+
🔒 Key ID: 6B2943F00CB177B7
Fingerprint: 4C15 DDA9 96C6 C0CF 48BD 3309 6B29 43F0 0CB1 77B7
diff --git a/static/css/master.css b/static/css/master.css index 329b2635d..0d8b5bb50 100644 --- a/static/css/master.css +++ b/static/css/master.css @@ -770,15 +770,6 @@ div.ooni-team-member { display: block; } -.ooni-team-member .pgp-fingerprint { - word-break: break-all; -} - -.ooni-team-member .pgp-fingerprint:before { - content: "🔒"; - margin-right: 6px; -} - .vertical-align-helper { display: inline-block; height: 100%; From aa03fca3758368771d2ab5f190036da456a06754 Mon Sep 17 00:00:00 2001 From: xhdix Date: Fri, 1 Oct 2021 19:39:51 +0300 Subject: [PATCH 11/27] change feature-container section's color for dark theme --- static/css/master.css | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/static/css/master.css b/static/css/master.css index 0d8b5bb50..7233bb385 100644 --- a/static/css/master.css +++ b/static/css/master.css @@ -11,6 +11,7 @@ --link-hover: #0056b3; --pre-bg: #f2f2f2; --base-blue: #0588cb; + --feature-bg-color: #F1F3F5; } @@ -22,6 +23,7 @@ --link-hover: #0056b3; --pre-bg: #f2f2f2; --base-blue: #0588cb; + --feature-bg-color: #F1F3F5; } } @@ -33,6 +35,7 @@ --link-hover: #94d1ff; --pre-bg: #495057; --base-blue: #056aa6; + --feature-bg-color: #495057; } } @@ -43,6 +46,7 @@ --link-hover: #0056b3; --pre-bg: #f2f2f2; --base-blue: #0588cb; + --feature-bg-color: #F1F3F5; } .dark { @@ -52,6 +56,7 @@ --link-hover: #94d1ff; --pre-bg: #495057; --base-blue: #056aa6; + --feature-bg-color: #495057; } /* ================================================================== */ @@ -992,7 +997,9 @@ a.icon-links img { .feature-container { background-color: #F1F3F5; + background-color: var(--feature-bg-color); color: #000000; + color: var(--body-font-color); z-index: 5; position: relative; } From 79d4e8a486f8e6bae2ba20ecf3b68b813ef14d53 Mon Sep 17 00:00:00 2001 From: xhdix Date: Fri, 1 Oct 2021 20:26:00 +0300 Subject: [PATCH 12/27] add a logo with inverted text color for dark theme --- layouts/install/single.html | 7 +- layouts/section/install.html | 7 +- .../install/OONI-logo-horizontal-inverted.svg | 148 ++++++++++++++++++ .../{index.svg => OONI-logo-horizontal.svg} | 0 4 files changed, 160 insertions(+), 2 deletions(-) create mode 100644 static/install/OONI-logo-horizontal-inverted.svg rename static/install/{index.svg => OONI-logo-horizontal.svg} (100%) diff --git a/layouts/install/single.html b/layouts/install/single.html index 2097f9fd1..dc22e1e6f 100644 --- a/layouts/install/single.html +++ b/layouts/install/single.html @@ -3,7 +3,12 @@
- + + + + OONI logo +

{{ .Params.leadTitle }}

{{ .Params.leadDescription }}

diff --git a/layouts/section/install.html b/layouts/section/install.html index 2a3debfc9..51baf5fcb 100644 --- a/layouts/section/install.html +++ b/layouts/section/install.html @@ -3,7 +3,12 @@
- + + + + OONI logo +

Measure internet censorship

diff --git a/static/install/OONI-logo-horizontal-inverted.svg b/static/install/OONI-logo-horizontal-inverted.svg new file mode 100644 index 000000000..cfbed566f --- /dev/null +++ b/static/install/OONI-logo-horizontal-inverted.svg @@ -0,0 +1,148 @@ + + + + + + + + diff --git a/static/install/index.svg b/static/install/OONI-logo-horizontal.svg similarity index 100% rename from static/install/index.svg rename to static/install/OONI-logo-horizontal.svg From e8033229638eef36e236fa831d76a77109edcfb0 Mon Sep 17 00:00:00 2001 From: xhdix Date: Fri, 1 Oct 2021 20:34:51 +0300 Subject: [PATCH 13/27] change pgp section design in the about page --- layouts/section/about.html | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/layouts/section/about.html b/layouts/section/about.html index 26ec5fe24..d8192558e 100644 --- a/layouts/section/about.html +++ b/layouts/section/about.html @@ -53,12 +53,11 @@

Contact

Encrypted emails can be sent using the following PGP key:

-

-pub 4096R/6B2943F00CB177B7 2016-03-23
-Key fingerprint = 4C15 DDA9 96C6 C0CF 48BD 3309 6B29 43F0 0CB1 77B7
-uid [ultimate] OONI - Open Observatory of Network Interference
-sub 4096R/8EBD2087374399AB 2016-03-23
-

+
🔒 pub  4096R/6B2943F00CB177B7 2016-03-23
+  Key  fingerprint = 4C15 DDA9 96C6 C0CF 48BD  3309 6B29 43F0 0CB1 77B7
+  uid  [ultimate] OONI - Open Observatory of Network Interference
+  sub  4096R/8EBD2087374399AB 2016-03-23
+

For real-time communication, you can reach us on Slack or IRC.

From 27825fbf9e03cd16efdffd0eaaba7e923e79ac23 Mon Sep 17 00:00:00 2001 From: xhdix Date: Fri, 1 Oct 2021 20:54:12 +0300 Subject: [PATCH 14/27] change partner logo box colors only for dark theme --- static/css/master.css | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/static/css/master.css b/static/css/master.css index 7233bb385..d3850a2e4 100644 --- a/static/css/master.css +++ b/static/css/master.css @@ -12,6 +12,7 @@ --pre-bg: #f2f2f2; --base-blue: #0588cb; --feature-bg-color: #F1F3F5; + --partner-logo-color: unset; } @@ -24,6 +25,7 @@ --pre-bg: #f2f2f2; --base-blue: #0588cb; --feature-bg-color: #F1F3F5; + --partner-logo-color: unset; } } @@ -36,6 +38,7 @@ --pre-bg: #495057; --base-blue: #056aa6; --feature-bg-color: #495057; + --partner-logo-color: #dee2e6; } } @@ -47,6 +50,7 @@ --pre-bg: #f2f2f2; --base-blue: #0588cb; --feature-bg-color: #F1F3F5; + --partner-logo-color: unset; } .dark { @@ -57,6 +61,7 @@ --pre-bg: #495057; --base-blue: #056aa6; --feature-bg-color: #495057; + --partner-logo-color: #dee2e6; } /* ================================================================== */ @@ -696,6 +701,8 @@ h1.article-title { bottom: 10px; justify-content: space-between; align-items: center; + background-color: unset; + background-color: var(--partner-logo-color); } .partner-page-logo { @@ -703,6 +710,8 @@ h1.article-title { justify-content: space-between; align-items: center; width: 200px; + background-color: unset; + background-color: var(--partner-logo-color); height: 180px; border: 1px solid rgba(0,0,0,0.2); border-radius: 4px; @@ -725,6 +734,7 @@ h1.article-title { .back-link { font-weight: bold; color: black; + color: var(--body-font-color); } .stat-box { From 1afdb180f7a7baab89419c0ff4434a5ca22494c0 Mon Sep 17 00:00:00 2001 From: xhdix Date: Fri, 1 Oct 2021 21:09:38 +0300 Subject: [PATCH 15/27] having less pure white in buttons for dark theme --- static/css/master.css | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/static/css/master.css b/static/css/master.css index d3850a2e4..b0cb23931 100644 --- a/static/css/master.css +++ b/static/css/master.css @@ -13,6 +13,7 @@ --base-blue: #0588cb; --feature-bg-color: #F1F3F5; --partner-logo-color: unset; + --button-hover-color: #FFF; } @@ -26,6 +27,7 @@ --base-blue: #0588cb; --feature-bg-color: #F1F3F5; --partner-logo-color: unset; + --button-hover-color: #FFF; } } @@ -39,6 +41,7 @@ --base-blue: #056aa6; --feature-bg-color: #495057; --partner-logo-color: #dee2e6; + --button-hover-color: #dee2e6; } } @@ -51,6 +54,7 @@ --base-blue: #0588cb; --feature-bg-color: #F1F3F5; --partner-logo-color: unset; + --button-hover-color: #FFF; } .dark { @@ -62,6 +66,7 @@ --base-blue: #056aa6; --feature-bg-color: #495057; --partner-logo-color: #dee2e6; + --button-hover-color: #dee2e6; } /* ================================================================== */ @@ -240,6 +245,7 @@ th, td { a.explorer-button { border: 2px solid #ffffff; + border: 2px solid var(--button-hover-color); background-color: #0588cb; background-color: var(--base-blue); } @@ -249,6 +255,7 @@ a.explorer-button:hover { color: #0588cb; color: var(--base-blue); background-color: #ffffff; + background-color: var(--button-hover-color); } pre { @@ -1092,6 +1099,7 @@ p.test-paragraph { border: #0588cb solid 1px; border: var(--base-blue) solid 1px; background: white; + background: var(--button-hover-color); cursor: pointer; transition: .1s; } From 2712ec5365c00242b6444706d3446373f25b253c Mon Sep 17 00:00:00 2001 From: xhdix Date: Fri, 1 Oct 2021 21:38:11 +0300 Subject: [PATCH 16/27] undo some color changes --- static/css/master.css | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/static/css/master.css b/static/css/master.css index b0cb23931..37ede2d12 100644 --- a/static/css/master.css +++ b/static/css/master.css @@ -180,9 +180,7 @@ h2.overlined { font-size: 0.95rem; font-weight: bold; color: #0588cb; - color: var(--base-blue); border-top: 0.2rem solid #0588cb; - border-top: 0.2rem solid var(--base-blue); padding-top: 0.2rem; margin: 0 0 1rem; } @@ -642,7 +640,7 @@ h1.article-title { .read-more { color: #0588cb!important; - color: var(--base-blue)!important; + color: var(--link)!important; } From 873f2c9d34a1883c68881a3e4123c729c26e9e8e Mon Sep 17 00:00:00 2001 From: xhdix Date: Fri, 1 Oct 2021 21:52:09 +0300 Subject: [PATCH 17/27] make partner logos visible in the dark theme --- static/css/master.css | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/static/css/master.css b/static/css/master.css index 37ede2d12..c82409c75 100644 --- a/static/css/master.css +++ b/static/css/master.css @@ -695,6 +695,9 @@ h1.article-title { transition: all 350ms ease; align-items: center; justify-content: center; + background-color: unset; + background-color: var(--partner-logo-color); + border-radius: 10px; } .partner-logo { @@ -710,6 +713,18 @@ h1.article-title { background-color: var(--partner-logo-color); } +.partner-box a { + color: #0588cb; +} + +.partner-box a:hover { + color: #0056b3; +} + +.partner-country { + color: #000; +} + .partner-page-logo { display: flex; justify-content: space-between; From e82b6841f4eb63f880f425f76439385d745b7bdc Mon Sep 17 00:00:00 2001 From: xhdix Date: Sat, 2 Oct 2021 00:56:59 +0300 Subject: [PATCH 18/27] add new icons in the data page for dark theme --- layouts/section/data.html | 16 ++++++++++++++-- static/data/ooni-api-inverted.svg | 14 ++++++++++++++ static/data/ooni-api.png | Bin 6939 -> 0 bytes static/data/ooni-api.svg | 14 ++++++++++++++ static/data/ooni-explorer-inverted.svg | 23 +++++++++++++++++++++++ static/data/ooni-explorer.png | Bin 7271 -> 0 bytes static/data/ooni-explorer.svg | 23 +++++++++++++++++++++++ 7 files changed, 88 insertions(+), 2 deletions(-) create mode 100644 static/data/ooni-api-inverted.svg delete mode 100644 static/data/ooni-api.png create mode 100644 static/data/ooni-api.svg create mode 100644 static/data/ooni-explorer-inverted.svg delete mode 100644 static/data/ooni-explorer.png create mode 100644 static/data/ooni-explorer.svg diff --git a/layouts/section/data.html b/layouts/section/data.html index 26992991e..70ceb5ab8 100644 --- a/layouts/section/data.html +++ b/layouts/section/data.html @@ -4,7 +4,12 @@
- + + + + OONI Explorer +

OONI Explorer @@ -14,7 +19,14 @@

- + + + + + OONI API + +

The OONI API enables you to perform your own analysis of OONI data. For batch consumption of OONI data, you can fetch the whole OONI dataset from the + + + + + + + + + + + + + diff --git a/static/data/ooni-api.png b/static/data/ooni-api.png deleted file mode 100644 index 8c03bf37d653ce0c7a6d817ccdd9de4003d37e09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6939 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 + + + + + + + + + + + + + diff --git a/static/data/ooni-explorer-inverted.svg b/static/data/ooni-explorer-inverted.svg new file mode 100644 index 000000000..1bfc06256 --- /dev/null +++ b/static/data/ooni-explorer-inverted.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/data/ooni-explorer.png b/static/data/ooni-explorer.png deleted file mode 100644 index abb8f3015650c97162fb895aca23c528f9495a6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7271 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 + + + + + + + + + + + + + + + + + + + + + + From 684b73acdb7ad1b67a5d8e70d376056604562712 Mon Sep 17 00:00:00 2001 From: xhdix Date: Sat, 2 Oct 2021 01:13:53 +0300 Subject: [PATCH 19/27] change a few colors for dark theme --- static/css/master.css | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/static/css/master.css b/static/css/master.css index c82409c75..d4dc1fc17 100644 --- a/static/css/master.css +++ b/static/css/master.css @@ -11,6 +11,7 @@ --link-hover: #0056b3; --pre-bg: #f2f2f2; --base-blue: #0588cb; + --base-blue-hover: #056aa6; --feature-bg-color: #F1F3F5; --partner-logo-color: unset; --button-hover-color: #FFF; @@ -25,6 +26,7 @@ --link-hover: #0056b3; --pre-bg: #f2f2f2; --base-blue: #0588cb; + --base-blue-hover: #056aa6; --feature-bg-color: #F1F3F5; --partner-logo-color: unset; --button-hover-color: #FFF; @@ -39,6 +41,7 @@ --link-hover: #94d1ff; --pre-bg: #495057; --base-blue: #056aa6; + --base-blue-hover: #0588cb; --feature-bg-color: #495057; --partner-logo-color: #dee2e6; --button-hover-color: #dee2e6; @@ -52,6 +55,7 @@ --link-hover: #0056b3; --pre-bg: #f2f2f2; --base-blue: #0588cb; + --base-blue-hover: #056aa6; --feature-bg-color: #F1F3F5; --partner-logo-color: unset; --button-hover-color: #FFF; @@ -64,6 +68,7 @@ --link-hover: #94d1ff; --pre-bg: #495057; --base-blue: #056aa6; + --base-blue-hover: #0588cb; --feature-bg-color: #495057; --partner-logo-color: #dee2e6; --button-hover-color: #dee2e6; @@ -290,6 +295,7 @@ code { color: #0588cb; color: var(--base-blue); background-color: white; + background-color: var(--body-font-color); border: 1px solid #0588cb; border: 1px solid var(--base-blue); text-align: center; @@ -325,6 +331,7 @@ code { .square-btn:hover { background-color: #056aa6; + background-color: var(--base-blue-hover); text-decoration: none; color: white; } @@ -725,6 +732,11 @@ h1.article-title { color: #000; } +.partner-page-details .partner-country { + color: #000; + color: var(--body-font-color); +} + .partner-page-logo { display: flex; justify-content: space-between; From cbe4e0b39487300e0faeb1e085be52877bf96c39 Mon Sep 17 00:00:00 2001 From: xhdix Date: Sat, 2 Oct 2021 02:07:59 +0300 Subject: [PATCH 20/27] change button color --- static/css/master.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/css/master.css b/static/css/master.css index d4dc1fc17..8624dd7fc 100644 --- a/static/css/master.css +++ b/static/css/master.css @@ -295,7 +295,7 @@ code { color: #0588cb; color: var(--base-blue); background-color: white; - background-color: var(--body-font-color); + background-color: var(--button-hover-color); border: 1px solid #0588cb; border: 1px solid var(--base-blue); text-align: center; From 3d8b6fcf51a1ae0cc8ccf374654d58f3daa7bd5a Mon Sep 17 00:00:00 2001 From: xhdix Date: Tue, 5 Oct 2021 19:49:32 +0300 Subject: [PATCH 21/27] change the background of transparrent images in dark theme --- static/css/master.css | 2 ++ 1 file changed, 2 insertions(+) diff --git a/static/css/master.css b/static/css/master.css index 8624dd7fc..43bd00597 100644 --- a/static/css/master.css +++ b/static/css/master.css @@ -936,6 +936,8 @@ pre span.lw { .blog-post img { max-width: 100%; + background-color: unset; + background-color: var(--partner-logo-color); } .clearfix { From 206e00f37ec95d20f26058ebc4b8c8de6e9a0280 Mon Sep 17 00:00:00 2001 From: xhdix Date: Wed, 6 Oct 2021 03:40:07 +0300 Subject: [PATCH 22/27] move theme switcher to the footer and improve code --- layouts/_default/baseof.html | 17 +++++++---- static/css/master.css | 57 +++++++++++++++++++++++++----------- static/images/auto.svg | 6 ++++ static/images/dark.svg | 5 ++++ static/images/light.svg | 5 ++++ static/js/set-theme.js | 49 +++++++++++++++++++++++++++++++ static/js/toggle-theme.js | 42 -------------------------- 7 files changed, 117 insertions(+), 64 deletions(-) create mode 100644 static/images/auto.svg create mode 100644 static/images/dark.svg create mode 100644 static/images/light.svg create mode 100644 static/js/set-theme.js delete mode 100644 static/js/toggle-theme.js diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html index 3c1e96864..0320ba2a5 100644 --- a/layouts/_default/baseof.html +++ b/layouts/_default/baseof.html @@ -73,10 +73,6 @@

{{end}} {{end}} -
@@ -162,6 +158,17 @@ + @@ -171,7 +178,7 @@ {{ end }} - + {{ block "script" . }} {{ end }} diff --git a/static/css/master.css b/static/css/master.css index 43bd00597..a71785026 100644 --- a/static/css/master.css +++ b/static/css/master.css @@ -166,6 +166,46 @@ footer a:hover { background-image: url('/images/logos/mastodon-brands.png'); } +.footer-theme-buttons { + margin: 0; + padding: 0; +} + +.footer-theme-buttons li { + display: inline-block; + cursor: pointer; + padding: 5px; + margin: 0 10px 0 0; +} + +.footer-theme-buttons li.active { + background-color: var(--base-blue-hover); + border-radius: 15px; +} + +.footer-theme-buttons li span { + display: block; + background-repeat: no-repeat; + height: 20px; + width: 20px; +} + +.footer-theme-buttons li span:hover { + transition: 0.2s; + filter: drop-shadow(2px 4px 6px white); +} + +.footer-theme-buttons li span.lightsvg { + background-image: url('/images/light.svg'); +} + +.footer-theme-buttons li span.darksvg { + background-image: url('/images/dark.svg'); +} + +.footer-theme-buttons li span.autosvg { + background-image: url('/images/auto.svg'); +} /* ================================================================== */ /* Rows */ @@ -535,23 +575,6 @@ nav.navbar { opacity: 1; } -.nav-menu-toggle-theme { - text-align: center; - padding: 5px; - cursor: - pointer; -} - -.nav-menu-toggle-theme svg { - overflow: visible; -} - -.nav-menu-toggle-theme:hover svg path { - transition: 0.2s; - filter: drop-shadow(2px 4px 6px black); - d: path("M 17.207031 0.03125 C 15.089844 0.160156 13.003906 0.648438 11.070312 1.460938 C 10.257812 1.804688 8.734375 2.605469 8.253906 2.949219 C 8.1875 2.988281 7.945312 3.164062 7.707031 3.328125 C 7.195312 3.683594 6.660156 4.101562 6.214844 4.488281 C 5.75 4.894531 5.144531 5.457031 5.078125 5.542969 C 5.046875 5.585938 4.898438 5.75 4.75 5.910156 C 1.25 9.6875 -0.445312 14.78125 0.101562 19.882812 C 0.539062 23.988281 2.378906 27.785156 5.351562 30.710938 C 7.253906 32.578125 9.4375 33.960938 11.972656 34.890625 C 13.136719 35.3125 14.449219 35.644531 15.703125 35.816406 C 16.679688 35.953125 17.164062 35.984375 18.277344 35.984375 C 19.347656 35.984375 19.761719 35.960938 20.59375 35.855469 C 20.839844 35.824219 21.117188 35.792969 21.210938 35.785156 C 21.304688 35.777344 21.554688 35.734375 21.769531 35.6875 C 23.789062 35.238281 24.90625 34.863281 26.414062 34.128906 C 27.519531 33.59375 28.339844 33.101562 29.277344 32.410156 C 30.023438 31.855469 30.089844 31.78125 29.953125 31.644531 C 29.90625 31.597656 29.832031 31.589844 29.289062 31.574219 C 24.304688 31.433594 19.601562 29.214844 16.289062 25.453125 C 12.902344 21.605469 11.375 16.4375 12.132812 11.363281 C 12.753906 7.160156 14.902344 3.335938 18.207031 0.539062 C 18.539062 0.257812 18.535156 0.261719 18.535156 0.164062 C 18.535156 0.0195312 18.472656 0 18.003906 0.00390625 C 17.769531 0.00390625 17.410156 0.0195312 17.207031 0.03125 Z M 17.207031 0.03125"); -} - .nav-menu-install { text-align: center; } diff --git a/static/images/auto.svg b/static/images/auto.svg new file mode 100644 index 000000000..f8577e58e --- /dev/null +++ b/static/images/auto.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/static/images/dark.svg b/static/images/dark.svg new file mode 100644 index 000000000..49a0282e8 --- /dev/null +++ b/static/images/dark.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/static/images/light.svg b/static/images/light.svg new file mode 100644 index 000000000..966a8a39f --- /dev/null +++ b/static/images/light.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/static/js/set-theme.js b/static/js/set-theme.js new file mode 100644 index 000000000..a751a6b35 --- /dev/null +++ b/static/js/set-theme.js @@ -0,0 +1,49 @@ +const themeColor = document.querySelector('meta[name="theme-color"]'); +const colorScheme = document.querySelector('meta[name="color-scheme"]'); +const doc = document.documentElement; +const body = document.body; +const prefersDarkScheme = window.matchMedia("(prefers-color-scheme: dark)"); +const currentTheme = localStorage.getItem("theme"); +const themeButtons = document.querySelectorAll(".footer-theme-buttons li"); +if (currentTheme == "dark") { + if (!prefersDarkScheme.matches) { + doc.classList.toggle("dark"); + } + themeColor.content = getComputedStyle(body).color; + colorScheme.content= "dark"; +} else if (currentTheme == "light") { + if (prefersDarkScheme.matches) { + doc.classList.toggle("light"); + } + themeColor.content = getComputedStyle(body).color; + colorScheme.content= "light"; +} +function setTheme(thisElement, myPrefer = undefined ) { + themeButtons.forEach(function(ele) { + ele.classList.remove("active"); + }); + thisElement.classList.add("active"); + if (myPrefer == 'auto') { + doc.classList.remove("light"); + doc.classList.remove("dark"); + themeColor.content = getComputedStyle(body).color; + colorScheme.content = "light dark"; + localStorage.removeItem("theme"); + } else if (myPrefer == 'light') { + doc.classList.remove("dark"); + if (!doc.classList.contains("light")) { + doc.classList.add("light"); + } + themeColor.content = getComputedStyle(body).color; + colorScheme.content= "light"; + localStorage.setItem("theme", 'light'); + } else if (myPrefer == 'dark') { + doc.classList.remove("light"); + if (!doc.classList.contains("dark")) { + doc.classList.add("dark"); + } + themeColor.content = getComputedStyle(body).color; + colorScheme.content= "dark"; + localStorage.setItem("theme", 'dark'); + } +} \ No newline at end of file diff --git a/static/js/toggle-theme.js b/static/js/toggle-theme.js deleted file mode 100644 index f040a77d8..000000000 --- a/static/js/toggle-theme.js +++ /dev/null @@ -1,42 +0,0 @@ -const themeColor = document.querySelector('meta[name="theme-color"]'); -const colorScheme = document.querySelector('meta[name="color-scheme"]'); -const body = document.body; -// Check for dark mode preference at the OS level -const prefersDarkScheme = window.matchMedia("(prefers-color-scheme: dark)"); -// Get the user's theme preference from local storage, if it's available -const currentTheme = localStorage.getItem("theme"); -// If the user's preference in localStorage is dark... -if (currentTheme == "dark") { - // ...let's toggle the .dark-theme class on the body - if (!prefersDarkScheme.matches) { - document.documentElement.classList.toggle("dark"); - } - themeColor.content = getComputedStyle(body).color; - colorScheme.content= "dark"; -// Otherwise, if the user's preference in localStorage is light... -} else if (currentTheme == "light") { - // ...let's toggle the .light-theme class on the body - if (prefersDarkScheme.matches) { - document.documentElement.classList.toggle("light"); - } - themeColor.content = getComputedStyle(body).color; - colorScheme.content= "light"; -} -function toggletheme() { - if (prefersDarkScheme.matches) { - // ...then toggle the light mode class - document.documentElement.classList.toggle("light"); - themeColor.content = getComputedStyle(body).color; - colorScheme.content= colorScheme.content == "dark" ? "light" : "dark"; - // ...but use .dark-mode if the .light-mode class is already on the body, - var theme = document.documentElement.classList.contains("light") ? "light" : "dark"; - } else { - // Otherwise, let's do the same thing, but for .dark-mode - document.documentElement.classList.toggle("dark"); - themeColor.content = getComputedStyle(body).color; - colorScheme.content= colorScheme.content == "dark" ? "light" : "dark"; - var theme = document.documentElement.classList.contains("dark") ? "dark" : "light"; - } - // Finally, let's save the current preference to localStorage to keep using it - localStorage.setItem("theme", theme); -} \ No newline at end of file From d22c4347da70cb8938893971dd435a14665e53d3 Mon Sep 17 00:00:00 2001 From: xhdix Date: Wed, 6 Oct 2021 04:49:19 +0300 Subject: [PATCH 23/27] switch pictures manually per theme --- static/js/set-theme.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/static/js/set-theme.js b/static/js/set-theme.js index a751a6b35..e0610d380 100644 --- a/static/js/set-theme.js +++ b/static/js/set-theme.js @@ -5,18 +5,34 @@ const body = document.body; const prefersDarkScheme = window.matchMedia("(prefers-color-scheme: dark)"); const currentTheme = localStorage.getItem("theme"); const themeButtons = document.querySelectorAll(".footer-theme-buttons li"); +// This function comes from https://michaelti.ca/sandbox/2020/05/01/dark-mode-images-with-a-manual-toggle-switch/ +function changePicturesTheme(userPrefer='') { + document.querySelectorAll('picture > source[data-user-theme]').forEach(element => { + element.remove(); + }); + if (userPrefer) { + document.querySelectorAll(`picture > source[media*="(prefers-color-scheme: ${userPrefer})"]`).forEach(element => { + const cloned = element.cloneNode(); + cloned.removeAttribute('media'); + cloned.setAttribute('data-user-theme', userPrefer); + element.parentNode.prepend(cloned); + }); + } +}; if (currentTheme == "dark") { if (!prefersDarkScheme.matches) { doc.classList.toggle("dark"); } themeColor.content = getComputedStyle(body).color; colorScheme.content= "dark"; + changePicturesTheme(currentTheme); } else if (currentTheme == "light") { if (prefersDarkScheme.matches) { doc.classList.toggle("light"); } themeColor.content = getComputedStyle(body).color; colorScheme.content= "light"; + changePicturesTheme(currentTheme); } function setTheme(thisElement, myPrefer = undefined ) { themeButtons.forEach(function(ele) { @@ -46,4 +62,5 @@ function setTheme(thisElement, myPrefer = undefined ) { colorScheme.content= "dark"; localStorage.setItem("theme", 'dark'); } + changePicturesTheme(myPrefer); } \ No newline at end of file From f9f6c6cb877d8f6c271924fc82a663df7355eed0 Mon Sep 17 00:00:00 2001 From: xhdix Date: Wed, 6 Oct 2021 04:59:13 +0300 Subject: [PATCH 24/27] refactor the theme switcher code --- layouts/_default/baseof.html | 6 ++--- static/js/set-theme.js | 43 ++++++++++++++++-------------------- 2 files changed, 22 insertions(+), 27 deletions(-) diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html index 0320ba2a5..9f95c33a4 100644 --- a/layouts/_default/baseof.html +++ b/layouts/_default/baseof.html @@ -159,13 +159,13 @@ diff --git a/static/js/set-theme.js b/static/js/set-theme.js index e0610d380..60400bda7 100644 --- a/static/js/set-theme.js +++ b/static/js/set-theme.js @@ -21,46 +21,41 @@ function changePicturesTheme(userPrefer='') { }; if (currentTheme == "dark") { if (!prefersDarkScheme.matches) { - doc.classList.toggle("dark"); + doc.classList.toggle(currentTheme); } - themeColor.content = getComputedStyle(body).color; - colorScheme.content= "dark"; - changePicturesTheme(currentTheme); } else if (currentTheme == "light") { if (prefersDarkScheme.matches) { - doc.classList.toggle("light"); + doc.classList.toggle(currentTheme); } - themeColor.content = getComputedStyle(body).color; - colorScheme.content= "light"; - changePicturesTheme(currentTheme); } -function setTheme(thisElement, myPrefer = undefined ) { +themeColor.content = getComputedStyle(body).color; +colorScheme.content= currentTheme; +changePicturesTheme(currentTheme); +function setTheme(thisElement, userPrefer = undefined ) { themeButtons.forEach(function(ele) { ele.classList.remove("active"); }); thisElement.classList.add("active"); - if (myPrefer == 'auto') { + if (userPrefer == 'auto') { doc.classList.remove("light"); doc.classList.remove("dark"); - themeColor.content = getComputedStyle(body).color; colorScheme.content = "light dark"; localStorage.removeItem("theme"); - } else if (myPrefer == 'light') { + } else if (userPrefer == 'light') { doc.classList.remove("dark"); - if (!doc.classList.contains("light")) { - doc.classList.add("light"); + if (!doc.classList.contains(userPrefer)) { + doc.classList.add(userPrefer); } - themeColor.content = getComputedStyle(body).color; - colorScheme.content= "light"; - localStorage.setItem("theme", 'light'); - } else if (myPrefer == 'dark') { + colorScheme.content= userPrefer; + localStorage.setItem("theme", userPrefer); + } else if (userPrefer == 'dark') { doc.classList.remove("light"); - if (!doc.classList.contains("dark")) { - doc.classList.add("dark"); + if (!doc.classList.contains(userPrefer)) { + doc.classList.add(userPrefer); } - themeColor.content = getComputedStyle(body).color; - colorScheme.content= "dark"; - localStorage.setItem("theme", 'dark'); + colorScheme.content= userPrefer; + localStorage.setItem("theme", userPrefer); } - changePicturesTheme(myPrefer); + themeColor.content = getComputedStyle(body).color; + changePicturesTheme(userPrefer); } \ No newline at end of file From a89f164a67de1fb86e0146c9fbb403c2341f348d Mon Sep 17 00:00:00 2001 From: xhdix Date: Wed, 6 Oct 2021 14:51:29 +0300 Subject: [PATCH 25/27] add background and effect to theme switcher --- layouts/_default/baseof.html | 6 +++--- static/css/master.css | 12 ++++++++---- static/js/set-theme.js | 4 ++++ 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html index 9f95c33a4..cd60d6ed0 100644 --- a/layouts/_default/baseof.html +++ b/layouts/_default/baseof.html @@ -159,13 +159,13 @@ diff --git a/static/css/master.css b/static/css/master.css index a71785026..3b1fc08c9 100644 --- a/static/css/master.css +++ b/static/css/master.css @@ -169,13 +169,17 @@ footer a:hover { .footer-theme-buttons { margin: 0; padding: 0; + background-color: #26292c; + border-radius: 30px; + width: 100px; } .footer-theme-buttons li { display: inline-block; cursor: pointer; padding: 5px; - margin: 0 10px 0 0; + margin: 0; + transition: 300ms; } .footer-theme-buttons li.active { @@ -190,9 +194,9 @@ footer a:hover { width: 20px; } -.footer-theme-buttons li span:hover { - transition: 0.2s; - filter: drop-shadow(2px 4px 6px white); +.footer-theme-buttons li:hover { + background-color: var(--base-blue-hover); + border-radius: 15px; } .footer-theme-buttons li span.lightsvg { diff --git a/static/js/set-theme.js b/static/js/set-theme.js index 60400bda7..9da3bd20e 100644 --- a/static/js/set-theme.js +++ b/static/js/set-theme.js @@ -23,10 +23,14 @@ if (currentTheme == "dark") { if (!prefersDarkScheme.matches) { doc.classList.toggle(currentTheme); } + darkModeBtn.classList.add("active"); } else if (currentTheme == "light") { if (prefersDarkScheme.matches) { doc.classList.toggle(currentTheme); } + lightModeBtn.classList.add("active"); +} else { + autoModeBtn.classList.add("active"); } themeColor.content = getComputedStyle(body).color; colorScheme.content= currentTheme; From 6d09d80b86cfc466af675ac57aadcdbceebbf91b Mon Sep 17 00:00:00 2001 From: xhdix Date: Wed, 6 Oct 2021 16:10:26 +0300 Subject: [PATCH 26/27] set theme color correctly --- layouts/_default/baseof.html | 2 +- static/js/set-theme.js | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html index cd60d6ed0..ba01cb282 100644 --- a/layouts/_default/baseof.html +++ b/layouts/_default/baseof.html @@ -11,7 +11,7 @@ - + {{ partial "opengraph.html" . }} diff --git a/static/js/set-theme.js b/static/js/set-theme.js index 9da3bd20e..8142a467c 100644 --- a/static/js/set-theme.js +++ b/static/js/set-theme.js @@ -1,7 +1,7 @@ const themeColor = document.querySelector('meta[name="theme-color"]'); const colorScheme = document.querySelector('meta[name="color-scheme"]'); const doc = document.documentElement; -const body = document.body; +const nav = document.querySelector("nav.navbar"); const prefersDarkScheme = window.matchMedia("(prefers-color-scheme: dark)"); const currentTheme = localStorage.getItem("theme"); const themeButtons = document.querySelectorAll(".footer-theme-buttons li"); @@ -32,7 +32,7 @@ if (currentTheme == "dark") { } else { autoModeBtn.classList.add("active"); } -themeColor.content = getComputedStyle(body).color; +themeColor.content = getComputedStyle(nav).backgroundColor; colorScheme.content= currentTheme; changePicturesTheme(currentTheme); function setTheme(thisElement, userPrefer = undefined ) { @@ -60,6 +60,6 @@ function setTheme(thisElement, userPrefer = undefined ) { colorScheme.content= userPrefer; localStorage.setItem("theme", userPrefer); } - themeColor.content = getComputedStyle(body).color; + themeColor.content = getComputedStyle(nav).backgroundColor; changePicturesTheme(userPrefer); } \ No newline at end of file From dc26a8cec417fb84806c0ffc662598da92d576ca Mon Sep 17 00:00:00 2001 From: xhdix Date: Mon, 1 Nov 2021 18:58:18 +0300 Subject: [PATCH 27/27] improve: change the icon of auto mode icon from: https://github.com/googlearchive/core-icons/blob/master/device-icons.html license: http://polymer.github.io/LICENSE.txt --- static/images/auto.svg | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/static/images/auto.svg b/static/images/auto.svg index f8577e58e..44e5e668d 100644 --- a/static/images/auto.svg +++ b/static/images/auto.svg @@ -1,6 +1 @@ - - - - - - \ No newline at end of file +