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 pluginRss = require("@11ty/eleventy-plugin-rss");
|
||||
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) {
|
||||
config.setServerOptions({
|
||||
// Whether the live reload snippet is used
|
||||
liveReload: true,
|
||||
port: 3456,
|
||||
watch: ["dist/**/*.css"],
|
||||
showAllHosts: true,
|
||||
});
|
||||
// PASSTHROUGHS
|
||||
config.addPassthroughCopy("src/assets/images/");
|
||||
|
||||
|
|
@ -12,7 +20,12 @@ module.exports = function (config) {
|
|||
config.addLayoutAlias("post", "layouts/post.njk");
|
||||
|
||||
// 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 //
|
||||
// minify HTML
|
||||
|
|
|
|||
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -2,3 +2,4 @@ node_modules
|
|||
dist
|
||||
.DS_Store
|
||||
.prettierrc
|
||||
*.css.map
|
||||
34
README.md
34
README.md
|
|
@ -7,7 +7,8 @@ A mildly opinionated [Eleventy](https://11ty.dev) starter project.
|
|||
## Features
|
||||
|
||||
* HTML Minification
|
||||
* CSS Pipeline (Sass > CleanCSS)
|
||||
* CSS Pipline (SCSS > CleanCSS > Inline)
|
||||
* Eleventy Dev Server
|
||||
* Eleventy SVG Icon Sprites
|
||||
* Eleventy RSS
|
||||
* Date Formatting Filter
|
||||
|
|
@ -24,20 +25,39 @@ npm install
|
|||
To run the development environment:
|
||||
|
||||
```
|
||||
npm run eleventy:dev
|
||||
npm run dev
|
||||
```
|
||||
|
||||
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/).
|
||||
|
||||
## 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)
|
||||
* [Max Böck](https://github.com/maxboeck/eleventastic)
|
||||
* [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",
|
||||
"version": "1.0.0",
|
||||
"version": "2.0.0",
|
||||
"description": "A mildly opinionated Eleventy starter kit",
|
||||
"scripts": {
|
||||
"eleventy:dev": "cross-env ELEVENTY_ENV=development npx @11ty/eleventy --serve",
|
||||
"eleventy:prod": "cross-env ELEVENTY_ENV=production npx @11ty/eleventy --serve"
|
||||
"eleventy:serve": "cross-env ELEVENTY_ENV=development eleventy --serve --quiet",
|
||||
"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",
|
||||
"dependencies": {
|
||||
"@11ty/eleventy": "^0.12.1",
|
||||
"@11ty/eleventy": "^2.0.0",
|
||||
"@11ty/eleventy-plugin-rss": "^1.1.1",
|
||||
"clean-css": "^5.1.5",
|
||||
"cross-env": "^7.0.3",
|
||||
"eleventy-plugin-svg-sprite": "^1.2.1",
|
||||
"eleventy-plugin-svg-sprite": "^2.4.0",
|
||||
"html-minifier": "^4.0.0",
|
||||
"luxon": "^1.28.0",
|
||||
"node-sass": "^6.0.1"
|
||||
"luxon": "^3.3.0",
|
||||
"npm-run-all": "^4.1.5",
|
||||
"sass": "^1.62.1"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "",
|
||||
"short_name": "",
|
||||
"name": "Eleventonia",
|
||||
"short_name": "Eleventonia",
|
||||
"icons": [
|
||||
{
|
||||
"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
|
|
@ -1,4 +1,5 @@
|
|||
:root {
|
||||
--test-var: #909090;
|
||||
// COLORS
|
||||
--background-color: #ffffff;
|
||||
--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",
|
||||
"description": "A mildly opinionated Eleventy starter",
|
||||
"url": "",
|
||||
"url": "https://eleventonia.mattdecamp.com",
|
||||
"locale": "en_us",
|
||||
"lang": "en",
|
||||
"githubUrl": "https://github.com/mattdecamp/eleventonia",
|
||||
"authorName": "Matt DeCamp",
|
||||
|
|
|
|||
|
|
@ -5,7 +5,12 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
|
||||
<title>{{ title }} | {{ site.name }}</title>
|
||||
{% 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>
|
||||
<body>
|
||||
<div id="layout">
|
||||
|
|
|
|||
|
|
@ -1,14 +1,13 @@
|
|||
{%- set absolutePageUrl -%}{{ page.url | url | absoluteUrl(meta.url) }}{%- endset -%}
|
||||
{# General #}
|
||||
<meta name="description" content="{{ meta.description }}" />
|
||||
<link rel="canonical" href="{{ absolutePageUrl }}" />
|
||||
<meta name="description" content="{{ site.description }}" />
|
||||
<link rel="canonical" href="{{ site.url }}" />
|
||||
{# Open Graph #}
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="{{ absolutePageUrl }}" />
|
||||
<meta property="og:locale" content="{{ meta.locale }}" />
|
||||
<meta property="og:site_name" content="{{ meta.title }}" />
|
||||
<meta property="og:title" content="{{ site.name }} | {{ title }}" />
|
||||
<meta property="og:description" content="{{ meta.description }}" />
|
||||
<meta property="og:url" content="{{ site.url }}" />
|
||||
<meta property="og:locale" content="{{ site.locale }}" />
|
||||
<meta property="og:site_name" content="{{ site.name }}" />
|
||||
<meta property="og:title" content="{{ site.name }}" />
|
||||
<meta property="og:description" content="{{ site.description }}" />
|
||||
<meta property="og:image:alt" content="Page image for {{ site.name }}" />
|
||||
<meta name="twitter:card" content="summary" />
|
||||
{# Favicon #}
|
||||
|
|
@ -22,4 +21,4 @@
|
|||
<meta name="msapplication-config" content="/assets/images/browserconfig.xml">
|
||||
<meta name="theme-color" content="#ffffff">
|
||||
{# 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 */
|
||||
|
|
@ -4,3 +4,6 @@ eleventyExcludeFromCollections: true
|
|||
---
|
||||
|
||||
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