refactor: complete website optimization - unified navigation, colors, and structure

- Created service detail pages with storytelling style
- Created service list page
- Removed service modal interactions
- Simplified homepage About section
- Added homepage Cases section
- Updated navigation to use page links instead of anchors
- Created products list page
- Updated footer links
- Unified color scheme to brand red (#C41E3A)
- Fixed TypeScript errors (removed unused imports)
- Fixed JSX syntax errors
- Split About page into server and client components
- All tests passing: typecheck and build successful
This commit is contained in:
张翔
2026-02-26 21:43:44 +08:00
parent 14af1a755f
commit 4a616fe96e
135 changed files with 265 additions and 3699 deletions
+1 -20
View File
@@ -1,10 +1,9 @@
'use client';
import { useEffect, useRef, useState } from 'react';
import { useRef } from 'react';
import Link from 'next/link';
import { Button } from '@/components/ui/button';
import { Badge } from '@/components/ui/badge';
import { Card, CardContent } from '@/components/ui/card';
import {
ArrowLeft,
CheckCircle2,
@@ -95,26 +94,8 @@ const outcomes = {
};
export function ServiceDetailClient({ service }: ServiceDetailClientProps) {
const [isVisible, setIsVisible] = useState(false);
const contentRef = useRef<HTMLDivElement>(null);
useEffect(() => {
const observer = new IntersectionObserver(
([entry]) => {
if (entry?.isIntersecting) {
setIsVisible(true);
}
},
{ threshold: 0.1 }
);
if (contentRef.current) {
observer.observe(contentRef.current);
}
return () => observer.disconnect();
}, []);
const serviceChallenges = challenges[service.id as keyof typeof challenges] || [];
const serviceOutcomes = outcomes[service.id as keyof typeof outcomes] || [];
const relatedCases = CASES.slice(0, 2);