From a208bab7ea6dba38fbf447ef37ac82c32d23ddd1 Mon Sep 17 00:00:00 2001 From: zguiyang Date: Fri, 13 Mar 2026 14:01:04 +0800 Subject: [PATCH] feat(portfolio): redesign site as opportunity gateway - add now/hire pages and update IA/navigation - feature Elynd in projects and homepage messaging - refresh services/blog/brand copy for AI product positioning - reduce hydration overhead by using Astro Container - remove Google Fonts external dependency and use local fallback stack --- src/components/Footer.tsx | 4 +- src/components/GlassHeader.tsx | 16 +- src/components/ui/Container.astro | 11 + src/i18n/translations.ts | 40 ++- src/layouts/AboutLayout.astro | 6 +- src/layouts/BlogPostLayout.astro | 6 +- src/layouts/Layout.astro | 6 - src/layouts/TaxonomyPageLayout.astro | 6 +- src/lib/data/personal-info.ts | 8 +- src/lib/data/projects.ts | 92 ++++++- src/lib/data/services.ts | 74 +++--- src/pages/blog/index.astro | 14 +- src/pages/hire.astro | 374 +++++++++++++++++++++++++++ src/pages/index.astro | 93 ++++++- src/pages/now.astro | 203 +++++++++++++++ src/pages/projects.astro | 338 +++++++++++++++++++----- src/pages/services.md | 119 --------- src/pages/services.mdx | 73 ++---- src/pages/zh/blog/index.astro | 14 +- src/pages/zh/hire.astro | 332 ++++++++++++++++++++++++ src/pages/zh/index.astro | 91 ++++++- src/pages/zh/now.astro | 191 ++++++++++++++ src/pages/zh/projects.astro | 338 +++++++++++++++++++----- src/pages/zh/services.mdx | 112 ++------ src/styles/global.css | 1 + 25 files changed, 2069 insertions(+), 493 deletions(-) create mode 100644 src/components/ui/Container.astro create mode 100644 src/pages/hire.astro create mode 100644 src/pages/now.astro delete mode 100644 src/pages/services.md create mode 100644 src/pages/zh/hire.astro create mode 100644 src/pages/zh/now.astro diff --git a/src/components/Footer.tsx b/src/components/Footer.tsx index f495aff..52cb714 100644 --- a/src/components/Footer.tsx +++ b/src/components/Footer.tsx @@ -4,7 +4,7 @@ import { personalInfo } from "@/lib/data/index"; import { motion } from "framer-motion"; import { useState, useEffect } from "react"; import { defaultLang } from "@/i18n/ui"; -import Container from "./ui/Container"; +import Container from "./ui/Container.tsx"; import { type FooterProps } from "@/types"; export default function Footer({ lang: propLang }: FooterProps) { @@ -39,7 +39,7 @@ export default function Footer({ lang: propLang }: FooterProps) { className="text-sm text-purple-500 font-medium text-center md:text-left" whileHover={{ scale: 1.01 }} > - {lang === 'zh' ? '如果你正在寻找一名前端/Ts全栈工程师(远程工作),请联系我!' : 'Looking for a Frontend/TS Full-stack Engineer (Remote)? Contact me!'} + {lang === 'zh' ? '构建 AI 产品?寻找技术合伙人?联系我!' : 'Building AI Products? Need a Technical Co-founder? Contact me!'} - {[ + {[ { key: 'nav.home', icon: '🏠 ', href: getLocalizedPath('/', lang) }, - // { key: 'nav.projects', icon: '🚀 ', href: getLocalizedPath('/projects', lang) }, + { key: 'nav.projects', icon: '🚀 ', href: getLocalizedPath('/projects', lang) }, { key: 'nav.blog', icon: '📝 ', href: getLocalizedPath('/blog', lang) }, - { key: 'nav.services', icon: '🛠️ ', href: getLocalizedPath('/services', lang) }, + { key: 'nav.now', icon: '⚡ ', href: getLocalizedPath('/now', lang) }, + { key: 'nav.hire', icon: '💼 ', href: getLocalizedPath('/hire', lang) }, { key: 'nav.about', icon: '👨‍💻 ', href: getLocalizedPath('/about', lang) }, ].map((item, index) => ( @@ -133,12 +134,13 @@ export default function GlassHeader({ lang: propLang }: GlassHeaderProps) { : 'bg-white/85 dark:bg-black/85' }`}>