style(web): 对齐币安风格—移除渐变/发光,固化深色/面板色,新增 header 样式,按钮与卡片统一

This commit is contained in:
Ember
2025-11-02 00:08:46 +08:00
parent 47083f97b1
commit 88db8becb6
2 changed files with 33 additions and 127 deletions

View File

@@ -7,7 +7,6 @@ import {
GitBranch, GitBranch,
Shield, Shield,
ArrowRight, ArrowRight,
ChevronDown,
Sparkles, Sparkles,
Target, Target,
Rocket, Rocket,
@@ -61,52 +60,13 @@ export function LandingPage() {
color: 'var(--brand-light-gray)', color: 'var(--brand-light-gray)',
}} }}
> >
{/* Animated Background */}
<div className='fixed inset-0 overflow-hidden pointer-events-none'>
<motion.div
className='absolute top-0 right-0 w-[800px] h-[800px] rounded-full opacity-10'
style={{
background:
'radial-gradient(circle, var(--brand-yellow) 0%, transparent 70%)',
}}
animate={{
scale: [1, 1.2, 1],
opacity: [0.1, 0.15, 0.1],
}}
transition={{ duration: 8, repeat: Infinity }}
/>
<motion.div
className='absolute bottom-0 left-0 w-[600px] h-[600px] rounded-full opacity-10'
style={{
background: 'radial-gradient(circle, #6366F1 0%, transparent 70%)',
}}
animate={{
scale: [1, 1.3, 1],
opacity: [0.1, 0.2, 0.1],
}}
transition={{ duration: 10, repeat: Infinity, delay: 1 }}
/>
</div>
{/* Navbar */} {/* Navbar */}
<motion.nav <nav className='fixed top-0 w-full z-50 header-bar'>
className='fixed top-0 w-full z-50 backdrop-blur-xl'
style={{
background: 'rgba(12, 14, 18, 0.8)',
borderBottom: '1px solid rgba(240, 185, 11, 0.1)',
}}
initial={{ y: -100 }}
animate={{ y: 0 }}
transition={{ duration: 0.6 }}
>
<div className='max-w-7xl mx-auto px-4 sm:px-6 lg:px-8'> <div className='max-w-7xl mx-auto px-4 sm:px-6 lg:px-8'>
<div className='flex items-center justify-between h-16'> <div className='flex items-center justify-between h-16'>
{/* Logo */} {/* Logo */}
<motion.div <div className='flex items-center gap-3'>
className='flex items-center gap-3'
whileHover={{ scale: 1.05 }}
transition={{ type: 'spring', stiffness: 400 }}
>
<img src='/images/logo.png' alt='NOFX Logo' className='w-8 h-8' /> <img src='/images/logo.png' alt='NOFX Logo' className='w-8 h-8' />
<span <span
className='text-xl font-bold' className='text-xl font-bold'
@@ -120,12 +80,12 @@ export function LandingPage() {
> >
Agentic Trading OS Agentic Trading OS
</span> </span>
</motion.div> </div>
{/* Desktop Menu */} {/* Desktop Menu */}
<div className='hidden md:flex items-center gap-6'> <div className='hidden md:flex items-center gap-6'>
{['功能', '如何运作', 'GitHub', '社区'].map((item, index) => ( {['功能', '如何运作', 'GitHub', '社区'].map((item) => (
<motion.a <a
key={item} key={item}
href={ href={
item === 'GitHub' item === 'GitHub'
@@ -144,33 +104,24 @@ export function LandingPage() {
} }
className='text-sm transition-colors relative group' className='text-sm transition-colors relative group'
style={{ color: 'var(--brand-light-gray)' }} style={{ color: 'var(--brand-light-gray)' }}
initial={{ opacity: 0, y: -20 }}
animate={{ opacity: 1, y: 0 }}
transition={{ delay: index * 0.1 }}
whileHover={{ color: 'var(--brand-yellow)' }}
> >
{item} {item}
<motion.span <span
className='absolute -bottom-1 left-0 w-0 h-0.5 group-hover:w-full transition-all duration-300' className='absolute -bottom-1 left-0 w-0 h-0.5 group-hover:w-full transition-all duration-300'
style={{ background: 'var(--brand-yellow)' }} style={{ background: 'var(--brand-yellow)' }}
/> />
</motion.a> </a>
))} ))}
<motion.button <button
onClick={() => setShowLoginModal(true)} onClick={() => setShowLoginModal(true)}
className='px-4 py-2 rounded font-semibold text-sm' className='px-4 py-2 rounded font-semibold text-sm'
style={{ style={{
background: 'var(--brand-yellow)', background: 'var(--brand-yellow)',
color: 'var(--brand-black)', color: 'var(--brand-black)',
}} }}
whileHover={{
scale: 1.05,
boxShadow: '0 0 20px rgba(240, 185, 11, 0.4)',
}}
whileTap={{ scale: 0.95 }}
> >
/ /
</motion.button> </button>
</div> </div>
{/* Mobile Menu Button */} {/* Mobile Menu Button */}
@@ -230,10 +181,10 @@ export function LandingPage() {
</button> </button>
</div> </div>
</motion.div> </motion.div>
</motion.nav> </nav>
{/* Hero Section */} {/* Hero Section */}
<section className='relative pt-32 pb-20 px-4 overflow-hidden'> <section className='relative pt-32 pb-20 px-4'>
<div className='max-w-7xl mx-auto'> <div className='max-w-7xl mx-auto'>
<div className='grid lg:grid-cols-2 gap-12 items-center'> <div className='grid lg:grid-cols-2 gap-12 items-center'>
{/* Left Content */} {/* Left Content */}
@@ -269,27 +220,14 @@ export function LandingPage() {
</motion.div> </motion.div>
</motion.div> </motion.div>
<motion.h1 <h1
className='text-5xl lg:text-7xl font-bold leading-tight' className='text-5xl lg:text-7xl font-bold leading-tight'
style={{ color: 'var(--brand-light-gray)' }} style={{ color: 'var(--brand-light-gray)' }}
variants={fadeInUp}
> >
Read the Market. Read the Market.
<br /> <br />
<motion.span <span style={{ color: 'var(--brand-yellow)' }}>Write the Trade.</span>
style={{ color: 'var(--brand-yellow)' }} </h1>
animate={{
textShadow: [
'0 0 20px rgba(240, 185, 11, 0.5)',
'0 0 40px rgba(240, 185, 11, 0.8)',
'0 0 20px rgba(240, 185, 11, 0.5)',
],
}}
transition={{ duration: 2, repeat: Infinity }}
>
Write the Trade.
</motion.span>
</motion.h1>
<motion.p <motion.p
className='text-xl leading-relaxed' className='text-xl leading-relaxed'
@@ -302,10 +240,7 @@ export function LandingPage() {
</motion.p> </motion.p>
<motion.div <div className='flex items-center gap-3 flex-wrap'>
className='flex items-center gap-3 flex-wrap'
variants={fadeInUp}
>
<motion.a <motion.a
href='https://github.com/tinkle-community/nofx' href='https://github.com/tinkle-community/nofx'
target='_blank' target='_blank'
@@ -345,7 +280,7 @@ export function LandingPage() {
className='h-7' className='h-7'
/> />
</motion.a> </motion.a>
</motion.div> </div>
<motion.p <motion.p
className='text-xs pt-4' className='text-xs pt-4'
@@ -366,9 +301,8 @@ export function LandingPage() {
<motion.div <motion.div
className='rounded-2xl p-8 relative z-10' className='rounded-2xl p-8 relative z-10'
style={{ style={{
background: background: 'var(--panel-bg)',
'linear-gradient(135deg, rgba(240, 185, 11, 0.1) 0%, rgba(99, 102, 241, 0.1) 100%)', border: '1px solid var(--panel-border)',
border: '1px solid rgba(240, 185, 11, 0.2)',
}} }}
animate={floatingAnimation} animate={floatingAnimation}
> >
@@ -385,17 +319,7 @@ export function LandingPage() {
</div> </div>
</div> </div>
{/* Scroll Indicator */} {/* Scroll Indicator removed for cleaner Binance-like style */}
<motion.div
className='absolute bottom-8 left-1/2 transform -translate-x-1/2'
animate={{ y: [0, 10, 0] }}
transition={{ duration: 1.5, repeat: Infinity }}
>
<ChevronDown
className='w-8 h-8'
style={{ color: 'var(--brand-yellow)' }}
/>
</motion.div>
</section> </section>
{/* About Section */} {/* About Section */}
@@ -481,21 +405,12 @@ export function LandingPage() {
</motion.div> </motion.div>
</motion.div> </motion.div>
<motion.div <div className='relative'>
className='relative' <div
initial={{ opacity: 0, x: 50 }}
whileInView={{ opacity: 1, x: 0 }}
viewport={{ once: true }}
transition={{ duration: 0.6 }}
>
<motion.div
className='rounded-2xl p-8' className='rounded-2xl p-8'
style={{ style={{
background: 'var(--brand-black)', background: 'var(--brand-black)',
border: '1px solid rgba(240, 185, 11, 0.2)', border: '1px solid var(--panel-border)',
}}
whileHover={{
boxShadow: '0 20px 60px rgba(240, 185, 11, 0.2)',
}} }}
> >
<Typewriter <Typewriter
@@ -508,13 +423,13 @@ export function LandingPage() {
'✓ API服务器启动在端口 8080', '✓ API服务器启动在端口 8080',
'🌐 Web 控制台 http://localhost:3000', '🌐 Web 控制台 http://localhost:3000',
]} ]}
typingSpeed={65} typingSpeed={70}
lineDelay={800} lineDelay={900}
className='text-sm font-mono' className='text-sm font-mono'
style={{ color: '#00FF41', textShadow: '0 0 6px rgba(0,255,65,0.6)' }} style={{ color: '#00FF41', textShadow: '0 0 6px rgba(0,255,65,0.6)' }}
/> />
</motion.div> </div>
</motion.div> </div>
</div> </div>
</div> </div>
</AnimatedSection> </AnimatedSection>
@@ -713,7 +628,7 @@ export function LandingPage() {
</AnimatedSection> </AnimatedSection>
{/* CTA Section */} {/* CTA Section */}
<AnimatedSection backgroundColor='linear-gradient(135deg, rgba(240, 185, 11, 0.15) 0%, rgba(99, 102, 241, 0.15) 100%)'> <AnimatedSection backgroundColor='var(--panel-bg)'>
<div className='max-w-4xl mx-auto text-center'> <div className='max-w-4xl mx-auto text-center'>
<motion.h2 <motion.h2
className='text-5xl font-bold mb-6' className='text-5xl font-bold mb-6'
@@ -961,11 +876,7 @@ function StepCard({ number, title, description, delay }: any) {
> >
<motion.div <motion.div
className='flex-shrink-0 w-14 h-14 rounded-full flex items-center justify-center font-bold text-2xl' className='flex-shrink-0 w-14 h-14 rounded-full flex items-center justify-center font-bold text-2xl'
style={{ style={{ background: 'var(--binance-yellow)', color: 'var(--brand-black)' }}
background:
'linear-gradient(135deg, var(--brand-yellow) 0%, #FCD535 100%)',
color: 'var(--brand-black)',
}}
whileHover={{ scale: 1.2, rotate: 360 }} whileHover={{ scale: 1.2, rotate: 360 }}
transition={{ type: 'spring', stiffness: 260, damping: 20 }} transition={{ type: 'spring', stiffness: 260, damping: 20 }}
> >
@@ -1011,10 +922,7 @@ function TestimonialCard({ quote, author, delay }: any) {
<div className='flex items-center gap-2'> <div className='flex items-center gap-2'>
<motion.div <motion.div
className='w-8 h-8 rounded-full' className='w-8 h-8 rounded-full'
style={{ style={{ background: 'var(--binance-yellow)' }}
background:
'linear-gradient(135deg, var(--brand-yellow) 0%, #FCD535 100%)',
}}
whileHover={{ rotate: 180 }} whileHover={{ rotate: 180 }}
/> />
<span <span

View File

@@ -20,7 +20,8 @@
--binance-yellow-light: #FCD535; --binance-yellow-light: #FCD535;
--binance-yellow-glow: rgba(240, 185, 11, 0.2); --binance-yellow-glow: rgba(240, 185, 11, 0.2);
--background: #0C0E12; --background: #181A20; /* Binance body bg */
--header-bg: #0B0E11; /* Binance header bg */
--background-elevated: #181A20; --background-elevated: #181A20;
--foreground: #EAECEF; --foreground: #EAECEF;
--panel-bg: #1E2329; --panel-bg: #1E2329;
@@ -179,12 +180,9 @@ body {
} }
/* Glass effect - Binance header style */ /* Glass effect - Binance header style */
.glass { .header-bar {
background: var(--background-elevated); background: var(--header-bg);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
border-bottom: 1px solid var(--panel-border); border-bottom: 1px solid var(--panel-border);
box-shadow: var(--shadow-sm);
} }
/* Monospace numbers */ /* Monospace numbers */