diff --git a/eleventy.config.js b/eleventy.config.js
index 047baff..a2c40ed 100644
--- a/eleventy.config.js
+++ b/eleventy.config.js
@@ -83,12 +83,14 @@ export default async function (eleventyConfig) {
// --------------------- Filters
eleventyConfig.addFilter('toIsoString', filters.toISOString);
eleventyConfig.addFilter('formatDate', filters.formatDate);
+ eleventyConfig.addFilter('formatDateUTC', filters.formatDateUTC);
eleventyConfig.addFilter('markdownFormat', filters.markdownFormat);
eleventyConfig.addFilter('splitlines', filters.splitlines);
eleventyConfig.addFilter('striptags', filters.striptags);
eleventyConfig.addFilter('shuffle', filters.shuffleArray);
eleventyConfig.addFilter('alphabetic', filters.sortAlphabetically);
eleventyConfig.addFilter('slugify', filters.slugifyString);
+ eleventyConfig.addFilter('padNumber', filters.padNumber);
// --------------------- Shortcodes
eleventyConfig.addShortcode('svg', shortcodes.svgShortcode);
diff --git a/package-lock.json b/package-lock.json
index 9c9958a..bfec4d0 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -2204,7 +2204,8 @@
"resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz",
"integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "peer": true
},
"node_modules/@types/markdown-it": {
"version": "14.1.2",
@@ -2223,7 +2224,8 @@
"resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz",
"integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "peer": true
},
"node_modules/@types/node": {
"version": "24.10.1",
@@ -2733,7 +2735,6 @@
}
],
"license": "MIT",
- "peer": true,
"dependencies": {
"baseline-browser-mapping": "^2.8.25",
"caniuse-lite": "^1.0.30001754",
@@ -3399,8 +3400,7 @@
"resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1521046.tgz",
"integrity": "sha512-vhE6eymDQSKWUXwwA37NtTTVEzjtGVfDr3pRbsWEQ5onH/Snp2c+2xZHWJJawG/0hCCJLRGt4xVtEVUVILol4w==",
"dev": true,
- "license": "BSD-3-Clause",
- "peer": true
+ "license": "BSD-3-Clause"
},
"node_modules/didyoumean": {
"version": "1.2.2",
@@ -4841,7 +4841,6 @@
"resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz",
"integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==",
"license": "MIT",
- "peer": true,
"dependencies": {
"argparse": "^2.0.1",
"entities": "^4.4.0",
@@ -5754,7 +5753,6 @@
}
],
"license": "MIT",
- "peer": true,
"dependencies": {
"nanoid": "^3.3.11",
"picocolors": "^1.1.1",
@@ -6450,7 +6448,6 @@
"resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.16.7.tgz",
"integrity": "sha512-7Hc+IvlQ7hlaIfQFZnxlRl0jnpWq2qwibORBhQYIb0QbNtuicc5ZxvKkVT71HJ4Py1wSZ/3VR1r8LfkCtoCzhw==",
"license": "MIT",
- "peer": true,
"dependencies": {
"posthtml-parser": "^0.11.0",
"posthtml-render": "^3.0.0"
diff --git a/src/_config/filters.js b/src/_config/filters.js
index 1a3fe3c..0114203 100644
--- a/src/_config/filters.js
+++ b/src/_config/filters.js
@@ -1,18 +1,21 @@
-import {toISOString, formatDate} from './filters/dates.js';
+import {toISOString, formatDate, formatDateUTC} from './filters/dates.js';
import {markdownFormat} from './filters/markdown-format.js';
import {shuffleArray} from './filters/sort-random.js';
import {sortAlphabetically} from './filters/sort-alphabetic.js';
import {splitlines} from './filters/splitlines.js';
import {striptags} from './filters/striptags.js';
import {slugifyString} from './filters/slugify.js';
+import {padNumber} from './filters/pad-number.js';
export default {
toISOString,
formatDate,
+ formatDateUTC,
markdownFormat,
splitlines,
striptags,
shuffleArray,
sortAlphabetically,
- slugifyString
+ slugifyString,
+ padNumber
};
diff --git a/src/_config/filters/dates.js b/src/_config/filters/dates.js
index 684fc58..30f1574 100644
--- a/src/_config/filters/dates.js
+++ b/src/_config/filters/dates.js
@@ -1,7 +1,12 @@
import dayjs from 'dayjs';
+import utc from 'dayjs/plugin/utc.js';
+dayjs.extend(utc);
/** Converts the given date string to ISO8610 format. */
export const toISOString = dateString => dayjs(dateString).toISOString();
/** Formats a date using dayjs's conventions: https://day.js.org/docs/en/display/format */
export const formatDate = (date, format) => dayjs(date).format(format);
+
+/** Formats a date in UTC to avoid TZ shifts for day-only dates */
+export const formatDateUTC = (date, format) => dayjs.utc(date).format(format);
diff --git a/src/_config/filters/pad-number.js b/src/_config/filters/pad-number.js
new file mode 100644
index 0000000..4b1360b
--- /dev/null
+++ b/src/_config/filters/pad-number.js
@@ -0,0 +1,4 @@
+/** Pads a number with leading zeros to 2 digits. */
+export const padNumber = (num, length = 2) => {
+ return String(num).padStart(length, '0');
+};
diff --git a/src/_includes/partials/album-info.njk b/src/_includes/partials/album-info.njk
new file mode 100644
index 0000000..5fbeb10
--- /dev/null
+++ b/src/_includes/partials/album-info.njk
@@ -0,0 +1,32 @@
+{% if album or artist or date %}
+
+{% endif %}
\ No newline at end of file
diff --git a/src/_includes/partials/card-mix-track.njk b/src/_includes/partials/card-mix-track.njk
index c92320c..c16dbd7 100644
--- a/src/_includes/partials/card-mix-track.njk
+++ b/src/_includes/partials/card-mix-track.njk
@@ -1,20 +1,10 @@
-{% set headingLevel = headingLevel | default(false) %}
+{% set headingLevel = headingLevel | default('h3') %}
-
-
- <{{ headingLevel }}>
- {{ item.data.track_number }}. {{ item.data.title }} by {{ item.data.artist }}
- {{ headingLevel }}>
-
+
+ <{{ headingLevel }}>
+ {{ item.data.track_number }}. {{ item.data.title }} by {{ item.data.artist }}
+ {{ headingLevel }}>
{{- item.templateContent | safe -}}
-
-
-{% css "local" %}
- {% include "css/details.css" %}
-{% endcss %}
-
-{% js "defer" %}
- {% include "scripts/details.js" %}
-{% endjs %}
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/_layouts/mix.njk b/src/_layouts/mix.njk
index d2a9619..e650392 100644
--- a/src/_layouts/mix.njk
+++ b/src/_layouts/mix.njk
@@ -7,14 +7,16 @@ layout: base
{{ title }}
{{ content | safe }}
-
-
- {% set projectTracks = collections.tracksByProject[project] %}
+ {% set projectTracks = collections.tracksByProject[project] %}
+
+ Contents
+
{% for track in projectTracks %}
- {% set item = track %}
- {% include "partials/card-mix-track.njk" %}
+
+ {{ track.data.title }} — {{ track.data.artist }}
+
{% endfor %}
-
-
+
+
diff --git a/src/_layouts/track.njk b/src/_layouts/track.njk
new file mode 100644
index 0000000..7648673
--- /dev/null
+++ b/src/_layouts/track.njk
@@ -0,0 +1,53 @@
+---
+layout: base
+---
+
+{% set projectTracks = collections.tracksByProject[project] %}
+{% set currentIndex = -1 %}
+{% for t in projectTracks %}
+ {% if t.url == page.url %}
+ {% set currentIndex = loop.index0 %}
+ {% endif %}
+{% endfor %}
+{% set prev = projectTracks[currentIndex - 1] %}
+{% set next = projectTracks[currentIndex + 1] %}
+{% set albumUrl = "/mixes/" + (project | slugify) + "/" %}
+
+
+
+
+
+
+
+
+
{{ title }}
+
+ {% include "partials/album-info.njk" %}
+
+ {{ content | safe }}
+
+
+
+
+
+
+
+
diff --git a/src/pages/projects/mixes/tomorrowsbacon/album.md b/src/pages/projects/mixes/tomorrowsbacon/00-album.md
similarity index 91%
rename from src/pages/projects/mixes/tomorrowsbacon/album.md
rename to src/pages/projects/mixes/tomorrowsbacon/00-album.md
index 5be4b51..6bfb22d 100644
--- a/src/pages/projects/mixes/tomorrowsbacon/album.md
+++ b/src/pages/projects/mixes/tomorrowsbacon/00-album.md
@@ -1,6 +1,6 @@
---
layout: mix
-title: "Tomorrow's Bacon"
+title: "Tomorrow’s Bacon"
project: TomorrowsBacon
permalink: /mixes/tomorrowsbacon/index.html
go: tomorrowsbacon
diff --git a/src/pages/projects/mixes/tomorrowsbacon/01-greenpeace.md b/src/pages/projects/mixes/tomorrowsbacon/01-greenpeace.md
index 9c0efd0..d323ee5 100644
--- a/src/pages/projects/mixes/tomorrowsbacon/01-greenpeace.md
+++ b/src/pages/projects/mixes/tomorrowsbacon/01-greenpeace.md
@@ -5,16 +5,11 @@ album: "Whiplash"
date: 1997-02-24
project: TomorrowsBacon
track_number: 01
+start_time: ""
+albumArt: "/pages/projects/mixes/tomorrowsbacon/james-whiplash.jpg"
---
-{% imageKeys {
- "src": "/pages/projects/mixes/tomorrowsbacon/james-whiplash.jpg",
- "alt": "Whiplash by James",
- "loading": "lazy",
- "widths": [200, 400],
- "sizes": "(min-width:30em) 50vw, 100vw",
- "formats": ["webp", "jpeg"]
-} %}
+
## Notes
Notes go here.
diff --git a/src/pages/projects/mixes/tomorrowsbacon/02-bastards-of-young.md b/src/pages/projects/mixes/tomorrowsbacon/02-bastards-of-young.md
index 8449272..196dc14 100644
--- a/src/pages/projects/mixes/tomorrowsbacon/02-bastards-of-young.md
+++ b/src/pages/projects/mixes/tomorrowsbacon/02-bastards-of-young.md
@@ -5,6 +5,7 @@ album: "Tim"
date: 1985-09-18
project: TomorrowsBacon
track_number: 02
+start_time: ""
---
## Notes
Notes go here.
diff --git a/src/pages/projects/mixes/tomorrowsbacon/03-howlin-at-the-moon.md b/src/pages/projects/mixes/tomorrowsbacon/03-howlin-at-the-moon.md
index 4dd276d..7f15038 100644
--- a/src/pages/projects/mixes/tomorrowsbacon/03-howlin-at-the-moon.md
+++ b/src/pages/projects/mixes/tomorrowsbacon/03-howlin-at-the-moon.md
@@ -5,6 +5,7 @@ album: "Mania"
date: 1988-05-31
project: TomorrowsBacon
track_number: 03
+start_time: ""
---
## Notes
Notes go here.
diff --git a/src/pages/projects/mixes/tomorrowsbacon/04-googies-vs-et.md b/src/pages/projects/mixes/tomorrowsbacon/04-googies-vs-et.md
index f809884..3d5b7c2 100644
--- a/src/pages/projects/mixes/tomorrowsbacon/04-googies-vs-et.md
+++ b/src/pages/projects/mixes/tomorrowsbacon/04-googies-vs-et.md
@@ -5,6 +5,7 @@ album: "Mania"
date: 2020-06-03
project: TomorrowsBacon
track_number: 04
+start_time: ""
---
## Notes
Notes go here.
diff --git a/src/pages/projects/mixes/tomorrowsbacon/05-better-way-to-live.md b/src/pages/projects/mixes/tomorrowsbacon/05-better-way-to-live.md
index c3b7b24..8b4493a 100644
--- a/src/pages/projects/mixes/tomorrowsbacon/05-better-way-to-live.md
+++ b/src/pages/projects/mixes/tomorrowsbacon/05-better-way-to-live.md
@@ -5,6 +5,7 @@ album: "Fine Art"
date: 2024-06-14
project: TomorrowsBacon
track_number: 05
+start_time: ""
---
## Notes
Notes go here.
diff --git a/src/pages/projects/mixes/tomorrowsbacon/06-violet-the-upper-room.md b/src/pages/projects/mixes/tomorrowsbacon/06-violet-the-upper-room.md
index 0cdeca5..5fcbee4 100644
--- a/src/pages/projects/mixes/tomorrowsbacon/06-violet-the-upper-room.md
+++ b/src/pages/projects/mixes/tomorrowsbacon/06-violet-the-upper-room.md
@@ -5,6 +5,7 @@ album: "Fine Art"
date: 2017-10-06
project: TomorrowsBacon
track_number: 6
+start_time: ""
---
## Notes
Notes go here.
diff --git a/src/pages/projects/mixes/tomorrowsbacon/07-new-gold.md b/src/pages/projects/mixes/tomorrowsbacon/07-new-gold.md
index 9630482..b277a4b 100644
--- a/src/pages/projects/mixes/tomorrowsbacon/07-new-gold.md
+++ b/src/pages/projects/mixes/tomorrowsbacon/07-new-gold.md
@@ -5,6 +5,7 @@ album: "Cracker Island"
date: 2023-02-24
project: TomorrowsBacon
track_number: 7
+start_time: ""
---
## Notes
Notes go here.
diff --git a/src/pages/projects/mixes/tomorrowsbacon/08-all-is-full-of-love.md b/src/pages/projects/mixes/tomorrowsbacon/08-all-is-full-of-love.md
index 9e761cc..934a342 100644
--- a/src/pages/projects/mixes/tomorrowsbacon/08-all-is-full-of-love.md
+++ b/src/pages/projects/mixes/tomorrowsbacon/08-all-is-full-of-love.md
@@ -5,6 +5,7 @@ album: "All Is Full of Love [CD Single]"
date: 1999-05-24
project: TomorrowsBacon
track_number: 8
+start_time: ""
---
## Notes
Notes go here.
diff --git a/src/pages/projects/mixes/tomorrowsbacon/09-electioneering.md b/src/pages/projects/mixes/tomorrowsbacon/09-electioneering.md
index 3126254..2edaa89 100644
--- a/src/pages/projects/mixes/tomorrowsbacon/09-electioneering.md
+++ b/src/pages/projects/mixes/tomorrowsbacon/09-electioneering.md
@@ -5,6 +5,7 @@ album: "OK Computer"
date: 1997-05-21
project: TomorrowsBacon
track_number: 9
+start_time: ""
---
## Notes
Notes go here.
diff --git a/src/pages/projects/mixes/tomorrowsbacon/10-spanish-bombs.md b/src/pages/projects/mixes/tomorrowsbacon/10-spanish-bombs.md
index 163410f..e6a16f1 100644
--- a/src/pages/projects/mixes/tomorrowsbacon/10-spanish-bombs.md
+++ b/src/pages/projects/mixes/tomorrowsbacon/10-spanish-bombs.md
@@ -5,6 +5,7 @@ album: "London Calling"
date: 1979-12-14
project: TomorrowsBacon
track_number: 10
+start_time: ""
---
## Notes
Notes go here.
diff --git a/src/pages/projects/mixes/tomorrowsbacon/12-capacity.md b/src/pages/projects/mixes/tomorrowsbacon/12-capacity.md
index f5b9dc2..e217875 100644
--- a/src/pages/projects/mixes/tomorrowsbacon/12-capacity.md
+++ b/src/pages/projects/mixes/tomorrowsbacon/12-capacity.md
@@ -5,6 +5,7 @@ album: "Young Enough"
date: 2019-05-10
project: TomorrowsBacon
track_number: 12
+start_time: ""
---
## Notes
Notes go here.
diff --git a/src/pages/projects/mixes/tomorrowsbacon/13-sackcloth-and-ashes.md b/src/pages/projects/mixes/tomorrowsbacon/13-sackcloth-and-ashes.md
index abf479e..7747be2 100644
--- a/src/pages/projects/mixes/tomorrowsbacon/13-sackcloth-and-ashes.md
+++ b/src/pages/projects/mixes/tomorrowsbacon/13-sackcloth-and-ashes.md
@@ -5,6 +5,7 @@ album: "Love Is Dead"
date: 1996-01-19
project: TomorrowsBacon
track_number: 13
+start_time: ""
---
## Notes
Notes go here.
diff --git a/src/pages/projects/mixes/tomorrowsbacon/14-tenderness.md b/src/pages/projects/mixes/tomorrowsbacon/14-tenderness.md
index 4381f4f..b2ef93b 100644
--- a/src/pages/projects/mixes/tomorrowsbacon/14-tenderness.md
+++ b/src/pages/projects/mixes/tomorrowsbacon/14-tenderness.md
@@ -5,6 +5,7 @@ album: "Wide Awake!"
date: 2018-05-18
project: TomorrowsBacon
track_number: 14
+start_time: ""
---
## Notes
Notes go here.
diff --git a/src/pages/projects/mixes/tomorrowsbacon/15-aint-talking-about-love.md b/src/pages/projects/mixes/tomorrowsbacon/15-aint-talking-about-love.md
index 2f06148..71472b5 100644
--- a/src/pages/projects/mixes/tomorrowsbacon/15-aint-talking-about-love.md
+++ b/src/pages/projects/mixes/tomorrowsbacon/15-aint-talking-about-love.md
@@ -5,6 +5,7 @@ album: "Van Halen"
date: 1978-02-10
project: TomorrowsBacon
track_number: 15
+start_time: ""
---
## Notes
Notes go here.
diff --git a/src/pages/projects/mixes/tomorrowsbacon/16-daggers-edge.md b/src/pages/projects/mixes/tomorrowsbacon/16-daggers-edge.md
index 3806068..641d978 100644
--- a/src/pages/projects/mixes/tomorrowsbacon/16-daggers-edge.md
+++ b/src/pages/projects/mixes/tomorrowsbacon/16-daggers-edge.md
@@ -5,6 +5,7 @@ album: "Mountainhead"
date: 2024-03-01
project: TomorrowsBacon
track_number: 16
+start_time: ""
---
## Notes
Notes go here.
diff --git a/src/pages/projects/mixes/tomorrowsbacon/17-people-as-places.md b/src/pages/projects/mixes/tomorrowsbacon/17-people-as-places.md
index 2fd2738..51588bf 100644
--- a/src/pages/projects/mixes/tomorrowsbacon/17-people-as-places.md
+++ b/src/pages/projects/mixes/tomorrowsbacon/17-people-as-places.md
@@ -5,6 +5,7 @@ album: "We Were Dead Before The Ship Even Sank"
date: 2007-03-20
project: TomorrowsBacon
track_number: 17
+start_time: ""
---
## Notes
Notes go here.
diff --git a/src/pages/projects/mixes/tomorrowsbacon/18-all-your-way.md b/src/pages/projects/mixes/tomorrowsbacon/18-all-your-way.md
index a3dffae..a2ed07c 100644
--- a/src/pages/projects/mixes/tomorrowsbacon/18-all-your-way.md
+++ b/src/pages/projects/mixes/tomorrowsbacon/18-all-your-way.md
@@ -5,6 +5,7 @@ album: "Yes"
date: 1995-03-21
project: TomorrowsBacon
track_number: 18
+start_time: ""
---
## Notes
Notes go here.
diff --git a/src/pages/projects/mixes/tomorrowsbacon/19-radio-jesus.md b/src/pages/projects/mixes/tomorrowsbacon/19-radio-jesus.md
index 0805006..8b82f9f 100644
--- a/src/pages/projects/mixes/tomorrowsbacon/19-radio-jesus.md
+++ b/src/pages/projects/mixes/tomorrowsbacon/19-radio-jesus.md
@@ -5,6 +5,7 @@ album: "Sniff More Gritty"
date: 2024-11-15
project: TomorrowsBacon
track_number: 19
+start_time: ""
---
## Notes
Notes go here.
diff --git a/src/pages/projects/mixes/tomorrowsbacon/20-vapour-trail.md b/src/pages/projects/mixes/tomorrowsbacon/20-vapour-trail.md
index c6632d1..deed506 100644
--- a/src/pages/projects/mixes/tomorrowsbacon/20-vapour-trail.md
+++ b/src/pages/projects/mixes/tomorrowsbacon/20-vapour-trail.md
@@ -5,6 +5,7 @@ album: "Nowhere"
date: 1990-09-15
project: TomorrowsBacon
track_number: 20
+start_time: ""
---
## Notes
Notes go here.
diff --git a/src/pages/projects/mixes/tomorrowsbacon/tomorrowsbacon.11tydata.js b/src/pages/projects/mixes/tomorrowsbacon/tomorrowsbacon.11tydata.js
new file mode 100644
index 0000000..3ac6533
--- /dev/null
+++ b/src/pages/projects/mixes/tomorrowsbacon/tomorrowsbacon.11tydata.js
@@ -0,0 +1,11 @@
+import slugify from "slugify";
+
+const s = (str) => slugify(String(str), { lower: true, strict: true });
+
+export default {
+ layout: "track",
+ permalink: (data) => {
+ const num = String(data.track_number).padStart(2, "0");
+ return `/mixes/${s(data.project)}/${num}-${s(data.title)}/index.html`;
+ },
+};