fix(breadcrumb): add aria-label to news detail breadcrumb for alignment

Also accumulates other pre-existing changes:
- refactor(icons): replace deprecated BarChart3 with TrendingUp
- refactor(services): replace emoji icons with LucideIcon components
- refactor(footer): use logo-white for dark background
- cleanup(archive): remove unused archive components
- cleanup(constants): remove unused types and exports
This commit is contained in:
2026-08-03 14:47:20 +08:00
parent b262bf0836
commit f4d8f0a8e9
55 changed files with 59 additions and 18352 deletions
@@ -1,12 +1,13 @@
'use client';
import { motion } from 'framer-motion';
import { ArrowUpRight, CheckCircle2 } from 'lucide-react';
import { ArrowUpRight, CheckCircle2, Zap, Clock, Users, Award, TrendingUp, Shield } from 'lucide-react';
import type { LucideIcon } from 'lucide-react';
import type { Service, CaseStudy } from '@/lib/constants/services';
const EASE_OUT = [0.22, 1, 0.36, 1] as const;
const FEATURE_ICONS = ['⚡', '⏱', '👥', '🏆', '📈', '🛡'];
const FEATURE_ICONS: LucideIcon[] = [Zap, Clock, Users, Award, TrendingUp, Shield];
function DetailHero({ service }: { service: Service }) {
const firstBenefit = service.benefits?.[0] || '效率提升 40%';
@@ -169,7 +170,7 @@ function FeaturesSection({ service }: { service: Service }) {
<div className="grid md:grid-cols-2 lg:grid-cols-3 gap-px bg-border-primary">
{service.features.map((feature, index) => {
const [title, desc] = feature.split(':');
const icon = FEATURE_ICONS[index % FEATURE_ICONS.length];
const Icon = FEATURE_ICONS[index % FEATURE_ICONS.length]!;
return (
<motion.div
@@ -181,7 +182,7 @@ function FeaturesSection({ service }: { service: Service }) {
className="group relative p-8 sm:p-10 transition-all duration-500 hover:bg-bg-secondary hover:shadow-lg hover:-translate-y-1 bg-white"
>
<div className="relative z-10">
<div className="text-3xl mb-6">{icon}</div>
<Icon className="w-8 h-8 mb-6 text-brand" />
<h3 className="text-lg sm:text-xl font-bold mb-3 text-ink group-hover:text-brand transition-colors duration-300">
{desc ? title : feature.slice(0, 10)}
</h3>