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 }}> + {{ item.data.track_number }}. {{ item.data.title }} by {{ item.data.artist }} +
{{- 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] %} +
+ + 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`; + }, +};