fix(ui): 全站视觉审查修复 — 深色模式适配与交互优化

- 法律页面(条款/隐私) Hero 渐变背景深色模式适配,新增 --color-hero-dark-end 变量
- Badge secondary 变体深色模式下从白底白字改为主题自适应灰底
- 首页 Hero 快速导航图标 strokeWidth 加粗提升可读性 (1.8→2.2)
- 服务详情挑战卡片添加 border + hover 边框变色增强层次感
- 移动端 Tab Bar 激活指示器升级为顶部+底部双信号
This commit is contained in:
张翔
2026-05-10 10:37:05 +08:00
parent 0d517078ad
commit c474394237
7 changed files with 16 additions and 7 deletions
+1 -1
View File
@@ -101,7 +101,7 @@ export function ServiceDetailClient({ service }: ServiceDetailClientProps) {
{serviceChallenges.map((challenge, index) => (
<div
key={index}
className="p-4 bg-[var(--color-bg-tertiary)] rounded-lg hover:bg-[var(--color-brand-primary-bg)] transition-colors"
className="p-4 bg-[var(--color-bg-tertiary)] rounded-lg border border-[var(--color-border-primary)] hover:border-[var(--color-brand-primary)]/30 hover:bg-[var(--color-brand-primary-bg)] transition-colors"
>
<h3 className="font-semibold text-[var(--color-text-primary)] mb-1 text-sm">{challenge.title}</h3>
<p className="text-sm text-[var(--color-text-muted)]">{challenge.description}</p>
+2
View File
@@ -66,6 +66,7 @@
--color-footer-bg: #1C1C1C;
--color-cta-bg: #FAFAFA;
--color-hero-dark-end: #1C1C1C;
--color-footer-text: #A0A0A0;
--color-footer-text-muted: #666666;
--color-footer-text-dim: #999999;
@@ -200,6 +201,7 @@
--color-footer-bg: #000000;
--color-cta-bg: #141414;
--color-hero-dark-end: #1A0A10;
--color-footer-text: #8C8C8C;
--color-footer-text-muted: #525252;
--color-footer-text-dim: #737373;
+1 -1
View File
@@ -9,7 +9,7 @@ export const metadata: Metadata = {
export default function PrivacyPolicyPage() {
return (
<div className="min-h-screen bg-[var(--color-bg-primary)]">
<div className="bg-gradient-to-br from-[var(--color-brand-primary)] to-[var(--color-text-primary)] py-20">
<div className="bg-gradient-to-br from-[var(--color-brand-primary)] via-[var(--color-brand-primary)]/80 to-[var(--color-hero-dark-end)] py-20">
<div className="container-wide">
<h1 className="text-4xl md:text-5xl font-bold text-white mb-4">
+1 -1
View File
@@ -9,7 +9,7 @@ export const metadata: Metadata = {
export default function TermsOfServicePage() {
return (
<div className="min-h-screen bg-[var(--color-bg-primary)]">
<div className="bg-gradient-to-br from-[var(--color-brand-primary)] to-[var(--color-text-primary)] py-20">
<div className="bg-gradient-to-br from-[var(--color-brand-primary)] via-[var(--color-brand-primary)]/80 to-[var(--color-hero-dark-end)] py-20">
<div className="container-wide">
<h1 className="text-4xl md:text-5xl font-bold text-white mb-4">
+8 -1
View File
@@ -50,6 +50,13 @@ export function MobileTabBar() {
className="flex flex-col items-center justify-center flex-1 h-full relative group min-h-12"
>
<div className="relative flex flex-col items-center justify-center py-2">
{active && (
<motion.div
layoutId="activeTabTop"
className="absolute -top-0 w-6 h-[3px] bg-[var(--color-brand-primary)] rounded-full"
transition={{ type: 'spring', stiffness: 380, damping: 30 }}
/>
)}
<Icon
className={cn(
'w-6 h-6 transition-colors',
@@ -66,7 +73,7 @@ export function MobileTabBar() {
</span>
{active && (
<motion.div
layoutId="activeTab"
layoutId="activeTabBottom"
className="absolute -bottom-1 w-8 h-0.5 bg-[var(--color-brand-primary)] rounded-full"
transition={{ type: 'spring', stiffness: 380, damping: 30 }}
/>
+2 -2
View File
@@ -122,7 +122,7 @@ export function HeroSectionV2() {
key={cap.label}
className="flex items-center gap-2 px-3 py-2 rounded-lg bg-[var(--color-bg-section)] border border-[var(--color-border-primary)]"
>
<Icon className="w-4 h-4 text-[var(--color-brand-primary)]" strokeWidth={1.8} />
<Icon className="w-4 h-4 text-[var(--color-brand-primary)]" strokeWidth={2.2} />
<span className="text-xs font-medium text-[var(--color-text-primary)]">{cap.label}</span>
</div>
);
@@ -178,7 +178,7 @@ export function HeroSectionV2() {
className="flex items-center gap-4 p-3 rounded-lg bg-[var(--color-bg-section)]/60"
>
<div className="w-9 h-9 rounded-lg bg-[var(--color-brand-primary-bg)] flex items-center justify-center shrink-0">
<Icon className="w-4 h-4 text-[var(--color-brand-primary)]" strokeWidth={1.8} />
<Icon className="w-4 h-4 text-[var(--color-brand-primary)]" strokeWidth={2.2} />
</div>
<div className="flex-1 min-w-0">
<div className="flex items-center gap-2">
+1 -1
View File
@@ -13,7 +13,7 @@ const badgeVariants = cva(
variant: {
default: "bg-[var(--color-brand-primary)] text-white border-transparent shadow-sm",
secondary:
"bg-[var(--color-primary)] text-white border-transparent shadow-sm",
"bg-[var(--color-bg-tertiary)] text-[var(--color-text-secondary)] border-[var(--color-border-primary)]",
destructive:
"bg-[var(--color-brand-primary)] text-white border-transparent hover:bg-[var(--color-brand-primary-hover)]",
outline: