diff --git a/.markdownlint-cli2.cjs b/.markdownlint-cli2.cjs
index 12c86aa..d15f50a 100644
--- a/.markdownlint-cli2.cjs
+++ b/.markdownlint-cli2.cjs
@@ -1,4 +1,4 @@
module.exports = {
config: require("./node_modules/markdownlint-config-fluid/.markdownlintrc.json"),
- ignores: ["node_modules", "src/collections", "CHANGELOG.md"]
+ ignores: ["node_modules", "src/collections/**/*.md", "CHANGELOG.md"]
};
diff --git a/eleventy.config.js b/eleventy.config.js
index 4b466c5..3b8386f 100644
--- a/eleventy.config.js
+++ b/eleventy.config.js
@@ -1,11 +1,36 @@
import { EleventyRenderPlugin } from "@11ty/eleventy";
+import eleventyNavigationPlugin from "@11ty/eleventy-navigation";
import fluidPlugin from "eleventy-plugin-fluid";
import footnotesPlugin from "eleventy-plugin-footnotes";
+import parse from "./src/_transforms/parse.js";
export default function eleventy(eleventyConfig) {
+ eleventyConfig.addPlugin(eleventyNavigationPlugin);
eleventyConfig.addPlugin(EleventyRenderPlugin);
eleventyConfig.addPlugin(footnotesPlugin);
- eleventyConfig.addPlugin(fluidPlugin);
+ eleventyConfig.addPlugin(fluidPlugin, {
+ defaultLanguage: "en",
+ supportedLanguages: {
+ en: {
+ slug: "en",
+ name: "English"
+ },
+ fr: {
+ slug: "fr",
+ name: "Français",
+ dir: "ltr",
+ uioSlug: "fr"
+ }
+ }
+ });
+
+ ["en", "fr"].forEach((lang) => {
+ eleventyConfig.addCollection(`pages_${lang}`, (collection) => {
+ return collection.getFilteredByGlob(`src/collections/pages/${lang}/*.md`);
+ });
+ });
+
+ eleventyConfig.addTransform("parse", parse);
eleventyConfig.addPassthroughCopy({
"src/admin/config.yml": "admin/config.yml"
diff --git a/package-lock.json b/package-lock.json
index 8f16613..fe65444 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,6 +10,7 @@
"license": "BSD-3-Clause",
"dependencies": {
"@11ty/eleventy": "^3.0.0",
+ "@11ty/eleventy-navigation": "^0.3.5",
"eleventy-plugin-fluid": "github:fluid-project/eleventy-plugin-fluid#feat/overhaul-i18n",
"eleventy-plugin-footnotes": "^0.11.0",
"rimraf": "^6.0",
@@ -24,6 +25,7 @@
"cross-env": "^7.0.3",
"debug": "^4.3.5",
"husky": "^9.0.11",
+ "linkedom": "^0.18.6",
"lint-staged": "^15.2.7",
"markdownlint-cli2": "^0.15.0",
"markdownlint-config-fluid": "^0.1.5",
@@ -147,6 +149,26 @@
"url": "https://opencollective.com/11ty"
}
},
+ "node_modules/@11ty/eleventy-navigation": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/@11ty/eleventy-navigation/-/eleventy-navigation-0.3.5.tgz",
+ "integrity": "sha512-4aKW5aIQDFed8xs1G1pWcEiFPcDSwZtA4IH1eERtoJ+Xy+/fsoe0pzbDmw84bHZ9ACny5jblENhfZhcCxklqQw==",
+ "dependencies": {
+ "dependency-graph": "^0.11.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/11ty"
+ }
+ },
+ "node_modules/@11ty/eleventy-navigation/node_modules/dependency-graph": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz",
+ "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==",
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
"node_modules/@11ty/eleventy-plugin-bundle": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/@11ty/eleventy-plugin-bundle/-/eleventy-plugin-bundle-3.0.0.tgz",
@@ -1854,6 +1876,12 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
+ "dev": true
+ },
"node_modules/brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -2600,6 +2628,95 @@
"node": ">= 8"
}
},
+ "node_modules/css-select": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz",
+ "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==",
+ "dev": true,
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-what": "^6.1.0",
+ "domhandler": "^5.0.2",
+ "domutils": "^3.0.1",
+ "nth-check": "^2.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/css-select/node_modules/dom-serializer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
+ "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
+ "dev": true,
+ "dependencies": {
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.2",
+ "entities": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ }
+ },
+ "node_modules/css-select/node_modules/domhandler": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
+ "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
+ "dev": true,
+ "dependencies": {
+ "domelementtype": "^2.3.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
+ },
+ "node_modules/css-select/node_modules/domutils": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
+ "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
+ "dev": true,
+ "dependencies": {
+ "dom-serializer": "^2.0.0",
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
+ },
+ "node_modules/css-select/node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/css-what": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
+ "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/cssom": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz",
+ "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==",
+ "dev": true
+ },
"node_modules/currently-unhandled": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
@@ -4676,6 +4793,99 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/linkedom": {
+ "version": "0.18.6",
+ "resolved": "https://registry.npmjs.org/linkedom/-/linkedom-0.18.6.tgz",
+ "integrity": "sha512-6G8euAJ84s7MTXTli5JIOO5tzEpyoUBw2/zcqAunSurbCtC83YcgrK+VTcO8HZ/rdR3eaaZM573FP9rNo1uXIA==",
+ "dev": true,
+ "dependencies": {
+ "css-select": "^5.1.0",
+ "cssom": "^0.5.0",
+ "html-escaper": "^3.0.3",
+ "htmlparser2": "^9.1.0",
+ "uhyphen": "^0.2.0"
+ }
+ },
+ "node_modules/linkedom/node_modules/dom-serializer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
+ "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
+ "dev": true,
+ "dependencies": {
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.2",
+ "entities": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ }
+ },
+ "node_modules/linkedom/node_modules/domhandler": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
+ "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
+ "dev": true,
+ "dependencies": {
+ "domelementtype": "^2.3.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
+ },
+ "node_modules/linkedom/node_modules/domutils": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
+ "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
+ "dev": true,
+ "dependencies": {
+ "dom-serializer": "^2.0.0",
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
+ },
+ "node_modules/linkedom/node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/linkedom/node_modules/html-escaper": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz",
+ "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==",
+ "dev": true
+ },
+ "node_modules/linkedom/node_modules/htmlparser2": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz",
+ "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==",
+ "dev": true,
+ "funding": [
+ "https://github.com/fb55/htmlparser2?sponsor=1",
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "dependencies": {
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3",
+ "domutils": "^3.1.0",
+ "entities": "^4.5.0"
+ }
+ },
"node_modules/linkify-it": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz",
@@ -5569,6 +5779,18 @@
"set-blocking": "^2.0.0"
}
},
+ "node_modules/nth-check": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "dev": true,
+ "dependencies": {
+ "boolbase": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/nth-check?sponsor=1"
+ }
+ },
"node_modules/nunjucks": {
"version": "3.2.4",
"resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.4.tgz",
@@ -7142,6 +7364,12 @@
"integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==",
"license": "MIT"
},
+ "node_modules/uhyphen": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/uhyphen/-/uhyphen-0.2.0.tgz",
+ "integrity": "sha512-qz3o9CHXmJJPGBdqzab7qAYuW8kQGKNEuoHFYrBwV6hWIMcpAmxDLXojcHfFr9US1Pe6zUswEIJIbLI610fuqA==",
+ "dev": true
+ },
"node_modules/undici-types": {
"version": "6.19.8",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
diff --git a/package.json b/package.json
index 241c0d3..fd99772 100644
--- a/package.json
+++ b/package.json
@@ -30,6 +30,7 @@
"homepage": "https://github.com/inclusive-design/standards.idrc.ocadu.ca#readme",
"dependencies": {
"@11ty/eleventy": "^3.0.0",
+ "@11ty/eleventy-navigation": "^0.3.5",
"eleventy-plugin-fluid": "github:fluid-project/eleventy-plugin-fluid#feat/overhaul-i18n",
"eleventy-plugin-footnotes": "^0.11.0",
"rimraf": "^6.0",
@@ -44,6 +45,7 @@
"cross-env": "^7.0.3",
"debug": "^4.3.5",
"husky": "^9.0.11",
+ "linkedom": "^0.18.6",
"lint-staged": "^15.2.7",
"markdownlint-cli2": "^0.15.0",
"markdownlint-config-fluid": "^0.1.5",
diff --git a/src/_data/contact.json b/src/_data/contact.json
new file mode 100644
index 0000000..374ad93
--- /dev/null
+++ b/src/_data/contact.json
@@ -0,0 +1,5 @@
+{
+ "email": "idrc@ocadu.ca",
+ "phone": "(416) 977-6000 x3967",
+ "address": "Inclusive Design Research Centre \n205 Richmond Street West \nToronto, ON M5V 1V3"
+}
diff --git a/src/_data/social.json b/src/_data/social.json
new file mode 100644
index 0000000..5b8c6de
--- /dev/null
+++ b/src/_data/social.json
@@ -0,0 +1,7 @@
+{
+ "facebook": "https://www.facebook.com/",
+ "instagram": "https://www.instagram.com/",
+ "x": "https://x.com/",
+ "linkedin": "https://www.linkedin.com/",
+ "youtube": "https://www.youtube.com/"
+}
diff --git a/src/_data/translations.json b/src/_data/translations.json
index 7e523a7..bfe285f 100644
--- a/src/_data/translations.json
+++ b/src/_data/translations.json
@@ -1,14 +1,24 @@
{
"en": {
+ "contact-us": "Contact Us",
"contact-us-address": "Address",
"contact-us-email": "Email",
"contact-us-phone": "Phone",
- "social-media": "Social Media"
+ "header-intro": "An Inclusive Design Research Centre Project",
+ "header-intro-short": "An IDRC Project",
+ "social-media": "Social Media",
+ "main-menu": "Main Menu",
+ "menu": "menu"
},
"fr": {
+ "contact-us": "Contactez-nous",
"contact-us-address": "Adresse",
"contact-us-email": "Courriel",
"contact-us-phone": "Téléphone",
- "social-media": "Les médias sociaux"
+ "header-intro": "An Inclusive Design Research Centre Project",
+ "header-intro-short": "An IDRC Project",
+ "social-media": "Les médias sociaux",
+ "main-menu": "Menu Principal",
+ "menu": "menu"
}
}
\ No newline at end of file
diff --git a/src/_includes/layouts/about.njk b/src/_includes/layouts/about.njk
new file mode 100644
index 0000000..1f621a3
--- /dev/null
+++ b/src/_includes/layouts/about.njk
@@ -0,0 +1,21 @@
+{% extends "layouts/base.njk" %}
+{% from "partials/components/card.macro.njk" import card %}
+
+{% block content %}
+{{ content | safe }}
+{% if collections['projects_' + lang] %}
+
+
+
Projects
+
+
+ {% set cardType = "project" %}
+ {% for item in collections['projects_' + lang] %}
+ {{ card({image: item.data.image, title: item.data.title, body: item.data.body }) }}
+ {% endfor %}
+
+
+
+
+{% endif %}
+{% endblock %}
\ No newline at end of file
diff --git a/src/_includes/layouts/base.njk b/src/_includes/layouts/base.njk
index 0181f87..99996c3 100644
--- a/src/_includes/layouts/base.njk
+++ b/src/_includes/layouts/base.njk
@@ -5,11 +5,27 @@
{{ title }}
{% include "partials/global/stylesheets.njk" %}
+ {% include "partials/global/scripts.njk" %}
- {% include "partials/global/language-selector.njk" %}
- {{ title }}
- {{ content | safe }}
- {% include "partials/global/footer.njk" %}
+ {% include "partials/global/header.njk" %}
+ {% include "partials/components/navigation.njk" %}
+
+ {% if hasBanner %}
+
+
+
{{ bannerTitle | renderContent('md') | safe }}
+ {{ bannerBody | renderContent('md') | safe }}
+
+ {% if bannerImage %}
+
+ {{ bannerImage }}
+
+ {% endif %}
+
+ {% endif %}
+ {% block content %}{% endblock %}
+
+ {% include "partials/global/footer.njk" %}