From 17a95bafa24bf48277b1b08dc6f0db8d0521117a Mon Sep 17 00:00:00 2001 From: khalilcodes Date: Wed, 13 Apr 2022 02:00:36 +0300 Subject: [PATCH] [site/pages]: create index page for all content --- site/pages/all.js | 52 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 site/pages/all.js diff --git a/site/pages/all.js b/site/pages/all.js new file mode 100644 index 0000000..9f92e49 --- /dev/null +++ b/site/pages/all.js @@ -0,0 +1,52 @@ +import { NextSeo } from "next-seo"; +import { allOtherPages } from "contentlayer/generated"; + +export default function All({ pages }) { + const labels = new Set(pages.map((p) => p.wikiPage.charAt(0))); + return ( + <> + +
+

A-Z Index

+ {Array.from(labels).map((pageTitle) => ( +
+

{pageTitle}

+
+
    + {pages.map( + ({ wikiPage, wikiPath }) => + pageTitle === wikiPage.charAt(0) && ( +
  • + {wikiPage} +
  • + ) + )} +
+
+ ))} +
+ + ); +} + +export async function getStaticProps() { + const pages = allOtherPages + .map((page) => { + const wikiPath = page._raw.flattenedPath; + const wikiPage = wikiPath + .split("/") + .pop() + .replace(/-/g, " ") + .replace( + /^(\w)(.+)/, + (match, p1, p2) => p1.toUpperCase() + p2.toLowerCase() + ); + + return { wikiPage, wikiPath }; + }) + .sort((a, b) => a.wikiPage.localeCompare(b.wikiPage)); + + return { + props: { pages }, + }; +}