Commit Graph

99 Commits

Author SHA1 Message Date
02f2d0a599 Fix search input autofocus issue
Added autofocus configuration and manual focus call to ensure search input is immediately focusable when modal opens.

Changes:
- Added autofocus: true to PagefindUI config
- Added setTimeout to manually focus input after UI loads
- Ensures users can type immediately after opening search modal

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-20 02:12:41 +08:00
2c9d5ed650 Add full-text search with Chinese tokenization using Pagefind
Integrated Pagefind for static site search with built-in Chinese word segmentation support.

Changes:
1. **Installed Pagefind** (v1.4.0) as dev dependency
2. **Updated build script** to run Pagefind indexing after Next.js build
   - Indexes all 69 pages with 5,711 words
   - Automatic Chinese (zh-tw) language detection
3. **Created search modal component** (components/search-modal.tsx)
   - Dynamic Pagefind UI loading (lazy-loaded on demand)
   - Keyboard shortcuts (Cmd+K / Ctrl+K)
   - Chinese translations for UI elements
   - Dark mode compatible styling
4. **Added search button to header** (components/site-header.tsx)
   - Integrated SearchButton with keyboard shortcut display
   - Modal state management
5. **Custom Pagefind styles** (styles/globals.css)
   - Tailwind-based styling to match site design
   - Dark mode support
   - Highlight styling for search results

Features:
-  Full-text search across all blog posts and pages
-  Built-in Chinese word segmentation (Unicode-based)
-  Mixed Chinese/English query support
-  Zero bundle impact (20KB lazy-loaded on search activation)
-  Keyboard shortcuts (⌘K / Ctrl+K)
-  Search result highlighting with excerpts
-  Dark mode compatible

Technical Details:
- Pagefind runs post-build to index .next directory
- Search index stored in .next/pagefind/
- Chinese segmentation works automatically via Unicode boundaries
- No third-party services or API keys required

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-20 00:10:26 +08:00
4c08413936 Migrate to Contentlayer2 2025-11-19 21:46:49 +08:00
a249a120a5 Stage all layout updates 2025-11-19 17:38:45 +08:00
f32206d390 Use next/image for hero/sidebar/markdown images 2025-11-19 02:07:35 +08:00
ce43491e2e Switch card images to next/image 2025-11-19 02:03:49 +08:00
985caa2a4d Cleanup stray text in timeline wrapper 2025-11-19 01:56:59 +08:00
77bd180d97 Remove animated timeline dot 2025-11-19 01:55:56 +08:00
3425098006 Refine timeline rail/tick aesthetics 2025-11-19 01:49:40 +08:00
eefc38d562 Add glow and animation to timeline 2025-11-19 01:46:37 +08:00
48ce66a3e6 Remove timeline arrow 2025-11-19 01:43:29 +08:00
22120595a6 Use only card-aligned timeline ticks 2025-11-19 01:41:12 +08:00
eab80bd17a Render timeline ticks per card 2025-11-19 01:36:54 +08:00
5b99486a68 Style timeline rail with ticks and arrow 2025-11-19 01:31:02 +08:00
5fdd72302e Reduce gutter between timeline rail and cards 2025-11-19 01:25:19 +08:00
66cd9b8608 Remove timeline markers entirely 2025-11-19 01:24:12 +08:00
2e80b7ac59 Center timeline markers vertically 2025-11-19 01:22:49 +08:00
be5d942c79 Align node ring visually with timeline rail 2025-11-19 01:17:33 +08:00
3018a25578 Turn timeline nodes into hollow rings 2025-11-19 01:14:06 +08:00
04182ec754 Align timeline nodes with brighter rail 2025-11-19 01:11:45 +08:00
9b2d754a2f Tighten timeline spacing and add white node 2025-11-19 01:07:25 +08:00
1a7ae8a269 Remove timeline node dot 2025-11-19 01:05:22 +08:00
9a7eb6cfe3 Center timeline nodes directly on rail 2025-11-19 01:04:08 +08:00
246646f176 Brighten timeline rail and align nodes 2025-11-19 01:00:18 +08:00
287c0d72a8 Refine timeline visuals and apply to blog list 2025-11-19 00:58:13 +08:00
fe191752da Add aesthetic timeline to post lists 2025-11-19 00:54:58 +08:00
af0d2e3a6c Formalize font weight hierarchy 2025-11-19 00:42:53 +08:00
79578252df Apply new type scale to TOC 2025-11-19 00:33:11 +08:00
a225d57e06 Fix progress bar width 2025-11-19 00:30:35 +08:00
b416c9eb7d Soften reading progress indicator 2025-11-19 00:28:09 +08:00
61d5092136 Let sidebar about text honor line breaks 2025-11-19 00:26:37 +08:00
a582ef9cb5 Scale right sidebar typography 2025-11-19 00:24:16 +08:00
dc5ca97fee Add fluid typography scale and responsive headings 2025-11-19 00:22:09 +08:00
b4ee8b122f Remove dot icon from TOC items 2025-11-18 23:57:40 +08:00
cd95a7bb79 Render TOC items as divs to eliminate bullets 2025-11-18 23:51:43 +08:00
f34221b567 Exclude TOC from prose styling 2025-11-18 23:50:03 +08:00
3509b43643 Inline TOC list style overrides 2025-11-18 23:49:08 +08:00
b69755c2d6 Force TOC list to remove default bullets 2025-11-18 23:41:37 +08:00
dadb5dce5c Remove default list bullets from TOC 2025-11-18 23:36:27 +08:00
7a6cd55c42 Polish TOC bullets 2025-11-18 23:34:38 +08:00
1e39647ab6 Fix duplicate imports in post TOC 2025-11-18 23:31:52 +08:00
e73f37da76 Hide next station when no newer posts 2025-11-18 23:10:15 +08:00
351a1a2f70 Loosen scroll reveal trigger for mobile 2025-11-18 23:04:02 +08:00
80d0b236c5 Refine navigation and post UI 2025-11-18 17:34:05 +08:00
c404be0822 Remove subtitles from storyline nav cards 2025-11-18 17:03:18 +08:00
71680252a4 Show only previous/next cards in storyline rail 2025-11-18 17:01:22 +08:00
3d3090c4e2 Hide subtitle on current storyline station 2025-11-18 16:59:33 +08:00
904434774b Streamline storyline rail into linear layout 2025-11-18 16:57:13 +08:00
91dec52db6 Refine storyline rail to minimalist arrow layout 2025-11-18 16:54:35 +08:00
df10c8b751 Simplify storyline navigation aesthetics 2025-11-18 16:51:59 +08:00