Skip to content

Commit

Permalink
Tag navigation, better directory layout
Browse files Browse the repository at this point in the history
  • Loading branch information
Princesseuh committed Dec 19, 2021
1 parent 6aa96e1 commit ced667e
Show file tree
Hide file tree
Showing 16 changed files with 74 additions and 71 deletions.
2 changes: 1 addition & 1 deletion .vscode/settings.json
Expand Up @@ -14,5 +14,5 @@
"prettier.documentSelectors": ["**/*.astro"],
"markdownlint.config": {
"MD033": false // Since we use components in our markdown files, we disable this rule that prevents HTML
}
},
}
28 changes: 28 additions & 0 deletions src/components/articleList/ArticleListAside.astro
@@ -0,0 +1,28 @@
---
import { Article } from "$data/articles"
const articles = (await Astro.fetchContent("/content/articles/**/*.md")) as Article[]
const tags: Array<[string, number]> = [
...articles
.flatMap((article) => [...article.tags])
.reduce((acc, e) => acc.set(e, (acc.get(e) || 0) + 1), new Map()),
].sort((a, b) => {
return b[1] - a[1]
})
---

<aside class="sm:w-[20%]">
<section>
<h2>Tags</h2>
<ul>
{tags.map((tag) => (
<li>
<a href={"/articles/tags/" + tag[0]}>{tag[0]}</a> ({tag[1]})
</li>
))}
</ul>
</section>
<section>
<h2>Year</h2>
</section>
</aside>
@@ -1,5 +1,5 @@
---
import Socials from "$components/Socials.astro"
import Socials from "$components/layout/Socials.astro"
const menu = ["Projects", "Articles", "Wiki", "Catalogue"]
---

Expand Down
File renamed without changes.
@@ -1,6 +1,6 @@
---
import { Article } from "$data/articles"
import { readableDate } from "../utils"
import { readableDate } from "$utils"
export interface Props {
article: Article
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
2 changes: 1 addition & 1 deletion src/layouts/ArticleLayout.astro
@@ -1,6 +1,6 @@
---
import BaseLayout from "$layouts/BaseLayout.astro"
import ContentHeader from "$components/ContentHeader.astro"
import ContentHeader from "$components/shared/ContentHeader.astro"
const { article } = Astro.props
---
Expand Down
26 changes: 26 additions & 0 deletions src/layouts/ArticleListLayout.astro
@@ -0,0 +1,26 @@
---
import BaseLayout from "$layouts/BaseLayout.astro"
import ArticlePreview from "$components/shared/ArticlePreview.astro"
import ArticleListAside from "$components/articleList/ArticleListAside.astro"
const { page, title } = Astro.props
---

<BaseLayout {title}>
<article class="w-articleList mx-auto flex flex-col md:flex-row">
<div class="sm:w-[80%]">
<h2>{title}</h2>
{page.data.map((item) => <ArticlePreview article={item} />)}
<div>
{page.url.prev && <a href={page.url.prev}>Newer posts</a>}
{page.url.next && (
<a class="float-right" href={page.url.next}>
Older posts
</a>
)}
</div>
</div>

<ArticleListAside />
</article>
</BaseLayout>
4 changes: 2 additions & 2 deletions src/layouts/BaseLayout.astro
@@ -1,6 +1,6 @@
---
import Header from "$components/Header.astro"
import Socials from "$components/Socials.astro"
import Header from "$components/layout/Header.astro"
import Socials from "$components/layout/Socials.astro"
import { Sprite } from "astro-icon"
import { generateSocialImage } from "astro-social-images"
Expand Down
6 changes: 3 additions & 3 deletions src/layouts/WikiLayout.astro
@@ -1,8 +1,8 @@
---
import BaseLayout from "$layouts/BaseLayout.astro"
import WikiNavigation from "$components/WikiNavigation.astro"
import ContentHeader from "$components/ContentHeader.astro"
import WikiTOC from "$components/WikiTOC.astro"
import WikiNavigation from "$components/wiki/WikiNavigation.astro"
import ContentHeader from "$components/shared/ContentHeader.astro"
import WikiTOC from "$components/wiki/WikiTOC.astro"
import { readableDate } from "$utils"
const { wikiItem } = Astro.props
Expand Down
34 changes: 4 additions & 30 deletions src/pages/articles/[...page].astro
@@ -1,10 +1,9 @@
---
import BaseLayout from "$layouts/BaseLayout.astro"
import ArticlePreview from "$components/ArticlePreview.astro"
import { postProcessArticle } from "$data/articles"
import ArticleListLayout from "$layouts/ArticleListLayout.astro"
import { postProcessArticle, Article } from "$data/articles"
export async function getStaticPaths({ paginate }) {
let articles = await Astro.fetchContent("/content/articles/**/*.md")
let articles = (await Astro.fetchContent("/content/articles/**/*.md")) as Article[]
articles = articles
.map((article) => postProcessArticle(article))
.sort((a, b) => {
Expand All @@ -17,29 +16,4 @@ export async function getStaticPaths({ paginate }) {
const { page } = Astro.props
---

<BaseLayout title="Articles">
<article class="w-articleList mx-auto flex flex-col md:flex-row">
<div class="sm:w-[80%]">
<h2>Articles</h2>
{page.data.map((item) => <ArticlePreview article={item} />)}
<div>
{page.url.prev && <a href={page.url.prev}>Newer posts</a>}
{page.url.next && (
<a class="float-right" href={page.url.next}>
Older posts
</a>
)}
</div>
</div>

<aside class="sm:w-[20%]">
<section>
<h2>Tags</h2>
<ul></ul>
</section>
<section>
<h2>Year</h2>
</section>
</aside>
</article>
</BaseLayout>
<ArticleListLayout {page} title="Articles" />
35 changes: 5 additions & 30 deletions src/pages/articles/tags/[tag]/[...page].astro
@@ -1,10 +1,9 @@
---
import BaseLayout from "$layouts/BaseLayout.astro"
import ArticlePreview from "$components/ArticlePreview.astro"
import { postProcessArticle } from "$data/articles"
import ArticleListLayout from "$layouts/ArticleListLayout.astro"
import { postProcessArticle, Article } from "$data/articles"
export async function getStaticPaths({ paginate }) {
let articles = await Astro.fetchContent("/content/articles/**/*.md")
let articles = (await Astro.fetchContent("/content/articles/**/*.md")) as Article[]
articles = articles
.map((article) => postProcessArticle(article))
.sort((a, b) => {
Expand All @@ -25,31 +24,7 @@ export async function getStaticPaths({ paginate }) {
}
const { page } = Astro.props
const tag = Astro.request.params.tag
---

<BaseLayout title="Articles">
<article class="w-articleList mx-auto flex flex-col md:flex-row">
<div class="sm:w-[80%]">
<h2>Articles</h2>
{page.data.map((item) => <ArticlePreview article={item} />)}
<div>
{page.url.prev && <a href={page.url.prev}>Newer posts</a>}
{page.url.next && (
<a class="float-right" href={page.url.next}>
Older posts
</a>
)}
</div>
</div>

<aside class="sm:w-[20%]">
<section>
<h2>Tags</h2>
<ul></ul>
</section>
<section>
<h2>Year</h2>
</section>
</aside>
</article>
</BaseLayout>
<ArticleListLayout {page} title={"Articles tagged " + tag} />
2 changes: 1 addition & 1 deletion src/pages/index.astro
@@ -1,6 +1,6 @@
---
import BaseLayout from "$layouts/BaseLayout.astro"
import ArticlePreview from "$components/ArticlePreview.astro"
import ArticlePreview from "$components/shared/ArticlePreview.astro"
import { postProcessArticle } from "$data/articles"
import { postProcessWikiItem } from "$data/wiki"
import { postProcessProject } from "$data/projects"
Expand Down
2 changes: 1 addition & 1 deletion tsconfig.json
Expand Up @@ -13,5 +13,5 @@
},
"types": ["vite/client", "node"]
},
"exclude": ["node_modules", "**/node_modules/*", ".vscode"]
"exclude": ["node_modules", "**/node_modules/*", ".vscode", "dist"]
}

0 comments on commit ced667e

Please sign in to comment.