commit 9a7942a0a7f133d3b3cad0560c7775a5d4820603
parent b14b9493141ef6b9a7fbf7ecde9e94357415c917
Author: Damian Myrda <damian@prime8.dev>
Date: Wed, 21 Jan 2026 15:59:37 -0600
fix: move blog share button next to date on mobile
Diffstat:
2 files changed, 39 insertions(+), 11 deletions(-)
diff --git a/web/src/components/Article.astro b/web/src/components/Article.astro
@@ -25,14 +25,23 @@ const { blog, isStandalone = true } = Astro.props;
<div class="blog-article-header-top">
<h1 class="blog-article-title">{blog.title}</h1>
<button
- class="blog-share-btn"
+ class="blog-share-btn blog-share-btn-desktop"
+ data-blog-id={blog.id}
+ data-blog-title={blog.title}
+ >
+ [Share]
+ </button>
+ </div>
+ <div class="blog-article-meta">
+ <time class="blog-article-date" datetime={blog.date}>{blog.date}</time>
+ <button
+ class="blog-share-btn blog-share-btn-mobile"
data-blog-id={blog.id}
data-blog-title={blog.title}
>
[Share]
</button>
</div>
- <time class="blog-article-date" datetime={blog.date}>{blog.date}</time>
</header>
<div class="blog-article-content" data-blog-id={blog.id}>
{
@@ -132,11 +141,21 @@ const { blog, isStandalone = true } = Astro.props;
border-color: var(--green);
}
+ .blog-article-meta {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ }
+
.blog-article-date {
color: var(--fg-dim);
font-size: 13px;
}
+ .blog-share-btn-mobile {
+ display: none;
+ }
+
.blog-article-content {
font-size: 14px;
line-height: 1.7;
@@ -318,17 +337,16 @@ const { blog, isStandalone = true } = Astro.props;
padding-bottom: 12px;
}
- .blog-article-header-top {
- flex-direction: column;
- gap: 12px;
- }
-
.blog-article-title {
font-size: 22px;
}
- .blog-share-btn {
- align-self: flex-start;
+ .blog-share-btn-desktop {
+ display: none;
+ }
+
+ .blog-share-btn-mobile {
+ display: block;
}
.blog-article-content {
diff --git a/web/src/pages/sitemap.xml.ts b/web/src/pages/sitemap.xml.ts
@@ -4,7 +4,7 @@ import rawProjects from "../../config/projects.json";
import rawExperience from "../../config/experience.json";
import type Project from "../lib/types/project";
import type Experience from "../lib/types/experience";
-import { fetchAllGitMetadata } from "../lib/git";
+import { fetchGitMetadataForProject } from "../lib/git";
const projects = rawProjects as Project[];
const experiences = rawExperience as Experience[];
@@ -12,7 +12,17 @@ const siteUrl = "https://prime8.dev";
export const GET: APIRoute = async () => {
const now = new Date().toISOString().split("T")[0];
- const metadata = await fetchAllGitMetadata();
+
+ const metadata = Object.fromEntries(
+ (
+ await Promise.all(
+ projects.map(async (project) => [
+ project.id,
+ await fetchGitMetadataForProject(project),
+ ]),
+ )
+ ).filter(([, meta]) => meta !== null),
+ );
// Static pages
const staticPages = [