From b1de88f99899b90d287d0a0ae0c7756f4bccf529 Mon Sep 17 00:00:00 2001 From: HangerThem Date: Mon, 3 Aug 2026 15:11:10 +0200 Subject: [PATCH] Fixed few formatting things; started on support for mobile/PWA --- .oxfmtrc.json | 8 +-- app/(withRecent)/categories/page.tsx | 1 - app/(withRecent)/page.tsx | 2 +- app/feed.xml/route.ts | 34 +++++----- app/layout.tsx | 3 + app/metadata.ts | 18 +++--- app/posts/[slug]/page.tsx | 2 +- components/common/BlockquoteWrapper.tsx | 2 +- components/common/CopyButton.tsx | 5 +- components/common/ImageWrapper.tsx | 2 +- components/common/ShareLinks.tsx | 18 +++--- components/layout/MobileNavbar.tsx | 38 +++++++++++ components/layout/NavLinks.tsx | 28 +-------- components/layout/navItems.tsx | 29 +++++++++ content/posts/self-development.md | 1 + content/posts/standard-model.md | 9 +-- content/posts/test-post.md | 13 ++-- eslint.config.mjs | 18 +++--- lib/categories.ts | 36 +++++------ lib/mermaid-render.ts | 62 +++++++++--------- lib/posts.tsx | 4 +- lib/react-node-text.ts | 84 ++++++++++++------------- lib/rehype-mermaid-ssg.ts | 15 +++-- next.config.ts | 10 +-- package.json | 5 +- postcss.config.mjs | 6 +- types/Note.type.ts | 2 +- types/Post.type.ts | 28 ++++----- utils/cn.ts | 6 +- utils/slug.ts | 24 +++---- utils/time.ts | 2 +- 31 files changed, 276 insertions(+), 239 deletions(-) create mode 100644 components/layout/MobileNavbar.tsx create mode 100644 components/layout/navItems.tsx diff --git a/.oxfmtrc.json b/.oxfmtrc.json index 4baacea..8ff93fe 100644 --- a/.oxfmtrc.json +++ b/.oxfmtrc.json @@ -10,9 +10,5 @@ "arrowParens": "always", "endOfLine": "lf", "insertFinalNewline": true, - "ignorePatterns": [ - "node_modules/**", - ".cache/**", - "_site/**" - ] -} \ No newline at end of file + "ignorePatterns": ["node_modules/**", ".cache/**", "_site/**"] +} diff --git a/app/(withRecent)/categories/page.tsx b/app/(withRecent)/categories/page.tsx index 474aa4a..f6e0c5c 100644 --- a/app/(withRecent)/categories/page.tsx +++ b/app/(withRecent)/categories/page.tsx @@ -5,7 +5,6 @@ import type { Metadata } from 'next' import Link from 'next/link' import { metadata } from '@/app/metadata' import { dateFormatter } from '@/utils/time' -import { RecentlyUpdatedPosts } from '@/components/common/RecentlyUpdatedPosts' export async function generateMetadata(): Promise { return { diff --git a/app/(withRecent)/page.tsx b/app/(withRecent)/page.tsx index 8fa0f5a..d3d63e2 100644 --- a/app/(withRecent)/page.tsx +++ b/app/(withRecent)/page.tsx @@ -11,7 +11,7 @@ export default function BlogIndex() { } return ( -
+
{posts.length === 0 ? (
diff --git a/app/feed.xml/route.ts b/app/feed.xml/route.ts index 52dab6f..73bb3e6 100644 --- a/app/feed.xml/route.ts +++ b/app/feed.xml/route.ts @@ -1,24 +1,22 @@ -import { metadata } from "@/app/metadata" -import { getAllPostsMeta } from "@/lib/posts" +import { metadata } from '@/app/metadata' +import { getAllPostsMeta } from '@/lib/posts' -const SITE_URL = process.env.SITE_URL || "http://localhost:3000" +const SITE_URL = process.env.SITE_URL || 'http://localhost:3000' function escapeXml(str: string) { return str - .replace(/&/g, "&") - .replace(//g, ">") - .replace(/"/g, """) - .replace(/'/g, "'") + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"') + .replace(/'/g, ''') } export async function GET(req: Request) { const posts = getAllPostsMeta() const updated = - posts.length > 0 - ? new Date(posts[0].date).toISOString() - : new Date().toISOString() + posts.length > 0 ? new Date(posts[0].date).toISOString() : new Date().toISOString() const entries = posts .map((p) => { @@ -35,7 +33,7 @@ export async function GET(req: Request) { ${escapeXml(p.description)} ` }) - .join("") + .join('') const feed = ` @@ -51,12 +49,12 @@ export async function GET(req: Request) { ${entries} ` - const accept = req.headers.get("accept") || "" - const contentType = accept.includes("application/atom+xml") - ? "application/atom+xml; charset=utf-8" - : "application/xml; charset=utf-8" + const accept = req.headers.get('accept') || '' + const contentType = accept.includes('application/atom+xml') + ? 'application/atom+xml; charset=utf-8' + : 'application/xml; charset=utf-8' return new Response(feed, { - headers: { "Content-Type": contentType }, + headers: { 'Content-Type': contentType }, }) -} \ No newline at end of file +} diff --git a/app/layout.tsx b/app/layout.tsx index 6c4d75b..180b07c 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -1,7 +1,9 @@ import { Space_Grotesk } from 'next/font/google' import Script from 'next/script' import { Sidebar } from '@/components/layout/Sidebar' +import { MobileNavbar } from '@/components/layout/MobileNavbar' import { metadata } from './metadata' +// eslint-disable-next-line import/no-unassigned-import import './globals.css' const spaceGrotesk = Space_Grotesk({ @@ -24,6 +26,7 @@ export default function RootLayout({ /> + {children} diff --git a/app/metadata.ts b/app/metadata.ts index de2bbea..c307c7a 100644 --- a/app/metadata.ts +++ b/app/metadata.ts @@ -1,14 +1,14 @@ -import { Metadata } from "next"; +import { Metadata } from 'next' export const metadata: Metadata = { - title: "Ephemeris", - description: "A blog about me and my interests", - creator: "hangerthem", + title: 'Ephemeris', + description: 'A blog about me and my interests', + creator: 'hangerthem', openGraph: { - type: "website", - title: "Ephemeris", - description: "A blog about me and my interests", + type: 'website', + title: 'Ephemeris', + description: 'A blog about me and my interests', url: process.env.SITE_URL, - siteName: "Ephemeris", + siteName: 'Ephemeris', }, -} \ No newline at end of file +} diff --git a/app/posts/[slug]/page.tsx b/app/posts/[slug]/page.tsx index 151e2ac..15ff702 100644 --- a/app/posts/[slug]/page.tsx +++ b/app/posts/[slug]/page.tsx @@ -47,7 +47,7 @@ export default async function Post({ params }: { params: Promise<{ slug: string {meta.category && ( {meta.category} diff --git a/components/common/BlockquoteWrapper.tsx b/components/common/BlockquoteWrapper.tsx index e655dea..43cb833 100644 --- a/components/common/BlockquoteWrapper.tsx +++ b/components/common/BlockquoteWrapper.tsx @@ -10,7 +10,7 @@ const noteTypeIcons: Record = { warning: , tip: , info: , - quote: + quote: , } export function BlockquoteWrapper({ type, children }: BlockquoteWrapperProps) { diff --git a/components/common/CopyButton.tsx b/components/common/CopyButton.tsx index 2071c99..4a65596 100644 --- a/components/common/CopyButton.tsx +++ b/components/common/CopyButton.tsx @@ -27,7 +27,10 @@ export function CopyButton({ textToCopy, className, ...props }: CopyButtonProps) return (