feat: first commit
commit
92f6f7c8c5
|
@ -0,0 +1,9 @@
|
|||
root = true
|
||||
|
||||
[*]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
charset = utf-8
|
|
@ -0,0 +1,5 @@
|
|||
.idea
|
||||
*iml
|
||||
_site/
|
||||
node_modules/
|
||||
package-lock.json
|
|
@ -0,0 +1,80 @@
|
|||
# eleventy-base-blog
|
||||
|
||||
A starter repository showing how to build a (multi-language friendly) blog with the [Eleventy](https://github.com/11ty/eleventy) static site generator.
|
||||
|
||||
[![Build Status](https://travis-ci.org/11ty/eleventy-base-blog.svg?branch=master)](https://travis-ci.org/11ty/eleventy-base-blog)
|
||||
|
||||
## Demos
|
||||
|
||||
- [Netlify](https://eleventy-base-blog.netlify.com/)
|
||||
- [GitHub Pages](https://11ty.github.io/eleventy-base-blog/)
|
||||
- [Remix on Glitch](https://glitch.com/~11ty-eleventy-base-blog)
|
||||
|
||||
## Deploy this to your own site
|
||||
|
||||
Deploy this Eleventy site in just a few clicks on these services:
|
||||
|
||||
- [Get your own Eleventy web site on Netlify](https://app.netlify.com/start/deploy?repository=https://github.com/11ty/eleventy-base-blog)
|
||||
- [Get your own Eleventy web site on Vercel](https://vercel.com/import/project?template=11ty%2Feleventy-base-blog)
|
||||
|
||||
Or, read more about [Deploying an Eleventy project](https://www.11ty.dev/docs/deployment/).
|
||||
|
||||
## Getting Started
|
||||
|
||||
### 1. Clone this Repository
|
||||
|
||||
```
|
||||
git clone https://github.com/11ty/eleventy-base-blog.git my-blog-name
|
||||
```
|
||||
|
||||
### 2. Navigate to the directory
|
||||
|
||||
```
|
||||
cd my-blog-name
|
||||
```
|
||||
|
||||
Specifically have a look at `.eleventy.js` to see if you want to configure any Eleventy options differently.
|
||||
|
||||
### 3. Install dependencies
|
||||
|
||||
```
|
||||
npm install
|
||||
```
|
||||
|
||||
### 4. Edit \_data/metadata.json
|
||||
|
||||
### 5. Run Eleventy
|
||||
|
||||
```
|
||||
npx @11ty/eleventy
|
||||
```
|
||||
|
||||
Or build and host locally for local development
|
||||
|
||||
```
|
||||
npx @11ty/eleventy --serve
|
||||
```
|
||||
|
||||
Or in debug mode:
|
||||
|
||||
```
|
||||
DEBUG=Eleventy* npx @11ty/eleventy
|
||||
```
|
||||
|
||||
### Implementation Notes
|
||||
|
||||
- `en` is the folder for content (written using the primary language for project, here we’re using English)
|
||||
- `en/about/index.md` is an example of an English content page.
|
||||
- `en/blog/` has the English blog posts but really they can live in any directory. They need only the `post` tag to be included in the blog posts [collection](https://www.11ty.dev/docs/collections/).
|
||||
- To localize a blog post you will need to add a top level folder for that language (`es` for Spanish, `ja` for Japanese, `en-us` for American English) and match the rest of the file path to the primary language folder. For example `en/blog/my-post.md` could have `ja/blog/my-post.md` or `es/blog/my-post.md`. Read more about [best practices for organizing files for internationalization (i18n) in Eleventy projects](https://www.11ty.dev/docs/i18n/).
|
||||
- Use the `eleventyNavigation` key in your front matter to add a template to the top level site navigation. For example, this is in use on `index.njk` and `about/index.md`.
|
||||
- This makes use of the [Eleventy Navigation plugin](https://www.11ty.dev/docs/plugins/navigation/)
|
||||
- Content can be any template format (blog posts needn’t be markdown, for example). Configure your supported templates in `.eleventy.js` -> `templateFormats`.
|
||||
- The `public` folder in your input directory will be copied to the output folder (via `addPassthroughCopy()` in the `.eleventy.js` file). This means `./public/css/*` will live at `./_site/css/*` after your build completes. [When using `--serve` this behavior is emulated](/docs/copy/#passthrough-during-serve) (the files will not show up in `_site`).
|
||||
- The blog post feed template is in `feed/feed.njk`. This is also a good example of using a global data files in that it uses `_data/metadata.json`.
|
||||
- This project uses three layouts:
|
||||
- `_includes/layouts/base.njk`: the top level HTML structure
|
||||
- `_includes/layouts/home.njk`: the home page template (wrapped into `base.njk`)
|
||||
- `_includes/layouts/post.njk`: the blog post template (wrapped into `base.njk`)
|
||||
- `_includes/postslist.njk` is a Nunjucks include and is a reusable component used to display a list of all the posts. `index.njk` has an example of how to use it.
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"title": "Blog IT's on us",
|
||||
"url": "https://blog.itsonus.fr/",
|
||||
"language": "fr",
|
||||
"description": "Blog traitant de numérique responsable"
|
||||
}
|
|
@ -0,0 +1,50 @@
|
|||
<!doctype html>
|
||||
<html lang="{{ lang or metadata.language }}">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>{{ title or metadata.title }}</title>
|
||||
<meta name="description" content="{{ description or metadata.description }}">
|
||||
|
||||
{#- Uncomment this if you’d like folks to know that you used Eleventy to build your site! #}
|
||||
<meta name="generator" content="{{ eleventy.generator }}">
|
||||
|
||||
<link rel="stylesheet" href="/css/prism-theme.css">
|
||||
<link rel="stylesheet" href="/css/prism-diff.css">
|
||||
<link rel="stylesheet" href="/css/index.css">
|
||||
<link rel="alternate" href="/feed/feed.xml" type="application/atom+xml" title="{{ metadata.title }}">
|
||||
<link rel="alternate" href="/feed/feed.json" type="application/json" title="{{ metadata.title }}">
|
||||
<link rel="icon" href="/img/favicon.svg">
|
||||
|
||||
{%- set alternateUrls = page.url | locale_links %}
|
||||
{% if alternateUrls.length %}
|
||||
<link rel="alternate" hreflang="{{ lang or metadata.language }}" href="{{ page.url | htmlBaseUrl(metadata.url) }}">
|
||||
{%- for link in alternateUrls %}
|
||||
<link rel="alternate" hreflang="{{ link.lang }}" href="{{ link.url | htmlBaseUrl(metadata.url) }}">
|
||||
{%- endfor %}
|
||||
{%- endif %}
|
||||
</head>
|
||||
<body>
|
||||
<header class="main-header">
|
||||
<div>
|
||||
<a class="main-header-logo" href="/"><img src="/img/logo.svg" alt="{{ metadata.title }}" width="165" height="33">Blog</a>
|
||||
{#- Read more about `eleventy-navigation` at https://www.11ty.dev/docs/plugins/navigation/ #}
|
||||
<nav class="main-menu">
|
||||
<ul class="nav">
|
||||
{%- for entry in collections.all | eleventyNavigation %}
|
||||
<li class="nav-item{% if entry.url == page.url %} nav-item-active{% endif %}"><a href="{{ entry.url }}">{{ entry.title | i18n }}</a></li>
|
||||
{%- endfor %}
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main{% if templateClass %} class="{{ templateClass }}"{% endif %}>
|
||||
{{ content | safe }}
|
||||
</main>
|
||||
|
||||
<footer></footer>
|
||||
|
||||
{# <!-- Current page: {{ page.url | htmlBaseUrl }} -->#}
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
layout: layouts/base.njk
|
||||
templateClass: tmpl-home
|
||||
---
|
||||
{{ content | safe }}
|
|
@ -0,0 +1,42 @@
|
|||
---
|
||||
layout: layouts/base.njk
|
||||
templateClass: tmpl-post
|
||||
---
|
||||
<h1>{{ title }}</h1>
|
||||
|
||||
<ul class="post-metadata">
|
||||
<li><time datetime="{{ page.date | htmlDateString }}">{{ page.date | readableDate }}</time></li>
|
||||
{%- for tag in tags | filterTagList %}
|
||||
{%- set tagUrl %}/tags/{{ tag | slugify }}/{% endset %}
|
||||
<li><a href="{{ tagUrl }}" class="post-tag">#{{ tag }}</a>{%- if not loop.last %} {% endif %}</li>
|
||||
{%- endfor %}
|
||||
</ul>
|
||||
|
||||
{{ content | safe }}
|
||||
|
||||
<hr>
|
||||
|
||||
{% set i18nLinks = page.url | locale_links %}
|
||||
{% if i18nLinks.length %}
|
||||
<ul>
|
||||
<li>
|
||||
{{ "i18n.also" | i18n }}
|
||||
{%- for link in i18nLinks %}
|
||||
<a href="{{ link.url }}" lang="{{ link.lang }}" hreflang="{{ link.lang }}">{{ link.label }}</a>
|
||||
{%- if not loop.last %},{% endif %}
|
||||
{%- endfor -%}
|
||||
</li>
|
||||
</ul>
|
||||
{% endif %}
|
||||
|
||||
{%- if collections.posts %}
|
||||
{# these filters are locale-aware in 2.0.0-canary.14 #}
|
||||
{%- set previousPost = collections.posts | getPreviousCollectionItem %}
|
||||
{%- set nextPost = collections.posts | getNextCollectionItem %}
|
||||
{%- if nextPost or previousPost %}
|
||||
<ul>
|
||||
{%- if previousPost %}<li>{{ "i18n.previous" | i18n }}: <a href="{{ previousPost.url }}">{{ previousPost.data.title }}</a></li>{% endif %}
|
||||
{%- if nextPost %}<li>{{ "i18n.next" | i18n }}: <a href="{{ nextPost.url }}">{{ nextPost.data.title }}</a></li>{% endif %}
|
||||
</ul>
|
||||
{%- endif %}
|
||||
{%- endif %}
|
|
@ -0,0 +1,20 @@
|
|||
{% for post in postslist | reverse %}
|
||||
<article class="postlist-item">
|
||||
<header class="postlist-header">
|
||||
<h2>
|
||||
<a href="{{ post.url }}" class="postlist-link">{% if post.data.title %}{{ post.data.title }}{% else %}<code>{{ post.url }}</code>{% endif %}</a>
|
||||
</h2>
|
||||
<ul class="post-metadata">
|
||||
<li><time datetime="{{ page.date | htmlDateString }}">{{ page.date | readableDate }}</time></li>
|
||||
{%- for tag in post.data.tags | filterTagList %}
|
||||
{%- set tagUrl %}/tags/{{ tag | slugify }}/{% endset %}
|
||||
<li><a href="{{ tagUrl }}" class="post-tag">#{{ tag }}</a>{%- if not loop.last %} {% endif %}</li>
|
||||
{%- endfor %}
|
||||
</ul>
|
||||
</header>
|
||||
<p>{{ post.data.description }}</p>
|
||||
<footer class="postlist-footer">
|
||||
<a href="{{ post.url }}">Lire la suite</a>
|
||||
</footer>
|
||||
</article>
|
||||
{% endfor %}
|
|
@ -0,0 +1,140 @@
|
|||
const { DateTime } = require("luxon");
|
||||
const rosetta = require("rosetta");
|
||||
const markdownItAnchor = require("markdown-it-anchor");
|
||||
const pluginRss = require("@11ty/eleventy-plugin-rss");
|
||||
const pluginSyntaxHighlight = require("@11ty/eleventy-plugin-syntaxhighlight");
|
||||
const pluginNavigation = require("@11ty/eleventy-navigation");
|
||||
const { EleventyI18nPlugin, EleventyHtmlBasePlugin } = require("@11ty/eleventy");
|
||||
|
||||
const languageStrings = require("./i18n.js");
|
||||
|
||||
module.exports = function(eleventyConfig) {
|
||||
eleventyConfig.ignores.add("README.md");
|
||||
|
||||
// Copy the contents of the `public` folder to the output folder
|
||||
// For example, `./public/css/` ends up in `_site/css/`
|
||||
eleventyConfig.addPassthroughCopy({
|
||||
"./public/": "/",
|
||||
"./node_modules/prismjs/themes/prism-okaidia.css": "/css/prism-theme.css",
|
||||
});
|
||||
|
||||
// Add plugins
|
||||
eleventyConfig.addPlugin(pluginRss);
|
||||
eleventyConfig.addPlugin(pluginSyntaxHighlight);
|
||||
eleventyConfig.addPlugin(pluginNavigation);
|
||||
eleventyConfig.addPlugin(EleventyHtmlBasePlugin);
|
||||
|
||||
eleventyConfig.addPlugin(EleventyI18nPlugin, {
|
||||
defaultLanguage: "fr",
|
||||
errorMode: "allow-fallback",
|
||||
});
|
||||
|
||||
eleventyConfig.addFilter("readableDate", (dateObj, format = "dd LLLL yyyy") => {
|
||||
return DateTime.fromJSDate(dateObj, {zone: 'utc', locale: 'fr'}).toFormat(format);
|
||||
});
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#valid-date-string
|
||||
eleventyConfig.addFilter('htmlDateString', (dateObj) => {
|
||||
return DateTime.fromJSDate(dateObj, {zone: 'utc', locale: 'fr'}).toFormat('yyyy-LL-dd');
|
||||
});
|
||||
|
||||
// Get the first `n` elements of a collection.
|
||||
eleventyConfig.addFilter("head", (array, n) => {
|
||||
if(!Array.isArray(array) || array.length === 0) {
|
||||
return [];
|
||||
}
|
||||
if( n < 0 ) {
|
||||
return array.slice(n);
|
||||
}
|
||||
|
||||
return array.slice(0, n);
|
||||
});
|
||||
|
||||
// Return the smallest number argument
|
||||
eleventyConfig.addFilter("min", (...numbers) => {
|
||||
return Math.min.apply(null, numbers);
|
||||
});
|
||||
|
||||
// Return all the tags used in a collection
|
||||
eleventyConfig.addFilter("getAllTags", collection => {
|
||||
let tagSet = new Set();
|
||||
for(let item of collection) {
|
||||
(item.data.tags || []).forEach(tag => tagSet.add(tag));
|
||||
}
|
||||
return Array.from(tagSet);
|
||||
});
|
||||
|
||||
eleventyConfig.addFilter("filterTagList", function filterTagList(tags) {
|
||||
return (tags || []).filter(tag => ["all", "nav", "post", "posts"].indexOf(tag) === -1);
|
||||
});
|
||||
|
||||
// Customize Markdown library and settings:
|
||||
eleventyConfig.amendLibrary("md", mdLib => {
|
||||
mdLib.use(markdownItAnchor, {
|
||||
permalink: markdownItAnchor.permalink.ariaHidden({
|
||||
placement: "after",
|
||||
class: "direct-link",
|
||||
symbol: "#",
|
||||
}),
|
||||
level: [1,2,3,4],
|
||||
slugify: eleventyConfig.getFilter("slug")
|
||||
});
|
||||
});
|
||||
|
||||
// Override @11ty/eleventy-dev-server defaults (used only with --serve)
|
||||
eleventyConfig.setServerOptions({
|
||||
showVersion: true,
|
||||
});
|
||||
|
||||
// i18n filter using Rosetta
|
||||
const rosettaLib = rosetta(languageStrings);
|
||||
|
||||
eleventyConfig.addFilter("i18n", function (key, lang) {
|
||||
const I18N_PREFIX = "i18n.";
|
||||
if(key.startsWith(I18N_PREFIX)) {
|
||||
key = key.slice(I18N_PREFIX.length);
|
||||
}
|
||||
// depends on page.lang in 2.0.0-canary.14+
|
||||
let page = this.page || this.ctx?.page || this.context?.environments?.page || {};
|
||||
return rosettaLib.t(key, {}, lang || page.lang);
|
||||
});
|
||||
|
||||
return {
|
||||
// Control which files Eleventy will process
|
||||
// e.g.: *.md, *.njk, *.html, *.liquid
|
||||
templateFormats: [
|
||||
"md",
|
||||
"njk",
|
||||
"html",
|
||||
"liquid"
|
||||
],
|
||||
|
||||
// Pre-process *.md files with: (default: `liquid`)
|
||||
markdownTemplateEngine: "njk",
|
||||
|
||||
// Pre-process *.html files with: (default: `liquid`)
|
||||
htmlTemplateEngine: "njk",
|
||||
|
||||
// -----------------------------------------------------------------
|
||||
// If your site deploys to a subdirectory, change `pathPrefix`.
|
||||
// Don’t worry about leading and trailing slashes, we normalize these.
|
||||
|
||||
// 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`
|
||||
|
||||
// Optional (default is shown)
|
||||
pathPrefix: "/",
|
||||
// -----------------------------------------------------------------
|
||||
|
||||
// These are all optional (defaults are shown):
|
||||
dir: {
|
||||
input: ".",
|
||||
includes: "_includes",
|
||||
data: "_data",
|
||||
output: "_site"
|
||||
}
|
||||
};
|
||||
};
|
|
@ -0,0 +1,3 @@
|
|||
module.exports = {
|
||||
eleventyExcludeFromCollections: true
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
---
|
||||
# Metadata comes from _data/metadata.json
|
||||
permalink: /feed/feed.xml
|
||||
---
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<feed xmlns="http://www.w3.org/2005/Atom" xml:base="{{ metadata.language }}">
|
||||
<title>{{ metadata.title }}</title>
|
||||
<subtitle>{{ metadata.description }}</subtitle>
|
||||
<link href="{{ permalink | htmlBaseUrl(metadata.url) }}" rel="self"/>
|
||||
<link href="{{ metadata.url | addPathPrefixToFullUrl }}"/>
|
||||
<updated>{{ collections.posts | getNewestCollectionItemDate | dateToRfc3339 }}</updated>
|
||||
<id>{{ metadata.url }}</id>
|
||||
<author>
|
||||
<name>{{ metadata.author.name }}</name>
|
||||
<email>{{ metadata.author.email }}</email>
|
||||
</author>
|
||||
{%- for post in collections.posts | reverse %}
|
||||
{% set absolutePostUrl %}{{ post.url | htmlBaseUrl(metadata.url) }}{% endset %}
|
||||
<entry>
|
||||
<title>{{ post.data.title }}</title>
|
||||
<link href="{{ absolutePostUrl }}"/>
|
||||
<updated>{{ post.date | dateToRfc3339 }}</updated>
|
||||
<id>{{ absolutePostUrl }}</id>
|
||||
<content type="html">{{ post.templateContent | transformWithHtmlBase(absolutePostUrl, post.url) }}</content>
|
||||
</entry>
|
||||
{%- endfor %}
|
||||
</feed>
|
|
@ -0,0 +1,29 @@
|
|||
---
|
||||
# Metadata comes from _data/metadata.json
|
||||
permalink: /feed/feed.json
|
||||
---
|
||||
{
|
||||
"version": "https://jsonfeed.org/version/1.1",
|
||||
"title": "{{ metadata.title }}",
|
||||
"language": "{{ metadata.language }}",
|
||||
"home_page_url": "{{ metadata.url | addPathPrefixToFullUrl }}",
|
||||
"feed_url": "{{ permalink | htmlBaseUrl(metadata.url) }}",
|
||||
"description": "{{ metadata.description }}",
|
||||
"author": {
|
||||
"name": "{{ metadata.author.name }}",
|
||||
"url": "{{ metadata.author.url }}"
|
||||
},
|
||||
"items": [
|
||||
{%- for post in collections.posts | reverse %}
|
||||
{%- set absolutePostUrl = post.url | htmlBaseUrl(metadata.url) %}
|
||||
{
|
||||
"id": "{{ absolutePostUrl }}",
|
||||
"url": "{{ absolutePostUrl }}",
|
||||
"title": "{{ post.data.title }}",
|
||||
"content_html": {% if post.templateContent %}{{ post.templateContent | transformWithHtmlBase(absolutePostUrl, post.url) | dump | safe }}{% else %}""{% endif %},
|
||||
"date_published": "{{ post.date | dateToRfc3339 }}"
|
||||
}
|
||||
{% if not loop.last %},{% endif %}
|
||||
{%- endfor %}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
---
|
||||
layout: layouts/home.njk
|
||||
permalink: 404.html
|
||||
eleventyExcludeFromCollections: true
|
||||
---
|
||||
# Content not found.
|
||||
|
||||
Go <a href="/">home</a>.
|
||||
|
||||
{#
|
||||
Read more: https://www.11ty.dev/docs/quicktips/not-found/
|
||||
|
||||
This will work for both GitHub pages and Netlify:
|
||||
|
||||
* https://help.github.com/articles/creating-a-custom-404-page-for-your-github-pages-site/
|
||||
* https://www.netlify.com/docs/redirects/#custom-404
|
||||
#}
|
|
@ -0,0 +1,11 @@
|
|||
---
|
||||
layout: layouts/base.njk
|
||||
title: À propos
|
||||
templateClass: tmpl-post
|
||||
eleventyNavigation:
|
||||
key: nav.about
|
||||
order: 3
|
||||
---
|
||||
# {{ title }}
|
||||
|
||||
Visitez notre site [IT's on us](https://www.itsonus.fr).
|
|
@ -0,0 +1,10 @@
|
|||
---
|
||||
layout: layouts/home.njk
|
||||
eleventyNavigation:
|
||||
key: nav.archive
|
||||
order: 2
|
||||
---
|
||||
<h1>Archive</h1>
|
||||
|
||||
{% set postslist = collections.posts %}
|
||||
{% include "postslist.njk" %}
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"tags": [
|
||||
"posts"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
---
|
||||
title: This is my fourth post
|
||||
description: This is a post on My Blog about touchpoints and circling wagons.
|
||||
date: 2018-09-30
|
||||
tags: second tag
|
||||
layout: layouts/post.njk
|
||||
---
|
||||
Leverage agile frameworks to provide a robust synopsis for high level overviews. Iterative approaches to corporate strategy foster collaborative thinking to further the overall value proposition. Organically grow the holistic world view of disruptive innovation via workplace diversity and empowerment.
|
||||
|
||||
Bring to the table win-win survival strategies to ensure proactive domination. At the end of the day, going forward, a new normal that has evolved from generation X is on the runway heading towards a streamlined cloud solution. User generated content in real-time will have multiple touchpoints for offshoring.
|
||||
|
||||
## Section Header
|
||||
|
||||
Capitalize on low hanging fruit to identify a ballpark value added activity to beta test. Override the digital divide with additional clickthroughs from DevOps. Nanotechnology immersion along the information highway will close the loop on focusing solely on the bottom line.
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
---
|
||||
title: Tout premier post
|
||||
description: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
|
||||
date: 2022-10-14
|
||||
tags:
|
||||
- demo
|
||||
- easy
|
||||
layout: layouts/post.njk
|
||||
---
|
||||
|
||||
## Introduction
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Semper quis lectus nulla at volutpat. Est pellentesque elit ullamcorper dignissim cras tincidunt lobortis feugiat. Duis tristique sollicitudin nibh sit amet commodo nulla facilisi. Enim diam vulputate ut pharetra sit amet. Placerat orci nulla pellentesque dignissim. Gravida rutrum quisque non tellus. Condimentum mattis pellentesque id nibh tortor id aliquet lectus proin. Diam sollicitudin tempor id eu nisl nunc mi ipsum faucibus. Tempor id eu nisl nunc mi. Cras pulvinar mattis nunc sed blandit libero volutpat sed cras. Eget magna fermentum iaculis eu non diam phasellus. Est lorem ipsum dolor sit amet consectetur adipiscing. Orci porta non pulvinar neque laoreet suspendisse interdum consectetur. Velit scelerisque in dictum non consectetur a. Lectus sit amet est placerat. Viverra aliquet eget sit amet tellus cras adipiscing enim eu. Ut tristique et egestas quis ipsum suspendisse ultrices. Bibendum est ultricies integer quis auctor elit. Aliquam sem et tortor consequat id porta nibh.
|
||||
|
||||
Sollicitudin nibh sit amet commodo nulla facilisi nullam vehicula ipsum. Habitant morbi tristique senectus et netus. Id venenatis a condimentum vitae sapien pellentesque habitant morbi tristique. Orci porta non pulvinar neque laoreet suspendisse interdum. Cursus risus at ultrices mi tempus. Hendrerit gravida rutrum quisque non tellus orci ac auctor. Nibh tellus molestie nunc non blandit massa. Amet mattis vulputate enim nulla. Gravida cum sociis natoque penatibus. At tellus at urna condimentum. Commodo sed egestas egestas fringilla. Turpis in eu mi bibendum neque egestas congue. At erat pellentesque adipiscing commodo elit at imperdiet dui accumsan. Aliquam malesuada bibendum arcu vitae elementum curabitur.
|
||||
|
||||
Massa eget egestas purus viverra. Sit amet commodo nulla facilisi. Risus sed vulputate odio ut enim blandit volutpat. Amet facilisis magna etiam tempor orci eu. Aenean sed adipiscing diam donec adipiscing tristique. Ut ornare lectus sit amet est placerat. Nulla facilisi etiam dignissim diam quis. Volutpat blandit aliquam etiam erat velit. Consectetur adipiscing elit pellentesque habitant morbi tristique senectus et netus. Cursus euismod quis viverra nibh.
|
||||
|
||||
Amet tellus cras adipiscing enim eu turpis egestas pretium aenean. Aliquam sem fringilla ut morbi tincidunt. Tincidunt arcu non sodales neque sodales ut etiam sit. Lacinia quis vel eros donec ac odio tempor orci dapibus. Nunc mattis enim ut tellus. Eu lobortis elementum nibh tellus molestie nunc non. Mollis aliquam ut porttitor leo a diam. Vulputate odio ut enim blandit volutpat maecenas volutpat. Gravida quis blandit turpis cursus in. Posuere lorem ipsum dolor sit amet consectetur adipiscing elit duis. Enim facilisis gravida neque convallis a. Gravida in fermentum et sollicitudin ac orci. Bibendum at varius vel pharetra vel. Pharetra vel turpis nunc eget lorem dolor sed. Mauris pharetra et ultrices neque ornare aenean.
|
||||
|
||||
Risus sed vulputate odio ut enim blandit. Et ultrices neque ornare aenean euismod elementum. Vitae sapien
|
||||
pellentesque habitant morbi tristique senectus. Pretium vulputate sapien nec sagittis aliquam malesuada. Neque
|
||||
volutpat ac tincidunt vitae semper quis lectus nulla. Consequat mauris nunc congue nisi vitae suscipit tellus
|
||||
mauris. Tincidunt augue interdum velit euismod in pellentesque. Malesuada fames ac turpis egestas integer eget
|
||||
aliquet. Hendrerit dolor magna eget est lorem ipsum dolor. Porttitor lacus luctus accumsan tortor posuere ac ut.
|
||||
Gravida neque convallis a cras semper auctor neque vitae. Auctor urna nunc id cursus metus aliquam eleifend mi. Ut
|
||||
etiam sit amet nisl purus in. Nascetur ridiculus mus mauris vitae ultricies leo integer malesuada. Lacus sed
|
||||
turpis tincidunt id. At volutpat diam ut venenatis tellus. Tellus orci ac auctor augue mauris.
|
||||
|
||||
## Exemple de code
|
||||
|
||||
```diff-js
|
||||
// this is a command
|
||||
function myCommand() {
|
||||
+ let counter = 0;
|
||||
- let counter = 1;
|
||||
counter++;
|
||||
}
|
||||
|
||||
// Test with a line break above this line.
|
||||
console.log('Test');
|
||||
```
|
|
@ -0,0 +1,27 @@
|
|||
---
|
||||
title: This is my first post
|
||||
description: This is a post on My Blog about agile frameworks.
|
||||
date: 2022-10-14
|
||||
tags:
|
||||
- écoconception
|
||||
layout: layouts/post.njk
|
||||
---
|
||||
Leverage agile frameworks to provide a robust synopsis for high level overviews. Iterative approaches to corporate strategy foster collaborative thinking to further the overall value proposition. Organically grow the holistic world view of disruptive innovation via workplace diversity and empowerment.
|
||||
|
||||
Bring to the table win-win survival strategies to ensure proactive domination. At the end of the day, going forward, a new normal that has evolved from generation X is on the runway heading towards a streamlined cloud solution. User generated content in real-time will have multiple touchpoints for offshoring.
|
||||
|
||||
## Section Header
|
||||
|
||||
Capitalize on low hanging fruit to identify a ballpark value added activity to beta test. Override the digital divide with additional clickthroughs from DevOps. Nanotechnology immersion along the information highway will close the loop on focusing solely on the bottom line.
|
||||
|
||||
```diff-js
|
||||
// this is a command
|
||||
function myCommand() {
|
||||
+ let counter = 0;
|
||||
- let counter = 1;
|
||||
counter++;
|
||||
}
|
||||
|
||||
// Test with a line break above this line.
|
||||
console.log('Test');
|
||||
```
|
|
@ -0,0 +1,27 @@
|
|||
---
|
||||
title: Nouveau post 2
|
||||
description: This is a post on My Blog about agile frameworks.
|
||||
date: 2022-10-14
|
||||
tags:
|
||||
- écoconception
|
||||
layout: layouts/post.njk
|
||||
---
|
||||
Leverage agile frameworks to provide a robust synopsis for high level overviews. Iterative approaches to corporate strategy foster collaborative thinking to further the overall value proposition. Organically grow the holistic world view of disruptive innovation via workplace diversity and empowerment.
|
||||
|
||||
Bring to the table win-win survival strategies to ensure proactive domination. At the end of the day, going forward, a new normal that has evolved from generation X is on the runway heading towards a streamlined cloud solution. User generated content in real-time will have multiple touchpoints for offshoring.
|
||||
|
||||
## Section Header
|
||||
|
||||
Capitalize on low hanging fruit to identify a ballpark value added activity to beta test. Override the digital divide with additional clickthroughs from DevOps. Nanotechnology immersion along the information highway will close the loop on focusing solely on the bottom line.
|
||||
|
||||
```diff-js
|
||||
// this is a command
|
||||
function myCommand() {
|
||||
+ let counter = 0;
|
||||
- let counter = 1;
|
||||
counter++;
|
||||
}
|
||||
|
||||
// Test with a line break above this line.
|
||||
console.log('Test');
|
||||
```
|
|
@ -0,0 +1,18 @@
|
|||
---
|
||||
title: This is my second post with a much longer title
|
||||
description: This is a post on My Blog about leveraging agile frameworks.
|
||||
date: 2018-07-04
|
||||
tags:
|
||||
- intretien
|
||||
layout: layouts/post.njk
|
||||
---
|
||||
Leverage agile frameworks to provide a robust synopsis for high level overviews. Iterative approaches to corporate strategy foster collaborative thinking to further the overall value proposition. Organically grow the holistic world view of disruptive innovation via workplace diversity and empowerment.
|
||||
|
||||
## Section Header
|
||||
|
||||
<a href="/blog/firstpost/">First post</a>
|
||||
<a href="/blog/thirdpost/">Third post</a>
|
||||
|
||||
Bring to the table win-win survival strategies to ensure proactive domination. At the end of the day, going forward, a new normal that has evolved from generation X is on the runway heading towards a streamlined cloud solution. User generated content in real-time will have multiple touchpoints for offshoring.
|
||||
|
||||
Capitalize on low hanging fruit to identify a ballpark value added activity to beta test. Override the digital divide with additional clickthroughs from DevOps. Nanotechnology immersion along the information highway will close the loop on focusing solely on the bottom line.
|
|
@ -0,0 +1,27 @@
|
|||
---
|
||||
title: This is my third post
|
||||
description: This is a post on My Blog about win-win survival strategies.
|
||||
date: 2018-08-24
|
||||
tags:
|
||||
- second tag
|
||||
- posts with two tags
|
||||
layout: layouts/post.njk
|
||||
---
|
||||
Leverage agile frameworks to provide a robust synopsis for high level overviews. Iterative approaches to corporate strategy foster collaborative thinking to further the overall value proposition. Organically grow the holistic world view of disruptive innovation via workplace diversity and empowerment.
|
||||
|
||||
```js
|
||||
// this is a command
|
||||
function myCommand() {
|
||||
let counter = 0;
|
||||
counter++;
|
||||
}
|
||||
|
||||
// Test with a line break above this line.
|
||||
console.log('Test');
|
||||
```
|
||||
|
||||
Bring to the table win-win survival strategies to ensure proactive domination. At the end of the day, going forward, a new normal that has evolved from generation X is on the runway heading towards a streamlined cloud solution. User generated content in real-time will have multiple touchpoints for offshoring.
|
||||
|
||||
## Section Header
|
||||
|
||||
Capitalize on low hanging fruit to identify a ballpark value added activity to beta test. Override the digital divide with additional clickthroughs from DevOps. Nanotechnology immersion along the information highway will close the loop on focusing solely on the bottom line.
|
|
@ -0,0 +1,11 @@
|
|||
module.exports = {
|
||||
lang: "fr",
|
||||
permalink: function(data) {
|
||||
// Change (Francais) /fr/blog/my-post URLs to have an implied language code /blog/my-post URLs instead.
|
||||
let [slashPrefixEmpty, langCode, ...stem] = data.page.filePathStem.split("/");
|
||||
let path = stem.join("/");
|
||||
|
||||
// Account for `permalink: 404.html` style
|
||||
return stem[stem.length - 1] === "index" ? `${path}.html` : `${path}/index.html`;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
---
|
||||
layout: layouts/home.njk
|
||||
eleventyNavigation:
|
||||
key: i18n.nav.home
|
||||
order: 1
|
||||
---
|
||||
{% set maxPosts = collections.posts.length | min(5) %}
|
||||
<h1>{% if maxPosts == 1 %}Article{% else %}Derniers articles{% endif %}</h1>
|
||||
|
||||
{% set postslist = collections.posts | head(-5) %}
|
||||
{% set postslistCounter = collections.posts | length %}
|
||||
{% include "postslist.njk" %}
|
||||
|
||||
<p>Consulter plus d'articles dans <a href="/blog/">les archives</a>.</p>
|
||||
|
||||
{# List all of the pages in the project
|
||||
<ul>
|
||||
{%- for entry in collections.all %}
|
||||
<li><a href="{{ entry.url }}"><code>{{ entry.url }}</code></a></li>
|
||||
{%- endfor %}
|
||||
</ul>
|
||||
#}
|
|
@ -0,0 +1,12 @@
|
|||
---
|
||||
permalink: /tags/
|
||||
layout: layouts/home.njk
|
||||
---
|
||||
<h1>Tags</h1>
|
||||
|
||||
<ul>
|
||||
{% for tag in collections.all | getAllTags | filterTagList %}
|
||||
{% set tagUrl %}/tags/{{ tag | slugify }}/{% endset %}
|
||||
<li><a href="{{ tagUrl }}" class="post-tag">{{ tag }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
|
@ -0,0 +1,22 @@
|
|||
---
|
||||
pagination:
|
||||
data: collections
|
||||
size: 1
|
||||
alias: tag
|
||||
filter:
|
||||
- all
|
||||
- post
|
||||
- posts
|
||||
- tagList
|
||||
addAllPagesToCollections: true
|
||||
layout: layouts/home.njk
|
||||
eleventyComputed:
|
||||
title: Tags “{{ tag }}”
|
||||
permalink: /tags/{{ tag | slugify }}/
|
||||
---
|
||||
<h1>#{{ tag }}</h1>
|
||||
|
||||
{% set postslist = collections[ tag ] %}
|
||||
{% include "postslist.njk" %}
|
||||
|
||||
<p>Voir l'ensemble des <a href="/tags/">tags</a>.</p>
|
|
@ -0,0 +1,12 @@
|
|||
module.exports = {
|
||||
fr: {
|
||||
also: "Cette page est aussi disponible en :",
|
||||
previous: "Précédent ",
|
||||
next: "Suivant ",
|
||||
nav: {
|
||||
home: "Accueil",
|
||||
archive: "Archive",
|
||||
about: "À propos",
|
||||
}
|
||||
}
|
||||
};
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"name": "itsonus-blog",
|
||||
"version": "1.0.0",
|
||||
"description": "Blog IT's on us",
|
||||
"scripts": {
|
||||
"build": "npx @11ty/eleventy",
|
||||
"build-ghpages": "npx @11ty/eleventy --pathprefix=/itsonus-blog/",
|
||||
"bench": "DEBUG=Eleventy:Benchmark* npx @11ty/eleventy",
|
||||
"watch": "npx @11ty/eleventy --watch",
|
||||
"serve": "npx @11ty/eleventy --serve",
|
||||
"start": "npx @11ty/eleventy --serve --quiet",
|
||||
"start-ghpages": "npx @11ty/eleventy --serve --quiet --pathprefix=/itsonus-blog/",
|
||||
"debug": "DEBUG=Eleventy* npx @11ty/eleventy"
|
||||
},
|
||||
"dependencies": {
|
||||
"@11ty/eleventy": "^2.0.0-canary.15",
|
||||
"@11ty/eleventy-navigation": "^0.3.5",
|
||||
"@11ty/eleventy-plugin-rss": "^1.2.0",
|
||||
"@11ty/eleventy-plugin-syntaxhighlight": "^4.1.0",
|
||||
"luxon": "^3.0.1",
|
||||
"markdown-it-anchor": "^8.6.4",
|
||||
"rosetta": "^1.1.0"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,249 @@
|
|||
/* Defaults */
|
||||
:root {
|
||||
--font-family: Century Gothic,Avant Garde,Avenir,TeXGyreAdventorRegular,Verdana,sans-serif;
|
||||
--font-family-monospace: Consolas, Menlo, Monaco, Andale Mono WT, Andale Mono, Lucida Console, Lucida Sans Typewriter, DejaVu Sans Mono, Bitstream Vera Sans Mono, Liberation Mono, Nimbus Mono L, Courier New, Courier, monospace;
|
||||
}
|
||||
|
||||
/* Theme colors */
|
||||
:root {
|
||||
--color-gray-20: #e0e0e0;
|
||||
--color-gray-50: #C0C0C0;
|
||||
--color-gray-90: #333;
|
||||
|
||||
--background-color: #fff;
|
||||
|
||||
--text-color: rgba(0,0,10,.8);
|
||||
--text-color-secondary: #004953;
|
||||
--text-color-tertiary: #57c183;
|
||||
--text-color-link: #004953;
|
||||
--text-color-link-active: #004953;
|
||||
}
|
||||
|
||||
/*@media (prefers-color-scheme: dark) {*/
|
||||
/* :root {*/
|
||||
/* --color-gray-20: #e0e0e0;*/
|
||||
/* --color-gray-50: #C0C0C0;*/
|
||||
/* --color-gray-90: #dad8d8;*/
|
||||
|
||||
/* !* --text-color is assigned to --color-gray-_ above *!*/
|
||||
/* --text-color-link: #1493fb;*/
|
||||
/* --text-color-link-active: #6969f7;*/
|
||||
/* --text-color-link-visited: #a6a6f8;*/
|
||||
|
||||
/* --background-color: #15202b;*/
|
||||
/* }*/
|
||||
/*}*/
|
||||
|
||||
|
||||
/* Global stylesheet */
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
html,
|
||||
body {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
font-family: var(--font-family);
|
||||
color: var(--text-color);
|
||||
background-color: var(--background-color);
|
||||
}
|
||||
html {
|
||||
overflow-y: scroll;
|
||||
}
|
||||
main {
|
||||
max-width: 40em;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
h1 {
|
||||
color: var(--text-color-secondary);
|
||||
font-style: normal;
|
||||
font-size: 3em;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
h2 {
|
||||
color: var(--text-color-secondary);
|
||||
font-size: 1.7em;
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
letter-spacing: .02em;
|
||||
line-height: 1.7em;
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
p:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
p {
|
||||
line-height: 1.5;
|
||||
margin: 1.5em 0;
|
||||
}
|
||||
|
||||
li {
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
a {
|
||||
color: var(--text-color-link);
|
||||
}
|
||||
a:hover {
|
||||
color: var(--text-color-link-active);
|
||||
}
|
||||
|
||||
main {
|
||||
padding: 8rem 1rem 1rem;
|
||||
}
|
||||
main :first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
table {
|
||||
margin: 1em 0;
|
||||
}
|
||||
table td,
|
||||
table th {
|
||||
padding-right: 1em;
|
||||
}
|
||||
|
||||
pre,
|
||||
code {
|
||||
font-family: var(--font-family-monospace);
|
||||
}
|
||||
pre,
|
||||
pre[class*="language-"] {
|
||||
margin: .5em 0;
|
||||
line-height: 1.375; /* 22px /16 */
|
||||
-moz-tab-size: 2;
|
||||
-o-tab-size: 2;
|
||||
tab-size: 2;
|
||||
-webkit-hyphens: none;
|
||||
-ms-hyphens: none;
|
||||
hyphens: none;
|
||||
direction: ltr;
|
||||
text-align: left;
|
||||
white-space: pre;
|
||||
word-spacing: normal;
|
||||
word-break: normal;
|
||||
}
|
||||
code {
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
/* Header */
|
||||
.main-header {
|
||||
background: #fff;
|
||||
box-shadow: 0 2px 8px rgba(0,0,0,.25);
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
z-index: 1000;
|
||||
height: 60px;
|
||||
}
|
||||
.main-header div {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
margin: auto;
|
||||
max-width: 1400px;
|
||||
height: 60px;
|
||||
}
|
||||
.main-header-logo {
|
||||
margin: 0 23px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.main-menu {
|
||||
display: flex;
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
.nav {
|
||||
display: flex;
|
||||
flex-grow: 1;
|
||||
align-items: baseline;
|
||||
justify-content: space-around;
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
/* Nav */
|
||||
.nav-item {
|
||||
display: inline-block;
|
||||
font-weight: 900;
|
||||
letter-spacing: .02em;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.nav-item a[href]:not(:hover) {
|
||||
text-decoration: none;
|
||||
}
|
||||
.nav-item-active {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
/*!* Posts list *!*/
|
||||
/*.postlist {*/
|
||||
/* list-style: none;*/
|
||||
/* padding: 0;*/
|
||||
/* padding-left: 1.5rem;*/
|
||||
/*}*/
|
||||
.postlist-item {
|
||||
margin-bottom: 5rem;
|
||||
}
|
||||
.postlist-header h2 {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.postlist-link {
|
||||
flex-basis: calc(100% - 1.5rem);
|
||||
padding-right: .5em;
|
||||
text-decoration: none;
|
||||
}
|
||||
.postlist-footer {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
/* Tags */
|
||||
.post-tag {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
color: var(--text-color);
|
||||
background: var(--text-color-tertiary);
|
||||
padding: 4px;
|
||||
font-size: 0.8125em; /* 13px /16 */
|
||||
/*font-weight: 600;*/
|
||||
border-radius: 5px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* Tags list */
|
||||
.post-metadata {
|
||||
display: flex;
|
||||
gap: .5em;
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
.post-metadata time {
|
||||
margin-right: 1em;
|
||||
font-size: 0.8125em; /* 13px /16 */
|
||||
color: rgba(0,0,10,.55);
|
||||
}
|
||||
.post-metadata li:first-child {
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
/* Direct Links / Markdown Headers */
|
||||
.direct-link {
|
||||
font-family: sans-serif;
|
||||
text-decoration: none;
|
||||
font-style: normal;
|
||||
margin-left: .1em;
|
||||
}
|
||||
a[href].direct-link {
|
||||
color: transparent;
|
||||
}
|
||||
a[href].direct-link:focus,
|
||||
:hover > a[href].direct-link {
|
||||
color: #aaa;
|
||||
}
|
|
@ -0,0 +1,45 @@
|
|||
/*
|
||||
* New diff- syntax
|
||||
*/
|
||||
|
||||
pre[class*="language-diff-"] {
|
||||
--eleventy-code-padding: 1.25em;
|
||||
padding-left: var(--eleventy-code-padding);
|
||||
padding-right: var(--eleventy-code-padding);
|
||||
}
|
||||
.token.deleted {
|
||||
background-color: hsl(0, 51%, 37%);
|
||||
color: inherit;
|
||||
}
|
||||
.token.inserted {
|
||||
background-color: hsl(126, 31%, 39%);
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
/* Make the + and - characters unselectable for copy/paste */
|
||||
.token.prefix.unchanged,
|
||||
.token.prefix.inserted,
|
||||
.token.prefix.deleted {
|
||||
-webkit-user-select: none;
|
||||
user-select: none;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding-top: 2px;
|
||||
padding-bottom: 2px;
|
||||
}
|
||||
.token.prefix.inserted,
|
||||
.token.prefix.deleted {
|
||||
width: var(--eleventy-code-padding);
|
||||
background-color: rgba(0,0,0,.2);
|
||||
}
|
||||
|
||||
/* Optional: full-width background color */
|
||||
.token.inserted:not(.prefix),
|
||||
.token.deleted:not(.prefix) {
|
||||
display: block;
|
||||
margin-left: calc(-1 * var(--eleventy-code-padding));
|
||||
margin-right: calc(-1 * var(--eleventy-code-padding));
|
||||
text-decoration: none; /* override del, ins, mark defaults */
|
||||
color: inherit; /* override del, ins, mark defaults */
|
||||
}
|
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 4.9 KiB |
|
@ -0,0 +1 @@
|
|||
<svg width="165" height="33" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3 3.346h2.72v26.455H3zM9.262 5.943V3.346h14.942v2.587h-6.078V29.8H15.34V5.943zM31.254 13.222l-1.425-.796c.464-.911.788-1.623.95-2.136.162-.514.28-1.184.356-2h-1.63V3.345h3.358v3.09c0 1.55-.108 2.764-.324 3.644-.227.88-.648 1.927-1.285 3.142zM51.184 11.86l-1.663 1.676c-1.392-1.309-2.742-1.958-4.07-1.958-.842 0-1.565.272-2.17.806s-.907 1.173-.907 1.885c0 .64.248 1.236.745 1.812.497.587 1.533 1.278 3.12 2.074 1.933.974 3.25 1.906 3.94 2.806a5.024 5.024 0 011.026 3.08c0 1.602-.583 2.963-1.749 4.084-1.166 1.11-2.623 1.676-4.361 1.676a7.97 7.97 0 01-3.336-.734 7.226 7.226 0 01-2.624-2.031l1.63-1.802c1.328 1.456 2.732 2.179 4.222 2.179 1.036 0 1.922-.325 2.656-.974.734-.65 1.101-1.414 1.101-2.283 0-.723-.238-1.362-.723-1.927-.486-.555-1.577-1.247-3.272-2.084-1.824-.912-3.055-1.812-3.714-2.702-.658-.89-.982-1.896-.982-3.038 0-1.487.518-2.723 1.565-3.707 1.048-.984 2.365-1.477 3.963-1.477 1.857 0 3.724.88 5.603 2.64z" fill="#004953"/><path d="M80.851 26.948c1.219.058 4.115-1.686 5.513-3.363 1.388-1.67 2.258-5.025 1.67-7.315-.239-.917-3.962-3.33-6.944-3.33-3.63 0-6.305 1.909-7.378 3.24-.392.495-.443 3.925 1.048 6.529 1.678 2.925 5.078 4.19 6.091 4.24z" fill="#57c183"/><path d="M82.964 28.378c-5.93 0-10.76-4.686-10.76-10.438 0-5.752 4.83-10.438 10.76-10.438s10.76 4.686 10.76 10.438c0 5.752-4.821 10.438-10.76 10.438zm0-20.67c-5.819 0-10.547 4.587-10.547 10.232s4.728 10.232 10.547 10.232c5.82 0 10.548-4.587 10.548-10.232S88.783 7.708 82.964 7.708z" fill="#004953"/><path d="M78.543 28.378c-5.93 0-10.761-4.686-10.761-10.438 0-5.752 4.822-10.438 10.76-10.438 5.939 0 10.761 4.686 10.761 10.438 0 5.752-4.83 10.438-10.76 10.438zm0-20.67c-5.82 0-10.548 4.587-10.548 10.232s4.728 10.232 10.548 10.232c5.819 0 10.547-4.587 10.547-10.232S84.362 7.708 78.543 7.708z" fill="#004953"/><path d="M80.766 32.783c-5.93 0-10.76-4.686-10.76-10.438 0-5.752 4.822-10.438 10.76-10.438 5.939 0 10.76 4.686 10.76 10.438 0 5.752-4.83 10.438-10.76 10.438zm0-20.67c-5.819 0-10.547 4.587-10.547 10.232s4.728 10.232 10.547 10.232c5.82 0 10.548-4.587 10.548-10.232 0-5.636-4.729-10.232-10.548-10.232z" fill="#004953"/><path d="M80.843 8.832c.536 0 .971-.422.971-.942s-.435-.942-.971-.942c-.537 0-.971.422-.971.942s.434.942.97.942z" fill="#fff"/><path d="M80.843 9.047c-.656 0-1.184-.512-1.184-1.149 0-.636.536-1.157 1.184-1.157.647 0 1.184.513 1.184 1.15 0 .636-.528 1.156-1.184 1.156zm0-1.892a.749.749 0 00-.758.735c0 .405.34.736.758.736.417 0 .758-.33.758-.736a.743.743 0 00-.758-.735z" fill="#004953"/><path d="M91.28 25.428c.536 0 .971-.422.971-.943 0-.52-.435-.942-.971-.942-.537 0-.972.422-.972.942s.435.943.972.943z" fill="#fff"/><path d="M91.28 25.643c-.656 0-1.185-.521-1.185-1.15 0-.627.537-1.148 1.185-1.148.647 0 1.184.52 1.184 1.149 0 .628-.528 1.149-1.184 1.149zm0-1.893a.749.749 0 00-.759.735c0 .405.341.736.759.736.417 0 .758-.33.758-.736a.743.743 0 00-.758-.735z" fill="#004953"/><path d="M70.355 25.428c.536 0 .971-.422.971-.943 0-.52-.435-.942-.971-.942s-.971.422-.971.942.435.943.971.943z" fill="#fff"/><path d="M70.355 25.643c-.656 0-1.184-.521-1.184-1.15 0-.627.536-1.148 1.184-1.148.647 0 1.184.52 1.184 1.149 0 .628-.537 1.149-1.184 1.149zm0-1.893a.749.749 0 00-.758.735c0 .405.34.736.758.736.417 0 .758-.33.758-.736a.749.749 0 00-.758-.735zM97.293 10.227h2.59v3.508c1.037-1.34 2.193-2.346 3.445-3.016 1.263-.67 2.634-.995 4.114-.995 1.51 0 2.85.367 4.016 1.11a6.766 6.766 0 012.59 3.006c.562 1.257.832 3.215.832 5.886V29.8h-2.591v-9.332c0-2.251-.097-3.76-.291-4.514-.303-1.298-.875-2.272-1.728-2.922-.853-.649-1.965-.984-3.336-.984-1.565 0-2.98.503-4.221 1.508-1.242 1.006-2.063 2.252-2.462 3.739-.248.974-.367 2.744-.367 5.32v7.174h-2.591z" fill="#004953"/><path d="M131.752 9.52h2.303v11.866c0 1.408.027 2.287.091 2.63.11.778.383 1.424.804 1.945.42.521 1.06.957 1.928 1.307.868.35 1.745.53 2.622.53.768 0 1.5-.14 2.193-.413a4.744 4.744 0 001.755-1.152c.476-.49.813-1.081 1.032-1.774.156-.498.238-1.525.238-3.073V9.52h2.303v11.866c0 1.758-.201 3.174-.603 4.256-.402 1.081-1.206 2.023-2.412 2.824-1.206.802-2.669 1.199-4.386 1.199-1.865 0-3.455-.382-4.79-1.137-1.324-.754-2.22-1.758-2.667-3.003-.284-.762-.42-2.147-.42-4.14z" fill="#004953" stroke="#004953" stroke-width=".272"/><path d="M161.978 11.86l-1.673 1.676c-1.393-1.309-2.742-1.958-4.07-1.958-.842 0-1.566.272-2.17.806-.605.534-.896 1.173-.896 1.885 0 .64.248 1.236.745 1.812.496.587 1.533 1.278 3.12 2.074 1.932.974 3.249 1.906 3.94 2.806a5.019 5.019 0 011.026 3.08c0 1.602-.583 2.963-1.749 4.084-1.166 1.11-2.623 1.676-4.362 1.676a7.97 7.97 0 01-3.336-.734 7.116 7.116 0 01-2.623-2.031l1.63-1.802c1.328 1.456 2.731 2.179 4.221 2.179 1.037 0 1.933-.325 2.656-.974.724-.65 1.101-1.414 1.101-2.283 0-.723-.237-1.362-.723-1.927-.486-.555-1.576-1.247-3.271-2.084-1.825-.912-3.056-1.812-3.714-2.702-.659-.89-.983-1.896-.983-3.038 0-1.487.519-2.723 1.566-3.707 1.047-.984 2.364-1.477 3.962-1.477 1.857 0 3.725.88 5.603 2.64z" fill="#004953"/></svg>
|
After Width: | Height: | Size: 4.9 KiB |
|
@ -0,0 +1,21 @@
|
|||
---
|
||||
permalink: /sitemap.xml
|
||||
eleventyExcludeFromCollections: true
|
||||
---
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml">
|
||||
{%- for page in collections.all %}
|
||||
{% set absoluteUrl %}{{ page.url | htmlBaseUrl(metadata.url) }}{% endset %}
|
||||
<url>
|
||||
<loc>{{ absoluteUrl }}</loc>
|
||||
<lastmod>{{ page.date | htmlDateString }}</lastmod>
|
||||
{%- set alternateUrls = page.url | locale_links %}
|
||||
{%- if alternateUrls.length %}
|
||||
<xhtml:link rel="alternate" hreflang="{{ page.data.page.lang }}" href="{{ absoluteUrl }}"/>
|
||||
{%- for link in alternateUrls %}
|
||||
<xhtml:link rel="alternate" hreflang="{{ link.lang }}" href="{{ link.url | htmlBaseUrl(metadata.url) }}"/>
|
||||
{%- endfor %}
|
||||
{%- endif %}
|
||||
</url>
|
||||
{%- endfor %}
|
||||
</urlset>
|
Loading…
Reference in New Issue