diff options
author | Valentin Popov <valentin@popov.link> | 2025-06-10 17:17:48 +0300 |
---|---|---|
committer | Valentin Popov <valentin@popov.link> | 2025-06-10 17:17:48 +0300 |
commit | 9ebcd40f60ffa393a56db850b6a6d0cf15ef4211 (patch) | |
tree | 88fc3edb345165258dcd3db343ee312d6dff2842 /src/components | |
parent | 4e8c17a6eadebf847e497752a6f0bda25cd29f49 (diff) | |
download | popov.link-9ebcd40f60ffa393a56db850b6a6d0cf15ef4211.tar.xz popov.link-9ebcd40f60ffa393a56db850b6a6d0cf15ef4211.zip |
feat: create PostElement component for blog post display
- Added a new PostElement component to render individual blog posts with title, publication date, and reading time.
- Updated the blog index page to utilize PostElement instead of PostSummary for improved post presentation.
Diffstat (limited to 'src/components')
-rw-r--r-- | src/components/PostElement.astro | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/components/PostElement.astro b/src/components/PostElement.astro new file mode 100644 index 0000000..703189e --- /dev/null +++ b/src/components/PostElement.astro @@ -0,0 +1,32 @@ +--- +import { type CollectionEntry } from "astro:content"; +import dayjs from "dayjs"; + +type Props = { + readonly post: CollectionEntry<"blog">; +}; + +const { post } = Astro.props; +const { remarkPluginFrontmatter } = await post.render(); +const formattedDate = dayjs(post.data.pubDate.toString()).format("MMMM DD, YYYY"); +--- + +<style lang="scss"> + @import "../scss/_variables.scss"; + + small { + font-size: $fontSizeBase * 0.75; + opacity: 0.5; + } +</style> + +<li> + <a href={`/blog/${post.slug}`}>{post.data.title}</a> + <div> + <small> + <time datetime={post.data.pubDate.toISOString()}>{formattedDate}</time> + <span>•</span> + <span>{remarkPluginFrontmatter.minutesRead}</span> + </small> + </div> +</li> |