Compare commits

..

3 Commits

Author SHA1 Message Date
Shadowfacts 5ba89e0ed2
Add automatic theme switching 2019-06-28 16:06:49 -04:00
Shadowfacts 45c4395729
Tweak article divider color 2019-06-28 15:31:38 -04:00
Shadowfacts 59e7fe74ec
Header/footer style tweaks 2019-06-28 15:28:00 -04:00
6 changed files with 73 additions and 36 deletions

View File

@ -20,12 +20,19 @@ async function generate(theme: string) {
let sass = (await fs.readFile(filename)).toString();
sass = util.render(sass, {}, filename);
const result = await renderSass(sass);
let css = (await renderSass(sass)).css.toString();
css += "\n";
let mainSass = (await fs.readFile("site/css/main.scss")).toString();
mainSass = util.render(mainSass, {}, "site/css/main.scss");
css += (await renderSass(mainSass)).css.toString();
util.write(`css/${theme}.css`, result.css);
util.write(`css/${theme}.css`, css);
}
export default async function css() {
await generate("light");
await generate("dark");
await generate("auto");
require("fs").watch("site/css/", css);
}

5
site/css/auto.scss Normal file
View File

@ -0,0 +1,5 @@
<%- include("light.scss"); %>
@media (prefers-color-scheme: dark) {
<%- include("dark.scss"); %>
}

View File

@ -20,6 +20,4 @@
--atom-hue-5-2: #be5046;
--atom-hue-6: #d19a66;
--atom-hue-6-2: #e6c07b;
}
<%- include("main.scss") %>
}

View File

@ -20,6 +20,4 @@
--atom-hue-5-2: #c91243;
--atom-hue-6: #986801;
--atom-hue-6-2: #c18401;
}
<%- include("main.scss") %>
}

View File

@ -47,7 +47,7 @@ article {
content: "";
width: calc(100% - 2 * 30px); // account for .container padding, don't overflow
height: 1px;
background-image: linear-gradient(to right, var(--secondary-ui-text-color), var(--shadow-color));
background-image: linear-gradient(to right, var(--accent-color), var(--shadow-color));
position: absolute;
}
@ -236,17 +236,20 @@ figure {
// Header
.site-header {
padding: 20px 0;
padding-top: 20px;
padding-bottom: 20px;
background-color: var(--ui-background-color);
font-size: 16px;
box-shadow: 0 10px 15px var(--shadow-color);
.container {
> div {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: flex-end;
flex-wrap: wrap;
padding-bottom: 10px;
border-bottom: 3px solid var(--accent-color);
}
.site-title {
@ -278,7 +281,7 @@ figure {
}
a.dropdown-link {
color: black;
color: var(--ui-text-color);
text-decoration: none;
.arrow-down {
@ -302,7 +305,7 @@ figure {
right: -1em;
display: none;
padding: 1em;
background-color: white;
background-color: var(--ui-background-color);
box-shadow: 0 10px 15px -5px var(--shadow-color), // bottom
10px 0 15px -5px var(--shadow-color), // right
-10px 0 15px -5px var(--shadow-color); // left
@ -334,17 +337,20 @@ figure {
// Footer
.site-footer {
padding: 20px 0;
padding-top: 20px;
padding-bottom: 20px;
background-color: var(--ui-background-color);
font-size: 16px;
box-shadow: 0 -10px 15px var(--shadow-color);
.container {
> div {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: flex-start;
flex-wrap: wrap;
padding-top: 10px;
border-top: 3px solid var(--accent-color);
}
.site-title {
@ -353,6 +359,27 @@ figure {
font-size: 1.5em;
}
.ui-controls {
input {
display: none;
}
label {
color: var(--accent-color);
text-decoration: underline;
&:hover {
cursor: pointer;
}
}
input:checked + label {
color: var(--ui-text-color);
text-decoration: none;
font-weight: bold;
&:hover {
cursor: default;
}
}
}
.social-links ul {
padding: 0;
margin: 0;

View File

@ -31,21 +31,17 @@
<script>
(() => {
let theme = localStorage.getItem("theme");
if (theme !== "light" && theme !== "dark") {
theme = "light";
localStorage.setItem("theme", theme);
}
const theme = localStorage.getItem("theme") || "auto";
document.write(`<link rel="stylesheet" href="/css/${theme}.css">`);
})();
</script>
<noscript>
<link rel="stylesheet" href="/css/light.css">
<link rel="stylesheet" href="/css/auto.css">
</noscript>
</head>
<body itemscope itemtype="https://schema.org/Blog">
<header class="site-header">
<div class="container">
<header class="site-header container">
<div>
<div>
<h1 class="site-title"><%- fancyLink("Shadowfacts", "/") %></h1>
<p class="site-description">The outper part of a shadow is called the penumbra.</p>
@ -72,13 +68,18 @@
<%- content %>
</div>
<footer class="site-footer">
<div class="container">
<footer class="site-footer container">
<div>
<div>
<h2 class="site-title">Shadowfacts</h2>
<p class="ui-controls">
<label for="dark-theme">Dark Theme: </label>
<input type="checkbox" name="" id="dark-theme">
Theme:
<input type="radio" name="theme" id="auto" value="auto">
<label for="auto">auto</label>
<input type="radio" name="theme" id="light" value="light">
<label for="light">light</label>
<input type="radio" name="theme" id="dark" value="dark">
<label for="dark">dark</label>
</p>
</div>
<nav class="social-links">
@ -94,13 +95,14 @@
<script>
(() => {
const el = document.getElementById("dark-theme");
el.checked = localStorage.getItem("theme") === "dark";
el.onclick = function() {
const theme = this.checked ? "dark" : "light";
localStorage.setItem("theme", theme);
window.location.reload();
};
const theme = localStorage.getItem("theme") || "auto";
document.getElementsByName("theme").forEach((el) => {
el.checked = theme === el.value;
el.onchange = () => {
localStorage.setItem("theme", el.value);
window.location.reload();
};
});
})();
</script>
<noscript>