aboutsummaryrefslogtreecommitdiff
path: root/components/updates
diff options
context:
space:
mode:
authorAndrew Lee <alee14498@protonmail.com>2023-07-17 20:42:50 -0400
committerAndrew Lee <alee14498@protonmail.com>2023-07-17 20:42:50 -0400
commitc4c55a93bc6af8b15f45225169758e08ff1b13cd (patch)
treebf7e7c4070e462e99bcea327588c323025b6a0bb /components/updates
downloadsei-website-c4c55a93bc6af8b15f45225169758e08ff1b13cd.tar.gz
sei-website-c4c55a93bc6af8b15f45225169758e08ff1b13cd.tar.bz2
sei-website-c4c55a93bc6af8b15f45225169758e08ff1b13cd.zip
Initial rewrite
Diffstat (limited to 'components/updates')
-rw-r--r--components/updates/DateFormatter.js9
-rw-r--r--components/updates/PostPreview.js15
-rw-r--r--components/updates/getPostMetadata.js24
3 files changed, 48 insertions, 0 deletions
diff --git a/components/updates/DateFormatter.js b/components/updates/DateFormatter.js
new file mode 100644
index 0000000..9e236d0
--- /dev/null
+++ b/components/updates/DateFormatter.js
@@ -0,0 +1,9 @@
+
+import { parseISO, format } from 'date-fns'
+
+const DateFormatter = (dateString) => {
+ const date = parseISO(dateString)
+ return <time dateTime={dateString}>{format(date, 'LLLL d, yyyy')}</time>
+}
+
+export default DateFormatter
diff --git a/components/updates/PostPreview.js b/components/updates/PostPreview.js
new file mode 100644
index 0000000..ca261c0
--- /dev/null
+++ b/components/updates/PostPreview.js
@@ -0,0 +1,15 @@
+import Link from "next/link";
+import DateFormatter from '@/components/updates/DateFormatter'
+
+export default function PostPreview(props) {
+ return (
+ <div key="post" className="bg-zinc-800 py-3 px-5 border border-gray-600 rounded-lg space-y-3">
+ <Link href={`/updates/${props.slug}`}>
+ <h2 className="font-medium text-2xl hover:underline">{props.title}</h2>
+ </Link>
+ <span>By {props.author}</span>
+ <p>{props.description}</p>
+ <p className="font-medium text-sm">Posted on {DateFormatter(props.date)}</p>
+ </div>
+ )
+}
diff --git a/components/updates/getPostMetadata.js b/components/updates/getPostMetadata.js
new file mode 100644
index 0000000..515cc79
--- /dev/null
+++ b/components/updates/getPostMetadata.js
@@ -0,0 +1,24 @@
+import {readdirSync, readFileSync} from "fs";
+import matter from "gray-matter";
+
+export default function getPostMetadata() {
+ const folder = "posts/";
+ const files = readdirSync(folder);
+ const markdownPosts = files.filter((file) => file.endsWith(".md"));
+
+ const posts = markdownPosts.map((fileName) => {
+ const fileContent = readFileSync(`posts/${fileName}`, "utf-8");
+ const matterResult = matter(fileContent);
+ return {
+ title: matterResult.data.title,
+ author: matterResult.data.author,
+ date: matterResult.data.date,
+ description: matterResult.data.description,
+ slug: fileName.replace(".md", "")
+ }
+ })
+
+ // Sort the posts by date in descending order
+ posts.sort((a, b) => new Date(b.date) - new Date(a.date));
+ return posts
+}