Merge pull request #4 from mattdecamp/v2
Eleventonia version 2 merge to main
This commit is contained in:
commit
0c23be1f8b
31 changed files with 2303 additions and 9208 deletions
17
.eleventy.js
17
.eleventy.js
|
|
@ -1,9 +1,17 @@
|
||||||
// const { DateTime } = require("luxon");
|
// const { DateTime } = require("luxon");
|
||||||
const pluginRss = require("@11ty/eleventy-plugin-rss");
|
const pluginRss = require("@11ty/eleventy-plugin-rss");
|
||||||
const svgSprite = require("eleventy-plugin-svg-sprite");
|
const svgSprite = require("eleventy-plugin-svg-sprite");
|
||||||
const dateFilter = require('./src/filters/dateFilter.js');
|
const dateFilter = require("./src/filters/dateFilter.js");
|
||||||
|
const cleanCSS = require("clean-css");
|
||||||
|
|
||||||
module.exports = function (config) {
|
module.exports = function (config) {
|
||||||
|
config.setServerOptions({
|
||||||
|
// Whether the live reload snippet is used
|
||||||
|
liveReload: true,
|
||||||
|
port: 3456,
|
||||||
|
watch: ["dist/**/*.css"],
|
||||||
|
showAllHosts: true,
|
||||||
|
});
|
||||||
// PASSTHROUGHS
|
// PASSTHROUGHS
|
||||||
config.addPassthroughCopy("src/assets/images/");
|
config.addPassthroughCopy("src/assets/images/");
|
||||||
|
|
||||||
|
|
@ -12,7 +20,12 @@ module.exports = function (config) {
|
||||||
config.addLayoutAlias("post", "layouts/post.njk");
|
config.addLayoutAlias("post", "layouts/post.njk");
|
||||||
|
|
||||||
// FILTERS //
|
// FILTERS //
|
||||||
config.addFilter('dateFilter', dateFilter);
|
// date filter
|
||||||
|
config.addFilter("dateFilter", dateFilter);
|
||||||
|
// clean and inline CSS
|
||||||
|
config.addFilter("cssmin", function (code) {
|
||||||
|
return new cleanCSS({}).minify(code).styles;
|
||||||
|
});
|
||||||
|
|
||||||
// TRANSFORMS //
|
// TRANSFORMS //
|
||||||
// minify HTML
|
// minify HTML
|
||||||
|
|
|
||||||
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -1,4 +1,5 @@
|
||||||
node_modules
|
node_modules
|
||||||
dist
|
dist
|
||||||
.DS_Store
|
.DS_Store
|
||||||
.prettierrc
|
.prettierrc
|
||||||
|
*.css.map
|
||||||
34
README.md
34
README.md
|
|
@ -7,7 +7,8 @@ A mildly opinionated [Eleventy](https://11ty.dev) starter project.
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
* HTML Minification
|
* HTML Minification
|
||||||
* CSS Pipeline (Sass > CleanCSS)
|
* CSS Pipline (SCSS > CleanCSS > Inline)
|
||||||
|
* Eleventy Dev Server
|
||||||
* Eleventy SVG Icon Sprites
|
* Eleventy SVG Icon Sprites
|
||||||
* Eleventy RSS
|
* Eleventy RSS
|
||||||
* Date Formatting Filter
|
* Date Formatting Filter
|
||||||
|
|
@ -24,20 +25,39 @@ npm install
|
||||||
To run the development environment:
|
To run the development environment:
|
||||||
|
|
||||||
```
|
```
|
||||||
npm run eleventy:dev
|
npm run dev
|
||||||
```
|
```
|
||||||
|
|
||||||
To build for production:
|
To build for production:
|
||||||
|
|
||||||
```
|
```
|
||||||
npm run eleventy:prod
|
npm run build
|
||||||
```
|
```
|
||||||
|
|
||||||
For additional eleventy commands, visit the [Eleventy command line usage page](https://www.11ty.dev/docs/usage/).
|
For additional eleventy commands, visit the [Eleventy command line usage page](https://www.11ty.dev/docs/usage/).
|
||||||
|
|
||||||
## Credits and Thanks To
|
## Editing Styles
|
||||||
|
Edit and amend as needed. The main Sass files are under the `/assets` folder.
|
||||||
|
### Sass Folder Structure
|
||||||
|
```
|
||||||
|
src
|
||||||
|
/assets
|
||||||
|
/styles
|
||||||
|
/scss
|
||||||
|
/base
|
||||||
|
/components
|
||||||
|
/utility
|
||||||
|
main.scss
|
||||||
|
```
|
||||||
|
The development environment watches for changes to the Sass files and pushes changes to `main.css` in the `/includes` folder. Eleventy then pushes the styles inline in the `<head>` of the base page template.
|
||||||
|
|
||||||
|
## Prodution Build
|
||||||
|
At build time, all the html files are minified.
|
||||||
|
|
||||||
|
|
||||||
|
## Thanks To
|
||||||
|
|
||||||
* [Zach Leatherman](https://11ty.dev)
|
|
||||||
* [Max Böck](https://github.com/maxboeck/eleventastic)
|
|
||||||
* [Andy Bell](https://github.com/hankchizljaw/hylia)
|
* [Andy Bell](https://github.com/hankchizljaw/hylia)
|
||||||
|
* [Max Böck](https://github.com/maxboeck/eleventastic)
|
||||||
* [Phil Hawksworth](https://github.com/philhawksworth/eleventyone)
|
* [Phil Hawksworth](https://github.com/philhawksworth/eleventyone)
|
||||||
|
* [Zach Leatherman](https://11ty.dev)
|
||||||
|
* [Thomas Semmler](https://helloyes.dev)
|
||||||
|
|
|
||||||
10708
package-lock.json
generated
10708
package-lock.json
generated
File diff suppressed because it is too large
Load diff
26
package.json
26
package.json
|
|
@ -1,21 +1,31 @@
|
||||||
{
|
{
|
||||||
"name": "eleventonia",
|
"name": "eleventonia",
|
||||||
"version": "1.0.0",
|
"version": "2.0.0",
|
||||||
"description": "A mildly opinionated Eleventy starter kit",
|
"description": "A mildly opinionated Eleventy starter kit",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"eleventy:dev": "cross-env ELEVENTY_ENV=development npx @11ty/eleventy --serve",
|
"eleventy:serve": "cross-env ELEVENTY_ENV=development eleventy --serve --quiet",
|
||||||
"eleventy:prod": "cross-env ELEVENTY_ENV=production npx @11ty/eleventy --serve"
|
"eleventy:build": "cross-env ELEVENTY_ENV=production eleventy",
|
||||||
|
"sass:test": "sass src/includes/styles/scss:src/includes/styles",
|
||||||
|
"sass:watch": "sass src/assets/styles/scss:src/includes/styles --watch --color",
|
||||||
|
"sass:build": "sass src/assets/styles/scss:src/assets/styles --no-source-map --style=compressed",
|
||||||
|
"dev": "run-p -l sass:build sass:watch eleventy:serve",
|
||||||
|
"build": "run-s -l eleventy:build sass:build"
|
||||||
|
},
|
||||||
|
"author": {
|
||||||
|
"name": "Matt DeCamp",
|
||||||
|
"email": "matt@mattdecamp.com",
|
||||||
|
"url": "https://mattdecamp.com"
|
||||||
},
|
},
|
||||||
"author": "Matt DeCamp",
|
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@11ty/eleventy": "^0.12.1",
|
"@11ty/eleventy": "^2.0.0",
|
||||||
"@11ty/eleventy-plugin-rss": "^1.1.1",
|
"@11ty/eleventy-plugin-rss": "^1.1.1",
|
||||||
"clean-css": "^5.1.5",
|
"clean-css": "^5.1.5",
|
||||||
"cross-env": "^7.0.3",
|
"cross-env": "^7.0.3",
|
||||||
"eleventy-plugin-svg-sprite": "^1.2.1",
|
"eleventy-plugin-svg-sprite": "^2.4.0",
|
||||||
"html-minifier": "^4.0.0",
|
"html-minifier": "^4.0.0",
|
||||||
"luxon": "^1.28.0",
|
"luxon": "^3.3.0",
|
||||||
"node-sass": "^6.0.1"
|
"npm-run-all": "^4.1.5",
|
||||||
|
"sass": "^1.62.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "",
|
"name": "Eleventonia",
|
||||||
"short_name": "",
|
"short_name": "Eleventonia",
|
||||||
"icons": [
|
"icons": [
|
||||||
{
|
{
|
||||||
"src": "/assets/images/android-chrome-192x192.png",
|
"src": "/assets/images/android-chrome-192x192.png",
|
||||||
|
|
|
||||||
1
src/assets/styles/main.css
Normal file
1
src/assets/styles/main.css
Normal file
File diff suppressed because one or more lines are too long
1
src/assets/styles/scss/main.css
Normal file
1
src/assets/styles/scss/main.css
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -14,7 +14,7 @@ Main Style Sheet
|
||||||
@import "base/fonts";
|
@import "base/fonts";
|
||||||
|
|
||||||
// Component Styles
|
// Component Styles
|
||||||
@import "components/header";
|
@import "components/header";
|
||||||
@import "components/footer";
|
@import "components/footer";
|
||||||
@import "components/nav";
|
@import "components/nav";
|
||||||
@import "components/post-list";
|
@import "components/post-list";
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
:root {
|
:root {
|
||||||
|
--test-var: #909090;
|
||||||
// COLORS
|
// COLORS
|
||||||
--background-color: #ffffff;
|
--background-color: #ffffff;
|
||||||
--background-color-secondary: #301e4e;
|
--background-color-secondary: #301e4e;
|
||||||
|
|
@ -1,70 +0,0 @@
|
||||||
// Based on Max Bock's scripts on eleventastic https://github.com/maxboeck/eleventastic
|
|
||||||
// This runs the CSS file build
|
|
||||||
// Converts Sass and compiles all files defined in main file
|
|
||||||
|
|
||||||
const MAIN_FILE_NAME = "main.scss";
|
|
||||||
|
|
||||||
const path = require("path");
|
|
||||||
const sass = require("node-sass");
|
|
||||||
const CleanCSS = require("clean-css");
|
|
||||||
const isProd = process.env.ELEVENTY_ENV === "production";
|
|
||||||
|
|
||||||
module.exports = class {
|
|
||||||
async data() {
|
|
||||||
const entryPath = path.join(__dirname, `/${MAIN_FILE_NAME}`);
|
|
||||||
return {
|
|
||||||
permalink: "assets/styles/main.css",
|
|
||||||
eleventyExcludeFromCollection: true,
|
|
||||||
entryPath,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
// Compile Sass to CSS
|
|
||||||
// Embed source map in dev
|
|
||||||
async compile(config) {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
if (!isProd) {
|
|
||||||
config.sourceMap = true;
|
|
||||||
config.sourceMapEmbed = true;
|
|
||||||
config.outputStyle = "expanded";
|
|
||||||
}
|
|
||||||
return sass.render(config, (err, result) => {
|
|
||||||
if (err) {
|
|
||||||
return reject(err);
|
|
||||||
}
|
|
||||||
resolve(result.css.toString());
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// Minify/Optimize with CleanCSS in Production
|
|
||||||
async minify(css) {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
if (!isProd) {
|
|
||||||
resolve(css);
|
|
||||||
}
|
|
||||||
const minified = new CleanCSS().minify(css);
|
|
||||||
if (!minified.styles) {
|
|
||||||
return reject(minified.error);
|
|
||||||
}
|
|
||||||
resolve(minified.styles);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
async render({ entryPath }) {
|
|
||||||
try {
|
|
||||||
const css = await this.compile({ file: entryPath });
|
|
||||||
const result = await this.minify(css);
|
|
||||||
return result;
|
|
||||||
} catch (err) {
|
|
||||||
// if things go wrong
|
|
||||||
if (isProd) {
|
|
||||||
// throw and abort in production
|
|
||||||
throw new Error(err);
|
|
||||||
} else {
|
|
||||||
// otherwise display the error overlay
|
|
||||||
console.error(err);
|
|
||||||
const msg = err.formatted || err.message;
|
|
||||||
return this.renderError(msg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
{
|
|
||||||
"title": "{{ site.name }}",
|
|
||||||
"description": "A Mildly Opinionated Eleventy Starter",
|
|
||||||
"url": "",
|
|
||||||
"lang": "en",
|
|
||||||
"locale": "en_us"
|
|
||||||
}
|
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
{
|
{
|
||||||
"name": "Eleventonia",
|
"name": "Eleventonia",
|
||||||
"description": "A mildly opinionated Eleventy starter",
|
"description": "A mildly opinionated Eleventy starter",
|
||||||
"url": "",
|
"url": "https://eleventonia.mattdecamp.com",
|
||||||
|
"locale": "en_us",
|
||||||
"lang": "en",
|
"lang": "en",
|
||||||
"githubUrl": "https://github.com/mattdecamp/eleventonia",
|
"githubUrl": "https://github.com/mattdecamp/eleventonia",
|
||||||
"authorName": "Matt DeCamp",
|
"authorName": "Matt DeCamp",
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,12 @@
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
|
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
|
||||||
<title>{{ title }} | {{ site.name }}</title>
|
<title>{{ title }} | {{ site.name }}</title>
|
||||||
{% include "partials/meta.njk" %}
|
{% include "partials/meta.njk" %}
|
||||||
<link rel="stylesheet" href="{{ '/assets/styles/main.css' | url }}">
|
{% set css %}
|
||||||
|
{% include "styles/main.css" | url %}
|
||||||
|
{% endset %}
|
||||||
|
<style>
|
||||||
|
{{ css | cssmin | safe }}
|
||||||
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="layout">
|
<div id="layout">
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,13 @@
|
||||||
{%- set absolutePageUrl -%}{{ page.url | url | absoluteUrl(meta.url) }}{%- endset -%}
|
|
||||||
{# General #}
|
{# General #}
|
||||||
<meta name="description" content="{{ meta.description }}" />
|
<meta name="description" content="{{ site.description }}" />
|
||||||
<link rel="canonical" href="{{ absolutePageUrl }}" />
|
<link rel="canonical" href="{{ site.url }}" />
|
||||||
{# Open Graph #}
|
{# Open Graph #}
|
||||||
<meta property="og:type" content="website" />
|
<meta property="og:type" content="website" />
|
||||||
<meta property="og:url" content="{{ absolutePageUrl }}" />
|
<meta property="og:url" content="{{ site.url }}" />
|
||||||
<meta property="og:locale" content="{{ meta.locale }}" />
|
<meta property="og:locale" content="{{ site.locale }}" />
|
||||||
<meta property="og:site_name" content="{{ meta.title }}" />
|
<meta property="og:site_name" content="{{ site.name }}" />
|
||||||
<meta property="og:title" content="{{ site.name }} | {{ title }}" />
|
<meta property="og:title" content="{{ site.name }}" />
|
||||||
<meta property="og:description" content="{{ meta.description }}" />
|
<meta property="og:description" content="{{ site.description }}" />
|
||||||
<meta property="og:image:alt" content="Page image for {{ site.name }}" />
|
<meta property="og:image:alt" content="Page image for {{ site.name }}" />
|
||||||
<meta name="twitter:card" content="summary" />
|
<meta name="twitter:card" content="summary" />
|
||||||
{# Favicon #}
|
{# Favicon #}
|
||||||
|
|
@ -22,4 +21,4 @@
|
||||||
<meta name="msapplication-config" content="/assets/images/browserconfig.xml">
|
<meta name="msapplication-config" content="/assets/images/browserconfig.xml">
|
||||||
<meta name="theme-color" content="#ffffff">
|
<meta name="theme-color" content="#ffffff">
|
||||||
{# RSS #}
|
{# RSS #}
|
||||||
<link type="application/atom+xml" rel="alternate" href="{{ meta.url }}/feed.xml" title="{{ meta.title }}">
|
<link type="application/atom+xml" rel="alternate" href="/feed.xml" title="{{ site.name }}">
|
||||||
592
src/includes/styles/main.css
Normal file
592
src/includes/styles/main.css
Normal file
|
|
@ -0,0 +1,592 @@
|
||||||
|
@charset "UTF-8";
|
||||||
|
/*---------------
|
||||||
|
Main Style Sheet
|
||||||
|
----------------*/
|
||||||
|
:root {
|
||||||
|
--test-var: #909090;
|
||||||
|
--background-color: #ffffff;
|
||||||
|
--background-color-secondary: #301e4e;
|
||||||
|
--background-color-tertiary: #ff6e6c;
|
||||||
|
--primary: #1f1135;
|
||||||
|
--secondary: #ff6e6c;
|
||||||
|
--text-primary: #1f1135;
|
||||||
|
--text-secondary: #ffffff;
|
||||||
|
--text-tertiary: #301e4e;
|
||||||
|
--link-color: #301e4e;
|
||||||
|
--tag-color: #301e4e;
|
||||||
|
--button-color: #ff636c;
|
||||||
|
--ratio: 1.2;
|
||||||
|
--s-5: calc(var(--s-4) / var(--ratio));
|
||||||
|
--s-4: calc(var(--s-3) / var(--ratio));
|
||||||
|
--s-3: calc(var(--s-2) / var(--ratio));
|
||||||
|
--s-2: calc(var(--s-1) / var(--ratio));
|
||||||
|
--s-1: calc(var(--s0) / var(--ratio));
|
||||||
|
--s0: 1rem;
|
||||||
|
--s1: calc(var(--s0) * var(--ratio));
|
||||||
|
--s2: calc(var(--s1) * var(--ratio));
|
||||||
|
--s3: calc(var(--s2) * var(--ratio));
|
||||||
|
--s4: calc(var(--s3) * var(--ratio));
|
||||||
|
--s5: calc(var(--s4) * var(--ratio));
|
||||||
|
--max-width: 1000px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Box sizing rules */
|
||||||
|
*,
|
||||||
|
*::before,
|
||||||
|
*::after {
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Remove default margin */
|
||||||
|
body,
|
||||||
|
h1,
|
||||||
|
h2,
|
||||||
|
h3,
|
||||||
|
h4,
|
||||||
|
p,
|
||||||
|
figure,
|
||||||
|
blockquote,
|
||||||
|
dl,
|
||||||
|
dd {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Remove list styles on ul, ol elements with a list role, which suggests default styling will be removed */
|
||||||
|
ul[role=list],
|
||||||
|
ol[role=list] {
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Set core root defaults */
|
||||||
|
html {
|
||||||
|
scroll-behavior: smooth;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Set core body defaults */
|
||||||
|
body {
|
||||||
|
min-height: 100vh;
|
||||||
|
text-rendering: optimizeSpeed;
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* A elements that don't have a class get default styles */
|
||||||
|
a:not([class]) {
|
||||||
|
text-decoration-skip-ink: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Make images easier to work with */
|
||||||
|
img,
|
||||||
|
picture {
|
||||||
|
max-width: 100%;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Inherit fonts for inputs and buttons */
|
||||||
|
input,
|
||||||
|
button,
|
||||||
|
textarea,
|
||||||
|
select {
|
||||||
|
font: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Remove all animations and transitions for people that prefer not to see them */
|
||||||
|
@media (prefers-reduced-motion: reduce) {
|
||||||
|
*,
|
||||||
|
*::before,
|
||||||
|
*::after {
|
||||||
|
animation-duration: 0.01ms !important;
|
||||||
|
animation-iteration-count: 1 !important;
|
||||||
|
transition-duration: 0.01ms !important;
|
||||||
|
scroll-behavior: auto !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*! 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
#layout {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
min-height: 100vh;
|
||||||
|
overflow: hidden;
|
||||||
|
background: linear-gradient(310deg, var(--background-color-tertiary), var(--background-color-tertiary) 20%, var(--background-color) 20%);
|
||||||
|
}
|
||||||
|
|
||||||
|
#main-container {
|
||||||
|
width: 90%;
|
||||||
|
max-width: var(--max-width);
|
||||||
|
margin: 0 auto;
|
||||||
|
padding-bottom: var(--s1);
|
||||||
|
flex: 1 0 auto;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
#main-container main {
|
||||||
|
max-width: 65ch;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
font-size: clamp(var(--s3), 3vw, var(--s4));
|
||||||
|
margin: 0 0 var(--s0);
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
font-size: clamp(var(--s2), 3vw, var(--s3));
|
||||||
|
}
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
font-size: clamp(var(--s1), 3vw, var(--s2));
|
||||||
|
margin: 0 0 var(--s-1);
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
h4 {
|
||||||
|
margin: var(--s-2) 0;
|
||||||
|
font-size: clamp(var(--s-0), 3vw, var(--s1));
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
margin-bottom: var(--s1);
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
margin-top: var(--s0);
|
||||||
|
margin-bottom: var(--s0);
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: var(--link-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
* {
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1, h2, h3, h4, h5, h6 {
|
||||||
|
font-family: "Bitter", "Bookman Old Style", serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
header {
|
||||||
|
min-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#header--container {
|
||||||
|
width: 90%;
|
||||||
|
max-width: var(--max-width);
|
||||||
|
padding: var(--s1) 0;
|
||||||
|
margin: 0 auto;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
align-items: left;
|
||||||
|
color: var(--text-primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
#header--title a {
|
||||||
|
font-size: clamp(var(--s3), 3vw, var(--s4));
|
||||||
|
font-weight: 200;
|
||||||
|
background: linear-gradient(to right, var(--primary), var(--primary) 63%, var(--secondary) 63%);
|
||||||
|
background-clip: text;
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (min-width: 48rem) {
|
||||||
|
#header--container {
|
||||||
|
flex-direction: row;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
footer {
|
||||||
|
width: 100%;
|
||||||
|
max-width: 100vw;
|
||||||
|
background: var(--background-color-secondary);
|
||||||
|
color: var(--text-secondary);
|
||||||
|
}
|
||||||
|
footer a {
|
||||||
|
color: var(--text-secondary);
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
footer a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
#footer--container {
|
||||||
|
width: 90%;
|
||||||
|
max-width: var(--max-width);
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: var(--s2) 0;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav ul {
|
||||||
|
padding: 0;
|
||||||
|
display: block;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
list-style-type: none;
|
||||||
|
gap: var(--s0) var(--s2);
|
||||||
|
font-size: var(--s0);
|
||||||
|
}
|
||||||
|
nav ul li::before {
|
||||||
|
content: "";
|
||||||
|
}
|
||||||
|
nav ul li a {
|
||||||
|
color: var(--text-primary);
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
nav ul li a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav--active {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (min-width: 48rem) {
|
||||||
|
nav ul {
|
||||||
|
font-size: var(--s1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#posts--list article {
|
||||||
|
margin-bottom: var(--s2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.post--time {
|
||||||
|
font-size: clamp(var(--s-1), 3vw, var(--s0));
|
||||||
|
font-weight: 200;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tags--container {
|
||||||
|
padding: var(--s-1) 0;
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: var(--s0);
|
||||||
|
}
|
||||||
|
|
||||||
|
.tag a {
|
||||||
|
padding: var(--s-2) var(--s-1);
|
||||||
|
color: var(--text-secondary);
|
||||||
|
text-decoration: none;
|
||||||
|
background: var(--background-color-secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon {
|
||||||
|
fill: var(--text-secondary);
|
||||||
|
width: var(--s2);
|
||||||
|
height: var(--s2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*# sourceMappingURL=main.css.map */
|
||||||
|
|
@ -3,4 +3,7 @@ permalink: robots.txt
|
||||||
eleventyExcludeFromCollections: true
|
eleventyExcludeFromCollections: true
|
||||||
---
|
---
|
||||||
|
|
||||||
Sitemap: {{ site.url }}/sitemap.xml
|
Sitemap: {{ site.url }}/sitemap.xml
|
||||||
|
|
||||||
|
User-agent: *
|
||||||
|
Disallow:
|
||||||
13
src/sitemap.njk
Normal file
13
src/sitemap.njk
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
---
|
||||||
|
permalink: /sitemap.xml
|
||||||
|
eleventyExcludeFromCollections: true
|
||||||
|
---
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||||
|
{% for page in collections.all %}
|
||||||
|
<url>
|
||||||
|
<loc>{{ site.url }}{{ page.url | url }}</loc>
|
||||||
|
<lastmod>{{ page.date.toISOString() }}</lastmod>
|
||||||
|
</url>
|
||||||
|
{% endfor %}
|
||||||
|
</urlset>
|
||||||
Loading…
Reference in a new issue