feat: 全面重构网站工程化体系与 UI 架构
- 将单体 style.css 拆分为 tokens/reset/fonts/layout/responsive/组件级 CSS 模块 - 从 Google Fonts CDN 迁移至本地自托管字体(JetBrainsMono、NotoSansSC) - 引入 Vitest + Testing Library 测试体系,新增单元测试 - 添加 GitHub Actions CI 流水线(lint → build → test) - 新增 Prettier 格式化与 ESLint 规则强化 - 重构全部 YAML 数据文件,完善项目详情页(截图轮播、更新日志) - 新增项目文档编写指南(docs/create-project.md)
This commit is contained in:
+10
-6
@@ -5,7 +5,8 @@ import { useI18n } from '../hooks/useI18n';
|
||||
import { siteData } from '../data/siteData';
|
||||
|
||||
export default function Nav() {
|
||||
const { theme, mobileMenuOpen, toggleTheme, toggleLang, openMobileMenu, closeMobileMenu } = useApp();
|
||||
const { theme, mobileMenuOpen, toggleTheme, toggleLang, openMobileMenu, closeMobileMenu } =
|
||||
useApp();
|
||||
const { t, bi } = useI18n();
|
||||
const location = useLocation();
|
||||
const currentPath = '/' + location.pathname.slice(1);
|
||||
@@ -15,14 +16,17 @@ export default function Nav() {
|
||||
<nav className="nav">
|
||||
<div className="nav-inner">
|
||||
<Link to="/" className="nav-brand">
|
||||
<span className="nav-brand-icon">Z</span>
|
||||
{siteData.brand.logo ? (
|
||||
<img src={siteData.brand.logo} alt={bi(siteData.brand.name)} className="nav-brand-icon" />
|
||||
) : (
|
||||
<span className="nav-brand-icon">Z</span>
|
||||
)}
|
||||
{bi(siteData.brand.name)}
|
||||
</Link>
|
||||
<div className="nav-links">
|
||||
{siteData.nav.map(n => {
|
||||
{siteData.nav.map((n) => {
|
||||
const navPath = n.hash.slice(2) || '/';
|
||||
const isActive = currentPath === navPath ||
|
||||
(navPath === '/' && currentPath === '');
|
||||
const isActive = currentPath === navPath || (navPath === '/' && currentPath === '');
|
||||
return (
|
||||
<Link
|
||||
key={n.id}
|
||||
@@ -56,7 +60,7 @@ export default function Nav() {
|
||||
</div>
|
||||
</nav>
|
||||
<div className={`nav-mobile-menu${mobileMenuOpen ? ' open' : ''}`}>
|
||||
{siteData.nav.map(n => {
|
||||
{siteData.nav.map((n) => {
|
||||
const navPath = n.hash.slice(2) || '/';
|
||||
return (
|
||||
<Link
|
||||
|
||||
Reference in New Issue
Block a user