feat: follow user OS theme with JS disabled (#357)

This commit is contained in:
Óscar
2024-07-24 19:14:57 +02:00
committed by GitHub
parent 5db006ac47
commit c7b79552c4
8 changed files with 70 additions and 38 deletions

View File

@@ -46,7 +46,46 @@
font-display: swap;
}
@mixin theme-variables($theme) {
@if $theme =='light' {
--background-color: white;
--bg-0: #f0f0f0;
--bg-1: #e7e7e7;
--bg-2: #fefefe;
--bg-3: #d8dcdd;
--hover-color: white;
--primary-color: #087E96;
--divider-color: #d7d7d7;
--text-color: #222226;
--text-color-high-contrast: #313333;
--meta-color: #5b5b65;
--codeblock-bg: #26232e;
--codeblock-highlight: #383444;
--theme-switcher-svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M283.211 512c78.962 0 151.079-35.925 198.857-94.792 7.068-8.708-.639-21.43-11.562-19.35-124.203 23.654-238.262-71.576-238.262-196.954 0-72.222 38.662-138.635 101.498-174.394 9.686-5.512 7.25-20.197-3.756-22.23A258.156 258.156 0 0 0 283.211 0c-141.309 0-256 114.511-256 256 0 141.309 114.511 256 256 256z'/%3E%3C/svg%3E%0A");
color-scheme: light;
}
@else {
--background-color: #1f1f1f;
--bg-0: #2f2f2f;
--bg-1: #3c3c3c;
--bg-2: #171717;
--bg-3: #535555;
--hover-color: black;
--primary-color: #91e0ee;
--divider-color: #4a4a4a;
--text-color: #D4D4D4;
--text-color-high-contrast: #eceeef;
--meta-color: #B0B0B0;
--codeblock-bg: #19181e;
--codeblock-highlight: #282834;
--theme-switcher-svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 96 960 960' %3E%3Cpath d='M480 776q-83 0-141.5-58.5T280 576q0-83 58.5-141.5T480 376q83 0 141.5 58.5T680 576q0 83-58.5 141.5T480 776ZM80 616q-17 0-28.5-11.5T40 576q0-17 11.5-28.5T80 536h80q17 0 28.5 11.5T200 576q0 17-11.5 28.5T160 616H80Zm720 0q-17 0-28.5-11.5T760 576q0-17 11.5-28.5T800 536h80q17 0 28.5 11.5T920 576q0 17-11.5 28.5T880 616h-80ZM480 296q-17 0-28.5-11.5T440 256v-80q0-17 11.5-28.5T480 136q17 0 28.5 11.5T520 176v80q0 17-11.5 28.5T480 296Zm0 720q-17 0-28.5-11.5T440 976v-80q0-17 11.5-28.5T480 856q17 0 28.5 11.5T520 896v80q0 17-11.5 28.5T480 1016ZM226 378l-43-42q-12-11-11.5-28t11.5-29q12-12 29-12t28 12l42 43q11 12 11 28t-11 28q-11 12-27.5 11.5T226 378Zm494 495-42-43q-11-12-11-28.5t11-27.5q11-12 27.5-11.5T734 774l43 42q12 11 11.5 28T777 873q-12 12-29 12t-28-12Zm-42-495q-12-11-11.5-27.5T678 322l42-43q11-12 28-11.5t29 11.5q12 12 12 29t-12 28l-43 42q-12 11-28 11t-28-11ZM183 873q-12-12-12-29t12-28l43-42q12-11 28.5-11t27.5 11q12 11 11.5 27.5T282 830l-42 43q-11 12-28 11.5T183 873Z'/%3E%3C/svg%3E");
color-scheme: dark;
}
}
:root {
@include theme-variables('light');
--max-layout-width: 1000px;
--normal-layout-width: 600px;
@@ -58,45 +97,12 @@
--serif-font: 'Source Serif', 'Georgia', serif;
--code-font: 'Cascadia Code';
--background-color: white;
--bg-0: #f0f0f0;
--bg-1: #e7e7e7;
--bg-2: #fefefe;
--bg-3: #d8dcdd;
--hover-color: white;
--primary-color: #087E96;
--divider-color: #d7d7d7;
--text-color: #222226;
--text-color-high-contrast: #313333;
--meta-color: #5b5b65;
--codeblock-bg: #26232e;
--codeblock-highlight: #383444;
--theme-switcher-svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M283.211 512c78.962 0 151.079-35.925 198.857-94.792 7.068-8.708-.639-21.43-11.562-19.35-124.203 23.654-238.262-71.576-238.262-196.954 0-72.222 38.662-138.635 101.498-174.394 9.686-5.512 7.25-20.197-3.756-22.23A258.156 258.156 0 0 0 283.211 0c-141.309 0-256 114.511-256 256 0 141.309 114.511 256 256 256z'/%3E%3C/svg%3E%0A");
color-scheme: light;
line-height: 190%;
font-family: var(--sans-serif-font);
}
[data-theme='dark'] {
--background-color: #1f1f1f;
--bg-0: #2f2f2f;
--bg-1: #3c3c3c;
--bg-2: #171717;
--bg-3: #535555;
--hover-color: black;
--primary-color: #91e0ee;
--divider-color: #4a4a4a;
--text-color: #D4D4D4;
--text-color-high-contrast: #eceeef;
--meta-color: #B0B0B0;
--codeblock-bg: #19181e;
--codeblock-highlight: #282834;
--theme-switcher-svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 96 960 960' %3E%3Cpath d='M480 776q-83 0-141.5-58.5T280 576q0-83 58.5-141.5T480 376q83 0 141.5 58.5T680 576q0 83-58.5 141.5T480 776ZM80 616q-17 0-28.5-11.5T40 576q0-17 11.5-28.5T80 536h80q17 0 28.5 11.5T200 576q0 17-11.5 28.5T160 616H80Zm720 0q-17 0-28.5-11.5T760 576q0-17 11.5-28.5T800 536h80q17 0 28.5 11.5T920 576q0 17-11.5 28.5T880 616h-80ZM480 296q-17 0-28.5-11.5T440 256v-80q0-17 11.5-28.5T480 136q17 0 28.5 11.5T520 176v80q0 17-11.5 28.5T480 296Zm0 720q-17 0-28.5-11.5T440 976v-80q0-17 11.5-28.5T480 856q17 0 28.5 11.5T520 896v80q0 17-11.5 28.5T480 1016ZM226 378l-43-42q-12-11-11.5-28t11.5-29q12-12 29-12t28 12l42 43q11 12 11 28t-11 28q-11 12-27.5 11.5T226 378Zm494 495-42-43q-11-12-11-28.5t11-27.5q11-12 27.5-11.5T734 774l43 42q12 11 11.5 28T777 873q-12 12-29 12t-28-12Zm-42-495q-12-11-11.5-27.5T678 322l42-43q11-12 28-11.5t29 11.5q12 12 12 29t-12 28l-43 42q-12 11-28 11t-28-11ZM183 873q-12-12-12-29t12-28l43-42q12-11 28.5-11t27.5 11q12 11 11.5 27.5T282 830l-42 43q-11 12-28 11.5T183 873Z'/%3E%3C/svg%3E");
color-scheme: dark;
@include theme-variables('dark');
.invertible-image {
filter: invert(.88);
@@ -107,6 +113,20 @@
}
}
@media (prefers-color-scheme: dark) {
:root:not([data-theme='light']) {
@include theme-variables('dark');
.invertible-image {
filter: invert(.88);
}
.dimmable-image {
filter: brightness(.8) contrast(1.2);
}
}
}
html {
background-color: var(--background-color);
color: var(--text-color);