├── public
├── favicon.ico
├── favicon-192.png
├── favicon-512.png
├── favicon-dev.ico
├── favicon-dev-192.png
├── favicon-dev-512.png
├── apple-touch-icon.png
├── apple-touch-icon-dev.png
├── blog-placeholder-1.jpg
├── blog-placeholder-2.jpg
├── blog-placeholder-3.jpg
├── blog-placeholder-4.jpg
├── blog-placeholder-5.jpg
├── blog-placeholder-about.jpg
├── manifest.webmanifest
├── favicon-dev.svg
└── favicon.svg
├── src
├── env.d.ts
├── pages
│ ├── de
│ │ ├── blog.md
│ │ ├── thema.md
│ │ └── index.md
│ ├── blog.md
│ ├── nl
│ │ ├── blog.md
│ │ ├── onderwerp.md
│ │ ├── index.md
│ │ └── over.mdx
│ ├── tag.md
│ ├── index.md
│ ├── rss-de.xml.ts
│ ├── rss-en.xml.ts
│ ├── rss-nl.xml.ts
│ ├── rss.xml.ts
│ ├── about.mdx
│ ├── [...blogPost].astro
│ ├── [...person].astro
│ ├── [...blogPostsPerTag].astro
│ └── 404.astro
├── types.ts
├── components
│ ├── PeopleList.astro
│ ├── FormattedDate.astro
│ ├── TranslationsBanner.astro
│ ├── PostTags.astro
│ ├── HeaderLink.astro
│ ├── DescriptionMeta.astro
│ ├── TranslationLinks.astro
│ ├── Byline.astro
│ ├── Header.astro
│ ├── SkipLink.astro
│ ├── Html.astro
│ ├── Head.astro
│ └── MainI18n.astro
├── consts.ts
├── utilities
│ ├── getPageNumbers.ts
│ ├── getPagePath.ts
│ ├── getPostsToRenderInRSS.ts
│ ├── getPublishedPosts.ts
│ ├── getPostPath.ts
│ ├── getPagination.ts
│ ├── people.ts
│ ├── getPageDescription.ts
│ └── tags.ts
├── styles
│ ├── prose.css
│ └── global.css
├── layouts
│ ├── Page.astro
│ ├── 404.astro
│ ├── TagArchive.astro
│ ├── PostsPerTag.astro
│ ├── Person.astro
│ ├── Post.astro
│ └── Archive.astro
├── header.ts
├── content
│ ├── config.ts
│ └── blog
│ │ ├── nl
│ │ ├── tweede-post.md
│ │ └── derde-post.md
│ │ ├── de
│ │ ├── erster-post.md
│ │ └── zweiter-post.md
│ │ ├── second-post.mdx
│ │ ├── first-post.md
│ │ └── third-post.md
├── i18n
│ ├── utilities.ts
│ ├── i18n.ts
│ └── uiStrings.ts
└── people.ts
├── .vscode
├── extensions.json
└── launch.json
├── .gitignore
├── tsconfig.json
├── package.json
├── astro.config.mjs
└── README.md
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kslstn/astro-i18n-blog-starter/HEAD/public/favicon.ico
--------------------------------------------------------------------------------
/src/env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
--------------------------------------------------------------------------------
/public/favicon-192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kslstn/astro-i18n-blog-starter/HEAD/public/favicon-192.png
--------------------------------------------------------------------------------
/public/favicon-512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kslstn/astro-i18n-blog-starter/HEAD/public/favicon-512.png
--------------------------------------------------------------------------------
/public/favicon-dev.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kslstn/astro-i18n-blog-starter/HEAD/public/favicon-dev.ico
--------------------------------------------------------------------------------
/public/favicon-dev-192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kslstn/astro-i18n-blog-starter/HEAD/public/favicon-dev-192.png
--------------------------------------------------------------------------------
/public/favicon-dev-512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kslstn/astro-i18n-blog-starter/HEAD/public/favicon-dev-512.png
--------------------------------------------------------------------------------
/public/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kslstn/astro-i18n-blog-starter/HEAD/public/apple-touch-icon.png
--------------------------------------------------------------------------------
/public/apple-touch-icon-dev.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kslstn/astro-i18n-blog-starter/HEAD/public/apple-touch-icon-dev.png
--------------------------------------------------------------------------------
/public/blog-placeholder-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kslstn/astro-i18n-blog-starter/HEAD/public/blog-placeholder-1.jpg
--------------------------------------------------------------------------------
/public/blog-placeholder-2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kslstn/astro-i18n-blog-starter/HEAD/public/blog-placeholder-2.jpg
--------------------------------------------------------------------------------
/public/blog-placeholder-3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kslstn/astro-i18n-blog-starter/HEAD/public/blog-placeholder-3.jpg
--------------------------------------------------------------------------------
/public/blog-placeholder-4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kslstn/astro-i18n-blog-starter/HEAD/public/blog-placeholder-4.jpg
--------------------------------------------------------------------------------
/public/blog-placeholder-5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kslstn/astro-i18n-blog-starter/HEAD/public/blog-placeholder-5.jpg
--------------------------------------------------------------------------------
/public/blog-placeholder-about.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kslstn/astro-i18n-blog-starter/HEAD/public/blog-placeholder-about.jpg
--------------------------------------------------------------------------------
/src/pages/de/blog.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: '@layouts/Archive.astro'
3 | title: Blog
4 | collection: blog
5 | reference: blog
6 | ---
7 | Hier ist der Blog.
--------------------------------------------------------------------------------
/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": ["astro-build.astro-vscode", "unifiedjs.vscode-mdx"],
3 | "unwantedRecommendations": []
4 | }
5 |
--------------------------------------------------------------------------------
/src/pages/blog.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: '@layouts/Archive.astro'
3 | title: Blog
4 | description: ''
5 | collection: blog
6 | reference: blog
7 | ---
8 | Here's the blog archive.
--------------------------------------------------------------------------------
/src/pages/nl/blog.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: '@layouts/Archive.astro'
3 | title: Blog
4 | description: ''
5 | collection: blog
6 | reference: blog
7 | ---
8 | Hier zijn de Nederlandse posts.
--------------------------------------------------------------------------------
/src/pages/tag.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: '@layouts/TagArchive.astro'
3 | title: All tags
4 | collection: blog
5 | reference: tagArchive
6 | ---
7 | Here are all topics discussed in blog posts on this website.
--------------------------------------------------------------------------------
/public/manifest.webmanifest:
--------------------------------------------------------------------------------
1 | {
2 | "icons": [
3 | { "src": "/favicon-192.png", "type": "image/png", "sizes": "192x192" },
4 | { "src": "/favicon-512.png", "type": "image/png", "sizes": "512x512" }
5 | ]
6 | }
--------------------------------------------------------------------------------
/src/pages/de/thema.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: '@layouts/TagArchive.astro'
3 | title: Alle Themen
4 | description: Alle themen auf dieser Webseite mit Links zu Posts.
5 | collection: blog
6 | reference: tagArchive
7 | ---
8 |
--------------------------------------------------------------------------------
/src/pages/nl/onderwerp.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: '@layouts/TagArchive.astro'
3 | title: Alle onderwerpen
4 | description: Alle onderwerp met posts op deze website.
5 | collection: blog
6 | reference: tagArchive
7 | ---
8 |
--------------------------------------------------------------------------------
/src/types.ts:
--------------------------------------------------------------------------------
1 | export interface CommonFrontmatter {
2 | title?: string,
3 | reference?: string,
4 | description?: string,
5 | image?: string,
6 | previewImage?: string,
7 | canonicalURL?: string,
8 | file?: string,
9 | }
10 |
--------------------------------------------------------------------------------
/src/pages/nl/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Thuis
3 | layout: '@layouts/Page.astro'
4 | reference: home
5 | description:
6 | ---
7 | Welkom!
8 |
9 | Dit is een demo-site voor de [Astro i18n blog starter](https://github.com/kslstn/astro-i18n-blog-starter).
--------------------------------------------------------------------------------
/src/pages/de/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Home
3 | layout: '@layouts/Page.astro'
4 | reference: home
5 | ---
6 | Herzlich Willkommen!
7 |
8 | Dies ist eine Demo-Webseite für den [Astro i18n blog starter](https://github.com/kslstn/astro-i18n-blog-starter).
9 |
--------------------------------------------------------------------------------
/src/components/PeopleList.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import { people, getPersonPath } from "@utilities/people";
3 | ---
4 |
5 |
--------------------------------------------------------------------------------
/src/pages/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Home
3 | layout: '@layouts/Page.astro'
4 | reference: home
5 | description: This is the English homepage.
6 | ---
7 | Welcome!
8 |
9 | This is a demo site for the [Astro i18n blog starter](https://github.com/kslstn/astro-i18n-blog-starter).
--------------------------------------------------------------------------------
/.vscode/launch.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "0.2.0",
3 | "configurations": [
4 | {
5 | "command": "./node_modules/.bin/astro dev",
6 | "name": "Development server",
7 | "request": "launch",
8 | "type": "node-terminal"
9 | }
10 | ]
11 | }
12 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # build output
2 | dist/
3 | # generated types
4 | .astro/
5 |
6 | # dependencies
7 | node_modules/
8 |
9 | # logs
10 | npm-debug.log*
11 | yarn-debug.log*
12 | yarn-error.log*
13 | pnpm-debug.log*
14 |
15 |
16 | # environment variables
17 | .env
18 | .env.production
19 |
20 | # macOS-specific files
21 | .DS_Store
22 |
--------------------------------------------------------------------------------
/src/components/FormattedDate.astro:
--------------------------------------------------------------------------------
1 | ---
2 | interface Props {
3 | date: Date;
4 | }
5 | const { date } = Astro.props;
6 | const lang = Astro.currentLocale;
7 | ---
8 |
17 |
--------------------------------------------------------------------------------
/src/consts.ts:
--------------------------------------------------------------------------------
1 | // Place any global data in this file.
2 | // You can import this data from anywhere in your site by using the `import` keyword.
3 |
4 | export const site = "https://example.com";
5 | export const siteTitle = "Astro Blog Starter";
6 | export const siteThemeColor = "#27AE60";
7 | export const pagination = {
8 | postsPerPage: 12,
9 | };
10 |
--------------------------------------------------------------------------------
/public/favicon-dev.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "astro/tsconfigs/strict",
3 | "compilerOptions": {
4 | "strictNullChecks": false,
5 | "baseUrl": ".",
6 | "paths": {
7 | "@i18n/*": ["src/i18n/*"],
8 | "@components/*": ["src/components/*"],
9 | "@content/*": ["src/content/*"],
10 | "@layouts/*": ["src/layouts/*"],
11 | "@src/*": ["src/*"],
12 | "@utilities/*": ["src/utilities/*"],
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/src/utilities/getPageNumbers.ts:
--------------------------------------------------------------------------------
1 | import { pagination } from "../consts";
2 |
3 | const getPageNumbers = (numberOfPosts: number) => {
4 | const numberOfPages = numberOfPosts / Number(pagination.postsPerPage);
5 |
6 | let pageNumbers: number[] = [];
7 | for (let i = 1; i <= Math.ceil(numberOfPages); i++) {
8 | pageNumbers = [...pageNumbers, i];
9 | }
10 |
11 | return pageNumbers;
12 | };
13 |
14 | export default getPageNumbers;
15 |
--------------------------------------------------------------------------------
/src/styles/prose.css:
--------------------------------------------------------------------------------
1 | :where(.prose) {
2 | :where(h1, h2, h3, h4, p, figure, blockquote, dl, dd, ul, ol) {
3 | margin-top: 1em;
4 | }
5 |
6 | :where(ul, ol) {
7 | padding-inline-start: 1em;
8 |
9 | :where(ul, ol) {
10 | margin-top: 0;
11 | }
12 | }
13 |
14 | :where(ul) {
15 | list-style-type: initial;
16 | }
17 |
18 | :where(ol) {
19 | list-style-type: decimal;
20 | }
21 |
22 | :where(li) :where(p:first-child) {
23 | margin: 0;
24 | }
25 | }
--------------------------------------------------------------------------------
/src/layouts/Page.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import MainI18n from "@components/MainI18n.astro";
3 | import type { CommonFrontmatter } from "@src/types";
4 | interface Props {
5 | frontmatter: CommonFrontmatter
6 | }
7 |
8 | const
9 | {frontmatter} = Astro.props,
10 | title = frontmatter?.title || '';
11 | ---
12 |
13 |
14 | {title &&
15 | {title}
16 | }
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/src/layouts/404.astro:
--------------------------------------------------------------------------------
1 | ---
2 | import Html from "@components/Html.astro";
3 | import Header from "@components/Header.astro";
4 | import type { CommonFrontmatter } from "@src/types";
5 |
6 | interface Props {
7 | frontmatter: CommonFrontmatter
8 | }
9 |
10 | const
11 | {frontmatter} = Astro.props,
12 | title = frontmatter.title;
13 | ---
14 |