docs: refresh README for new design

This commit is contained in:
2025-11-19 02:31:37 +08:00
parent 8ade752448
commit 937203b4e9

View File

@@ -2,6 +2,7 @@
This is a personal blog built with **Next.js 13 (App Router)**, **Contentlayer**, and **Tailwind CSS**.
Markdown content (posts & pages) lives in a separate repository and is consumed via a git submodule.
Recent iterations focused on migrating every image to `next/image`, refreshing the typography scale for mixed Chinese/English copy, and layering an elegant scrolling timeline aesthetic onto the home + blog index.
## Tech Stack
@@ -50,37 +51,49 @@ Markdown content (posts & pages) lives in a separate repository and is consumed
- **Home page** (`/`)
- Centered hero heading: `SITE_NAME 的最新動態` + tagline.
- "最新文章" section listing latest posts as cards with thumbnail, date, title, tags, and excerpt.
- Timeline-inspired "最新文章" rail: a slim gradient spine with evenly spaced ticks aligned to each article card plus a downward-pointing finial at the bottom.
- Posts remain card-based (thumbnail + excerpt) but inherit the new responsive typography scale + weight strategy.
- **Blog index** (`/blog`)
- Uses `PostListWithControls`:
- Uses `PostListWithControls` with the same vertical timeline rail visually tying the list together.
- Keyword search filters posts by title, tags, and excerpt with instant feedback.
- Sort order: new→old or old→new.
- Pagination using `siteConfig.postsPerPage`.
- **Single post / page** (`/blog/[slug]`, `/pages/[slug]`)
- Left: sticky TOC that highlights the current section as you scroll.
- Top: published date, large title, colored tags.
- Body: `prose` typography with tuned light/dark colors, images, blockquotes, code.
- Top bar: reading progress indicator.
- Metro-inspired "storyline" rail that shows上一站 / 你在這裡 / 下一站with glowing capsules linking to adjacent posts.
- Bottom: "相關文章" cards suggesting up to three related posts that share overlapping tags.
- Left: sticky TOC inherits the responsive typography scale, removes list bullets entirely, and features an improved scroll marker.
- Top matter balances date, title, and tags with refined tracking/weights; headings lose decorative underlines for a cleaner academic feel.
- Body: tuned `prose` typography, improved Chinese-friendly line height, and blockquotes styled like academic pull quotes.
- Top bar: slimmer, softer reading progress indicator.
- Adjacent nav: only two inline bars for 上一章 / 下一章—no middle "正在閱讀" card, no thumbnails/tags/dates.
- Related section: simplified cards with only titles (no tags/thumbnails) to highlight pure reading flow.
- **Right sidebar** (on large screens)
- Top hero:
- Gravatar avatar (from env) linking to an "about" page.
- Row of icononly service links (GitHub, Mastodon, LinkedIn).
- Short "about me" sentence from env.
- Hot tags: top 5 tags in a small tag cloud using the accent palette and neutral darkmode backgrounds.
- Gravatar avatar (from env) rendered with `next/image` and shared rounded-mask styling.
- Row of icon-only service links with manual overrides (HomeLab → server, 開發工作環境 → device, 關於本站 → menu, etc.).
- Short "about me" sentence honoring `\n` line breaks and no leading icon for cleaner typography.
- Hot tags: top 5 tags sized via the responsive scale and accent glows for consistency.
- **Tags**
- Each tag chips in lists, post headers, and sidebar link to `/tags/[slug]`.
- `/tags` shows all tags and their counts.
- `/tags` now uses a masonry-like layout with pill consistency, subtle shadows, and accent outlines so the page no longer feels empty.
- **Misc**
- Floating "back to top" button on long pages.
## Motion & Interaction Guidelines
## Typography & Motion Guidelines
### Typography scale & font weights
- **Base scale**: body text uses `clamp(0.94rem, 0.8rem + 0.3vw, 1.125rem)` so Chinese + English copy remains legible from mobile to 4K.
- **Heading ladder**: modular ratio ≈1.25; weights step down (h1/h2:600, h3:550, h4:500) to avoid overly heavy CJK glyphs.
- **Navigation/right sidebar**: lock to 500 weight with slight tracking to balance condensed rendering on Windows/Linux; never smaller than 15px.
- **TOC & util text**: 0.85× body size at 500 weight, ensuring hierarchy without feeling secondary.
- **Blockquotes**: body text inherits base weight but adds a serif-leaning italic plus accent caption (1214px) for academic tone.
- **Font stack**: `Inter var`, `Noto Sans TC`, `PingFang TC`, `Microsoft JhengHei`, `Helvetica Neue`, `system-ui`, `sans-serif` to cover macOS, Windows, Linux, Android, iOS.
### Motion & interaction
- Keep motion subtle and purposeful:
- Use small translations (±24px) and short durations (200400ms, `ease-out`).
@@ -96,12 +109,14 @@ Markdown content (posts & pages) lives in a separate repository and is consumed
### Implemented Visual Touches
- Reading progress bar with a soft gradient glow at the top of post pages.
- Site-wide `next/image` usage (cards, feature media, sidebar avatar, related posts) to boost LCP without layout shifts.
- Reading progress bar slimmed down with a softer gradient glow.
- Scroll reveal for post header + article body (`ScrollReveal` component).
- Hover elevation + gradient accents for post cards, list items, sidebar author card, and tag chips.
- Smooth theme toggle with icon rotation and global `transition-colors` on the page background.
- TOC smooth scrolling + short-lived highlight on the target heading.
- Subtle hover elevation for `blockquote` and `pre` blocks inside `.prose` content.
- Elegant vertical timeline rail on home/blog pages with aligned milestone ticks.
- Hover elevation + gradient accents for post cards, sidebar tiles, and tag chips.
- Smooth theme toggle with icon rotation and global `transition-colors`.
- TOC smooth scrolling with custom marker + bullet-less list styling.
- Academic blockquotes featuring accent-side rules and caption text.
## Prerequisites
@@ -227,7 +242,8 @@ Contentlayer is configured in `contentlayer.config.ts` to read from the `content
- At build time, a rehype plugin rewrites these to `/assets/my-image.jpg`.
- `public/assets` is a symlink to `content/assets`, so Next.js serves them as static files.
- `feature_image` fields are also mapped from `../assets/...` → `/assets/...` and rendered above the article content.
- `feature_image` fields are also mapped from `../assets/...` → `/assets/...` and rendered above the article content via `next/image`.
- All component-level imagery (list thumbnails, related posts, sidebar avatar, about page hero, etc.) now uses `next/image` for responsive sizing, blur placeholders, and better LCP.
## Updating Content from the Submodule