diff --git a/_includes/head-content.njk b/_includes/head-content.njk deleted file mode 100644 index 6e10397..0000000 --- a/_includes/head-content.njk +++ /dev/null @@ -1,29 +0,0 @@ - - - -{{ title or metadata.title }} - -{# #} - - - - - - - - -{# Fonts #} - - - - -{# Icons #} - - -{# Styles #} - - - - - - diff --git a/_includes/layouts/base-no-anchors.njk b/_includes/layouts/base-no-anchors.njk deleted file mode 100644 index dd5d9d2..0000000 --- a/_includes/layouts/base-no-anchors.njk +++ /dev/null @@ -1,13 +0,0 @@ - - - {% include "head-content.njk" %} - - - {% include "header.njk" %} - -
- {{ content | safe }} -
- - {% include "footer.njk" %} - diff --git a/_includes/layouts/base.njk b/_includes/layouts/base.njk index dd5d9d2..2bd9326 100644 --- a/_includes/layouts/base.njk +++ b/_includes/layouts/base.njk @@ -1,12 +1,47 @@ - {% include "head-content.njk" %} + + + + {{ title or metadata.title }} + + {# #} + + + + + + + + + {# Fonts #} + + + + + {# Icons #} + + + {# Styles #} + + + + + + + + {# Heading anchors #} + {% include "header.njk" %}
- {{ content | safe }} + + {{ content | safe }} + +
+
{% include "footer.njk" %} diff --git a/_includes/pagination.njk b/_includes/pagination.njk new file mode 100644 index 0000000..702aec8 --- /dev/null +++ b/_includes/pagination.njk @@ -0,0 +1,20 @@ +{% if olderHref or newerHref %} + +{% endif %} diff --git a/_includes/postlist.njk b/_includes/postlist.njk index 4d542a9..b9e04bc 100644 --- a/_includes/postlist.njk +++ b/_includes/postlist.njk @@ -14,4 +14,4 @@ {% endfor %} -
    +
diff --git a/css/nav.css b/css/nav.css index aa3f869..d2a548b 100644 --- a/css/nav.css +++ b/css/nav.css @@ -8,8 +8,9 @@ header { z-index: 10; } -/* Header links */ -header a { +/* Header links, pagination links */ +header a, +.pagination a { border-radius: 1rem; border: .125rem solid var(--color-pink); color: var(--color-pink); @@ -17,7 +18,6 @@ header a { padding: 0 .25rem; box-shadow: .15rem .15rem var(--color-shadow); font-size: 1.2rem; - padding-right: .35rem; /* Click animation handling */ position: relative; top: 0; @@ -25,7 +25,17 @@ header a { transition: top .05s ease-in, left .05s ease-in; } -header a:focus-visible { +header a, +.pagination .older a { + padding-right: .35rem; +} + +.pagination .newer a { + padding-left: .35rem; +} + +header a:focus-visible, +.pagination a:focus-visible { color: var(--color-bg); border-color: var(--color-pink); background-color: var(--color-pink); @@ -33,7 +43,8 @@ header a:focus-visible { } @media (any-hover: hover) { - header a:hover { + header a:hover, + .pagination a:hover { color: var(--color-bg); border-color: var(--color-pink); background-color: var(--color-pink); @@ -41,13 +52,15 @@ header a:focus-visible { } @media (forced-colors: active) { - .site-header a:focus-visible { + header a:focus-visible, + .pagination a:focus-visible { outline-offset: .125rem; outline: .125rem solid; } @media (any-hover: hover) { - .site-header a:hover { + header a:hover, + .pagination a:hover { outline-offset: .125rem; outline: .125rem solid; } @@ -55,7 +68,8 @@ header a:focus-visible { } /* Click animation */ -header a:active { +header a:active, +.pagination a:active { top: .1rem; left: .1rem; box-shadow: .05rem .05rem var(--color-shadow); @@ -81,9 +95,13 @@ header a[aria-current="page"]:focus-visible { } } -/* Header link icons */ -header i { +/* Header link icons, pagination icons */ +header i, +.pagination i { color: var(--color-teal); +} + +header i { padding-left: .25rem; } @@ -92,13 +110,15 @@ header a[aria-current="page"] i { } header a:focus-visible i, -a[aria-current="page"] a:focus-visible i { +a[aria-current="page"] a:focus-visible i, +.pagination a:focus-visible :in-range { color: var(--color-bg); } @media (any-hover: hover) { header a:hover i, - header a[aria-current="page"]:hover i { + header a[aria-current="page"]:hover i, + .pagination a:hover i { color: var(--color-bg); } } @@ -194,3 +214,25 @@ footer a { footer a:focus-visible { outline-color: var(--color-pink); } + +/* Pagination */ +.pagination { + display: grid; + grid-template-columns: repeat(2, 1fr); + grid-template-areas: "older newer"; + list-style: none; +} + +.pagination, +.pagination li { + margin: 0; +} + +.pagination .older { + grid-area: older; +} + +.pagination .newer { + grid-area: newer; + text-align: right; +} diff --git a/eleventy.config.js b/eleventy.config.js index 4e3975e..135cae4 100644 --- a/eleventy.config.js +++ b/eleventy.config.js @@ -15,13 +15,16 @@ export default async function(eleventyConfig) { /* Tag pagination */ eleventyConfig.addCollection("tagPagination", function(collection) { let tagSet = new Set(collection.getAllSorted().flatMap((post) => post.data.tags || [])); + tagSet = tagSet.difference(new Set(["posts", "gallery", "reference"])); let paginationSize = 13; let tagMap = []; let tagArray = [...tagSet]; + for( let tagName of tagArray) { let tagItems = collection.getFilteredByTag(tagName); let pagedItems = chunk(tagItems.reverse(), paginationSize); // console.log( tagName, tagItems.length, pagedItems.length ); + for( let pageNumber = 0, max = pagedItems.length; pageNumber < max; pageNumber++) { tagMap.push({ tagName: tagName, @@ -32,7 +35,6 @@ export default async function(eleventyConfig) { } } - //console.log( tagMap ); return tagMap; }); diff --git a/package-lock.json b/package-lock.json index b97177c..03149da 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,7 @@ "@11ty/eleventy-plugin-rss": "^2.0.4", "@11ty/eleventy-plugin-syntaxhighlight": "^5.0.2", "@mdit/plugin-attrs": "^0.24.2", + "@zachleat/heading-anchors": "^1.0.5", "lodash-es": "^4.17.23", "luxon": "^3.7.2" } @@ -796,6 +797,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@zachleat/heading-anchors": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@zachleat/heading-anchors/-/heading-anchors-1.0.5.tgz", + "integrity": "sha512-hsAljmm6py9VEf6ToKGyQJweemQJM4bI75TTTbwRYIrasCm66ajJDhWYpgZJM1B+8KSop371RDhDASYl3Q4y9g==", + "dev": true, + "license": "MIT" + }, "node_modules/a-sync-waterfall": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz", diff --git a/package.json b/package.json index 7349b66..aade67e 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "@11ty/eleventy-plugin-rss": "^2.0.4", "@11ty/eleventy-plugin-syntaxhighlight": "^5.0.2", "@mdit/plugin-attrs": "^0.24.2", + "@zachleat/heading-anchors": "^1.0.5", "lodash-es": "^4.17.23", "luxon": "^3.7.2" } diff --git a/src/index.njk b/src/index.njk index 1f45845..dfea458 100644 --- a/src/index.njk +++ b/src/index.njk @@ -12,3 +12,8 @@ title: home layout: page.njk --- {% include "postlist.njk" %} + +{# idk why these are backwards either #} +{% set newerHref = pagination.href.previous %} +{% set olderHref = pagination.href.next %} +{% include "pagination.njk" %} diff --git a/src/meta/feed.xml b/src/meta/feed.xml deleted file mode 100644 index 8fc6af9..0000000 --- a/src/meta/feed.xml +++ /dev/null @@ -1,26 +0,0 @@ ---- -permalink: feed.xml -eleventyExcludeFromCollections: true ---- - - - {{ metadata.title }} - {{ metadata.description }} - - - {{ collections.posts | getNewestCollectionItemDate | dateToRfc3339 }} - {{ metadata.base | addPathPrefixToFullUrl }} - - {{ metadata.author.name }} - - {%- for post in collections.posts | reverse %} - {%- set absolutePostUrl %}{{ post.url | htmlBaseUrl(metadata.base) }}{% endset %} - - {{ post.data.title }} - - {{ post.date | dateToRfc3339 }} - {{ absolutePostUrl }} - {{ post.content | renderTransforms(post.data.page, metadata.base) }} - - {%- endfor %} - diff --git a/src/meta/sitemap.xml b/src/meta/sitemap.xml.njk similarity index 100% rename from src/meta/sitemap.xml rename to src/meta/sitemap.xml.njk diff --git a/src/meta/tag-pages.njk b/src/meta/tag-pages.njk new file mode 100644 index 0000000..835888d --- /dev/null +++ b/src/meta/tag-pages.njk @@ -0,0 +1,22 @@ +--- +layout: page.njk +pagination: + data: collections.tagPagination + size: 1 + alias: tag +eleventyComputed: + permalink: /tag/{{ tag.tagName | slugify }}/{% if tag.pageNumber %}{{ tag.pageNumber + 1 }}/{% endif %} + title: "tag: {{ tag.tagName }}" +--- + +{% set postlist = tag.pageData %} +{% include "postlist.njk" %} + +{# idk why these are backwards either #} +{% if tag.pageNumber > 0 %} + {% set newerHref = pagination.href.previous %} +{% endif %} +{% if tag.pageNumber < tag.pageSize - 1 %} + {% set olderHref = pagination.href.next %} +{% endif %} +{% include "pagination.njk" %} diff --git a/src/pages/gallery.njk b/src/pages/gallery.njk index b9dd769..2ee1e7e 100644 --- a/src/pages/gallery.njk +++ b/src/pages/gallery.njk @@ -14,3 +14,8 @@ label: view the gallery

the gallery page is for finished art

{% include "postlist.njk" %} + +{# idk why these are backwards either #} +{% set newerHref = pagination.href.previous %} +{% set olderHref = pagination.href.next %} +{% include "pagination.njk" %} diff --git a/src/pages/reference.njk b/src/pages/reference.njk index 52da598..72cbf97 100644 --- a/src/pages/reference.njk +++ b/src/pages/reference.njk @@ -14,3 +14,8 @@ label: read reference posts

the reference page is for informational posts

{% include "postlist.njk" %} + +{# idk why these are backwards either #} +{% set newerHref = pagination.href.previous %} +{% set olderHref = pagination.href.next %} +{% include "pagination.njk" %} diff --git a/src/pages/tag-pages.njk b/src/pages/tag-pages.njk deleted file mode 100644 index 34bd346..0000000 --- a/src/pages/tag-pages.njk +++ /dev/null @@ -1,24 +0,0 @@ ---- -pagination: - data: collections.doublePagination - size: 1 - alias: tag -eleventyComputed: - permalink: /tag/{{ tag.tagName | slugify }}/{% if tag.pageNumber %}{{ tag.pageNumber + 1 }}/{% endif %} - title: "Posts tagged {{ tag.tagName }}" ---- -{% set postlist = tag.pageData %} -{% include "postlist.njk" %} - -{% if tag.pageNumber > 0 or tag.pageNumber < tag.pageSize - 1 %} - -{% endif %} diff --git a/src/pages/tags.njk b/src/pages/tags.njk new file mode 100644 index 0000000..e69de29 diff --git a/src/posts/2026/2026-02-17-sample.md b/src/posts/2026/2026-02-17-sample.md index 6cd1ff2..06745b5 100644 --- a/src/posts/2026/2026-02-17-sample.md +++ b/src/posts/2026/2026-02-17-sample.md @@ -1,8 +1,9 @@ --- -title: Sample +title: Sample 0 date: 2026-02-17 tags: - gallery + - test image: src: 2026/sample-0.jpg alt: filler diff --git a/src/posts/2026/sample-1.md b/src/posts/2026/sample-1.md new file mode 100644 index 0000000..93eb206 --- /dev/null +++ b/src/posts/2026/sample-1.md @@ -0,0 +1,12 @@ +--- +title: Sample 1 +date: 2026-02-18 +tags: + - gallery + - test +image: + src: 2026/sample-0.jpg + alt: filler +--- + + diff --git a/src/posts/2026/sample-2.md b/src/posts/2026/sample-2.md new file mode 100644 index 0000000..0e1535c --- /dev/null +++ b/src/posts/2026/sample-2.md @@ -0,0 +1,12 @@ +--- +title: Sample 2 +date: 2026-02-19 +tags: + - gallery + - test +image: + src: 2026/sample-0.jpg + alt: filler +--- + + diff --git a/src/posts/2026/sample-3.md b/src/posts/2026/sample-3.md new file mode 100644 index 0000000..c91b7d7 --- /dev/null +++ b/src/posts/2026/sample-3.md @@ -0,0 +1,12 @@ +--- +title: Sample 3 +date: 2026-02-20 +tags: + - gallery + - test +image: + src: 2026/sample-0.jpg + alt: filler +--- + + diff --git a/src/posts/2026/sample-4.md b/src/posts/2026/sample-4.md new file mode 100644 index 0000000..168dc11 --- /dev/null +++ b/src/posts/2026/sample-4.md @@ -0,0 +1,12 @@ +--- +title: Sample 4 +date: 2026-02-21 +tags: + - gallery + - test +image: + src: 2026/sample-0.jpg + alt: filler +--- + +