From 767931202d215b714da43f663bbb0f2cc6037374 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E7=BF=94?= Date: Tue, 7 Jul 2026 06:53:13 +0800 Subject: [PATCH] =?UTF-8?q?feat(layout):=20=E9=87=8D=E6=9E=84=E5=B8=83?= =?UTF-8?q?=E5=B1=80=E7=BB=84=E4=BB=B6=E4=BD=93=E7=B3=BB=E4=B8=8E=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 重构 Header 导航、Footer 页脚、MobileMenu 移动端菜单 - 新增 MobileTabBar 移动端底部导航栏 - 更新 MegaDropdown 大型下拉导航 - 重构 SEO 结构化数据组件 - 更新数据层常量 (products, services, solutions, navigation 等) - 新增 useCountUp 数字递增 Hook - 修复 .gitignore 中 src/lib 被错误忽略的问题 --- src/components/analytics/CookieConsent.tsx | 26 +- src/components/layout/breadcrumb.tsx | 14 +- src/components/layout/client-layout.tsx | 4 +- src/components/layout/footer.test.tsx | 115 ++++--- src/components/layout/footer.tsx | 207 ++++++------ src/components/layout/header.test.tsx | 45 ++- src/components/layout/header.tsx | 121 ++++--- src/components/layout/index.ts | 7 + src/components/layout/mega-dropdown.tsx | 62 ++-- src/components/layout/mobile-menu.test.tsx | 21 ++ src/components/layout/mobile-menu.tsx | 17 +- src/components/layout/mobile-tab-bar.test.tsx | 13 +- src/components/layout/mobile-tab-bar.tsx | 14 +- src/components/layout/page-nav.tsx | 4 +- src/components/seo/structured-data.tsx | 147 ++++++-- src/hooks/use-count-up.ts | 63 ++++ src/hooks/use-mouse-glow.ts | 2 +- src/hooks/use-swipe-gesture.tsx | 8 +- src/lib/animations.tsx | 2 +- src/lib/constants.test.ts | 10 +- src/lib/constants/design-system.ts | 26 +- src/lib/constants/index.ts | 1 + src/lib/constants/navigation.ts | 17 +- src/lib/constants/news.ts | 4 +- src/lib/constants/products.ts | 19 ++ src/lib/constants/services.ts | 313 +++++++++++------- src/lib/constants/solutions.ts | 78 ++++- src/lib/constants/stats.ts | 6 +- 28 files changed, 898 insertions(+), 468 deletions(-) create mode 100644 src/components/layout/index.ts create mode 100644 src/hooks/use-count-up.ts diff --git a/src/components/analytics/CookieConsent.tsx b/src/components/analytics/CookieConsent.tsx index 371e4c3..dfa8fec 100644 --- a/src/components/analytics/CookieConsent.tsx +++ b/src/components/analytics/CookieConsent.tsx @@ -138,7 +138,7 @@ export function CookieConsent() { 继续使用即表示您同意我们的{' '} 隐私政策 @@ -149,21 +149,21 @@ export function CookieConsent() { @@ -185,12 +185,12 @@ export function CookieConsent() {
-
+
@@ -204,12 +204,12 @@ export function CookieConsent() {
-
+
handleTogglePreference('analytics')} - className="mt-1 h-4 w-4 rounded border-[var(--color-border-secondary)] text-[var(--color-brand-primary)] focus:ring-[var(--color-brand-primary)] cursor-pointer" + className="mt-1 h-4 w-4 rounded border-[var(--color-border-secondary)] text-[var(--color-brand)] focus:ring-[var(--color-brand)] cursor-pointer" aria-label="分析 Cookie" />
@@ -220,12 +220,12 @@ export function CookieConsent() {
-
+
handleTogglePreference('marketing')} - className="mt-1 h-4 w-4 rounded border-[var(--color-border-secondary)] text-[var(--color-brand-primary)] focus:ring-[var(--color-brand-primary)] cursor-pointer" + className="mt-1 h-4 w-4 rounded border-[var(--color-border-secondary)] text-[var(--color-brand)] focus:ring-[var(--color-brand)] cursor-pointer" aria-label="营销 Cookie" />
@@ -241,14 +241,14 @@ export function CookieConsent() { @@ -276,7 +276,7 @@ export function CookieSettingsButton() { const event = new CustomEvent('open-cookie-settings'); window.dispatchEvent(event); }} - className="fixed bottom-4 right-4 z-[9997] px-3 py-2 text-xs font-medium text-[var(--color-text-muted)] bg-[var(--color-bg-primary)] border border-[var(--color-border-secondary)] rounded-lg shadow-sm hover:bg-[var(--color-primary-lighter)] transition-colors" + className="fixed bottom-4 right-4 z-[9997] px-3 py-2 text-xs font-medium text-[var(--color-text-muted)] bg-[var(--color-bg-primary)] border border-[var(--color-border-secondary)] rounded-lg shadow-sm hover:bg-[var(--color-brand-lighter)] transition-colors" aria-label="Cookie 设置" > Cookie 设置 diff --git a/src/components/layout/breadcrumb.tsx b/src/components/layout/breadcrumb.tsx index ae662f4..2191c24 100644 --- a/src/components/layout/breadcrumb.tsx +++ b/src/components/layout/breadcrumb.tsx @@ -14,16 +14,20 @@ interface BreadcrumbProps { export function Breadcrumb({ items }: BreadcrumbProps) { return ( -