fix(ui): 全站视觉审查修复 — 深色模式适配与交互优化
- 法律页面(条款/隐私) Hero 渐变背景深色模式适配,新增 --color-hero-dark-end 变量 - Badge secondary 变体深色模式下从白底白字改为主题自适应灰底 - 首页 Hero 快速导航图标 strokeWidth 加粗提升可读性 (1.8→2.2) - 服务详情挑战卡片添加 border + hover 边框变色增强层次感 - 移动端 Tab Bar 激活指示器升级为顶部+底部双信号
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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">
|
||||
隐私政策
|
||||
|
||||
@@ -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">
|
||||
服务条款
|
||||
|
||||
@@ -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 }}
|
||||
/>
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user