0
mirror of https://github.com/valentineus/popov.link.git synced 2025-07-04 16:40:26 +03:00

Added reading time timer

This commit is contained in:
2024-09-06 08:21:27 +00:00
parent 17c3115a06
commit 2f362eaf09
9 changed files with 59 additions and 46 deletions

View File

@ -1,5 +0,0 @@
---
const canonicalURL = new URL(Astro.url.pathname, Astro.site);
---
<link href={canonicalURL} rel="canonical" />

View File

@ -1,24 +0,0 @@
---
import BaseLayout from "../layouts/BaseLayout.astro";
---
<style>
.header {
text-align: center;
}
</style>
<BaseLayout>
<div class="header">
<h1>Title</h1>
<p>
<small>
Posted
<time datetime="#">#</time>
&nbsp;by&nbsp;Valentin Popov&nbsp;
<strong>1 min read</strong>
</small>
</p>
</div>
<slot />
</BaseLayout>

View File

@ -1,6 +1,6 @@
---
import { type CollectionEntry, getCollection } from "astro:content";
import Layout from "../../layouts/PostLayout.astro";
import Layout from "../../layouts/PageLayout.astro";
export async function getStaticPaths() {
const posts = await getCollection("blog");
@ -12,9 +12,26 @@ export async function getStaticPaths() {
type Props = CollectionEntry<"blog">;
const post = Astro.props;
const { Content } = await post.render();
const { Content, remarkPluginFrontmatter } = await post.render();
---
<style>
.header {
text-align: center;
}
</style>
<Layout>
<div class="header">
<h1>Title</h1>
<p>
<small>
Posted
<time datetime="#">#</time>
&nbsp;by&nbsp;Valentin Popov&nbsp;
<strong>{remarkPluginFrontmatter.minutesRead}</strong>
</small>
</p>
</div>
<Content />
</Layout>

View File

@ -1,5 +1,5 @@
import rss from "@astrojs/rss";
import { getCollection } from "astro:content";
import rss from "@astrojs/rss";
export async function GET(context) {
const posts = await getCollection("blog");

View File

@ -1,6 +1,6 @@
---
import Layout from "../layouts/PageLayout.astro";
import { getCollection } from "astro:content";
import Layout from "../layouts/PageLayout.astro";
const posts = await getCollection("blog");
---

View File

@ -0,0 +1,11 @@
import type { RemarkPlugin } from "@astrojs/markdown-remark";
import { toString } from "mdast-util-to-string";
import getReadingTime from "reading-time";
export function remarkReadingTime(): RemarkPlugin {
return function (tree, { data }) {
const textOnPage = toString(tree);
const readingTime = getReadingTime(textOnPage);
data.astro.frontmatter.minutesRead = readingTime.text;
};
}