mirror of
https://github.com/penpot/penpot.git
synced 2026-10-29 14:00:37 +00:00
The footer had a hardcoded 2025 copyright and links that no longer match penpot.app. The year is now set at build time. Sections, links and social icons follow the current penpot.app footer, and the grid wraps into two rows to fit the new sections. Closes #12132 AI-assisted-by: claude-opus-5-5
126 lines
3.8 KiB
JavaScript
126 lines
3.8 KiB
JavaScript
import { DateTime } from "luxon";
|
|
import fs from "fs";
|
|
import pluginNavigation from "@11ty/eleventy-navigation";
|
|
import pluginRss from "@11ty/eleventy-plugin-rss";
|
|
import pluginSyntaxHighlight from "@11ty/eleventy-plugin-syntaxhighlight";
|
|
import pluginAncestry from "@tigersway/eleventy-plugin-ancestry";
|
|
import metagen from "eleventy-plugin-metagen";
|
|
import pluginTOC from "eleventy-plugin-nesting-toc";
|
|
import markdownIt from "markdown-it";
|
|
import markdownItAnchor from "markdown-it-anchor";
|
|
import markdownItPlantUML from "markdown-it-plantuml";
|
|
export default function (eleventyConfig) {
|
|
eleventyConfig.addPlugin(pluginNavigation);
|
|
eleventyConfig.addPlugin(pluginRss);
|
|
eleventyConfig.addPlugin(pluginSyntaxHighlight);
|
|
eleventyConfig.addPlugin(pluginAncestry);
|
|
eleventyConfig.addPlugin(metagen);
|
|
eleventyConfig.addPlugin(pluginTOC, {
|
|
tags: ["h1", "h2", "h3"],
|
|
});
|
|
|
|
eleventyConfig.setDataDeepMerge(true);
|
|
|
|
eleventyConfig.addLayoutAlias("post", "layouts/post.njk");
|
|
|
|
eleventyConfig.addFilter("readableDate", (dateObj) => {
|
|
return DateTime.fromJSDate(dateObj, { zone: "utc" }).toFormat(
|
|
"dd LLL yyyy",
|
|
);
|
|
});
|
|
|
|
// https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#valid-date-string
|
|
eleventyConfig.addFilter("htmlDateString", (dateObj) => {
|
|
return DateTime.fromJSDate(dateObj, { zone: "utc" }).toFormat(
|
|
"yyyy-LL-dd",
|
|
);
|
|
});
|
|
|
|
// Remove trailing # in automatic generated toc, because of
|
|
// anchors added at the end of the titles.
|
|
eleventyConfig.addFilter("stripHash", (toc) => {
|
|
return toc.replace(/ #\<\/a\>/g, "</a>");
|
|
});
|
|
|
|
// Get the first `n` elements of a collection.
|
|
eleventyConfig.addFilter("head", (array, n) => {
|
|
if (n < 0) {
|
|
return array.slice(n);
|
|
}
|
|
|
|
return array.slice(0, n);
|
|
});
|
|
|
|
// Get the lowest in a list of numbers.
|
|
eleventyConfig.addFilter("min", (...numbers) => {
|
|
return Math.min.apply(null, numbers);
|
|
});
|
|
|
|
// Current year, resolved at build time.
|
|
eleventyConfig.addShortcode("year", () => `${new Date().getFullYear()}`);
|
|
|
|
eleventyConfig.addPassthroughCopy("img");
|
|
eleventyConfig.addPassthroughCopy("css");
|
|
eleventyConfig.addPassthroughCopy("js");
|
|
|
|
// Redirects (for Cloudflare)
|
|
eleventyConfig.addPassthroughCopy({ _redirects: "_redirects" });
|
|
|
|
/* Markdown Overrides */
|
|
let markdownLibrary = markdownIt({
|
|
html: true,
|
|
breaks: false,
|
|
linkify: true,
|
|
})
|
|
.use(markdownItAnchor, {
|
|
permalink: true,
|
|
permalinkClass: "direct-link",
|
|
permalinkSymbol: "#",
|
|
})
|
|
.use(markdownItPlantUML, {});
|
|
eleventyConfig.setLibrary("md", markdownLibrary);
|
|
|
|
// Browsersync Overrides
|
|
eleventyConfig.setBrowserSyncConfig({
|
|
callbacks: {
|
|
ready: function (err, browserSync) {
|
|
const content_404 = fs.readFileSync("_dist/404.html");
|
|
|
|
browserSync.addMiddleware("*", (req, res) => {
|
|
// Provides the 404 content without redirect.
|
|
res.write(content_404);
|
|
res.end();
|
|
});
|
|
},
|
|
},
|
|
ui: false,
|
|
ghostMode: false,
|
|
});
|
|
|
|
return {
|
|
templateFormats: ["md", "njk", "html", "liquid", "11ty.js"],
|
|
|
|
// If your site lives in a different subdirectory, change this.
|
|
// Leading or trailing slashes are all normalized away, so don't worry about those.
|
|
|
|
// If you don't have a subdirectory, use "" or "/" (they do the same thing)
|
|
// This is only used for link URLs (it does not affect your file structure)
|
|
// Best paired with the `url` filter: https://www.11ty.dev/docs/filters/url/
|
|
|
|
// You can also pass this in on the command line using `--pathprefix`
|
|
// pathPrefix: "/",
|
|
|
|
markdownTemplateEngine: "liquid",
|
|
htmlTemplateEngine: "njk",
|
|
dataTemplateEngine: "njk",
|
|
|
|
// These are all optional, defaults are shown:
|
|
dir: {
|
|
input: ".",
|
|
includes: "_includes",
|
|
data: "_data",
|
|
output: "_dist",
|
|
},
|
|
};
|
|
}
|