Skip to content

Commit 2053bb5

Browse files
committed
Update pricing page styles again
1 parent 94ec423 commit 2053bb5

File tree

1 file changed

+82
-68
lines changed

1 file changed

+82
-68
lines changed

web/src/app/pricing/pricing-client.tsx

Lines changed: 82 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import { useSession } from 'next-auth/react'
1515
import { useState } from 'react'
1616

1717
import { BlockColor } from '@/components/ui/decorative-blocks'
18+
import { Section } from '@/components/ui/section'
1819
import { SECTION_THEMES } from '@/components/ui/landing/constants'
1920
import { FeatureSection } from '@/components/ui/landing/feature'
2021
import { toast } from '@/components/ui/use-toast'
@@ -93,7 +94,12 @@ function SubscribeButton({
9394

9495
function StrongHeroSection() {
9596
return (
96-
<div className="min-h-[calc(100vh-64px)] bg-black flex flex-col items-center justify-center relative overflow-hidden px-4 py-12">
97+
<Section
98+
background={SECTION_THEMES.hero.background}
99+
hero
100+
fullViewport
101+
className="overflow-hidden"
102+
>
97103
{/* Subtle radial glow behind content */}
98104
<div
99105
className="absolute inset-0 pointer-events-none"
@@ -159,82 +165,87 @@ function StrongHeroSection() {
159165
</motion.div>
160166

161167
{/* Foreground content */}
162-
<div className="relative z-10 flex flex-col items-center text-center max-w-4xl">
163-
<div className="max-w-2xl">
164-
<motion.p
165-
className="font-mono text-md sm:text-lg tracking-[0.3em] text-acid-green/50 uppercase mb-8"
166-
initial={{ opacity: 0 }}
167-
animate={{ opacity: 1 }}
168-
transition={{ duration: 0.8, delay: 0.5 }}
169-
>
170-
codebuff strong
171-
</motion.p>
172-
<motion.h1
173-
className="text-3xl sm:text-4xl md:text-4xl font-bold text-white tracking-tight mb-6"
168+
<div className="codebuff-container min-h-[calc(95dvh-64px)] flex flex-col items-center justify-center relative z-10 py-12">
169+
<div className="flex flex-col items-center text-center max-w-4xl w-full space-y-12">
170+
<motion.h1
171+
className="text-4xl sm:text-5xl md:text-5xl font-bold text-white tracking-tight"
174172
initial={{ opacity: 0, y: 20 }}
175173
animate={{ opacity: 1, y: 0 }}
176174
transition={{ duration: 0.7, delay: 0.7 }}
177175
>
178176
Access the strongest coding agent
179177
</motion.h1>
180-
</div>
181178

182-
{/* Pricing cards grid */}
183-
<motion.div
184-
className="grid grid-cols-3 gap-2 sm:gap-5 mb-10 w-full"
185-
initial={{ opacity: 0, y: 20 }}
186-
animate={{ opacity: 1, y: 0 }}
187-
transition={{ duration: 0.7, delay: 1.1 }}
188-
>
189-
{Object.entries(SUBSCRIPTION_TIERS).map(([key, tier]) => {
190-
const price = Number(key) as SubscriptionTierPrice
191-
const isHighlighted = price === 200
192-
193-
return (
194-
<div
195-
key={price}
196-
className={cn(
197-
'rounded-xl p-3 sm:p-8 backdrop-blur-sm border flex flex-col items-center transition-all duration-300',
198-
'hover:scale-[1.02]',
199-
isHighlighted
200-
? 'border-acid-green/30 bg-acid-green/[0.04] shadow-[0_0_40px_rgba(0,255,149,0.08)] hover:shadow-[0_0_60px_rgba(0,255,149,0.15)]'
201-
: 'border-white/10 bg-white/[0.02] hover:border-white/20 hover:bg-white/[0.04]',
202-
)}
203-
>
204-
<div className="flex items-baseline justify-center gap-1 mb-1">
205-
<span className="text-xl sm:text-5xl font-bold text-white tracking-tight">
206-
${tier.monthlyPrice}
207-
</span>
208-
<span className="text-xs sm:text-sm text-white/30">/mo</span>
209-
</div>
210-
211-
<p className="text-sm sm:text-base font-medium text-white/60 mb-3 sm:mb-6">
212-
{USAGE_MULTIPLIER[price]} usage
213-
</p>
214-
215-
<SubscribeButton
216-
tier={price}
217-
className={cn(
218-
'w-full',
219-
!isHighlighted &&
220-
'bg-white/10 text-white hover:bg-white/20 shadow-none hover:shadow-none',
221-
)}
222-
/>
179+
<motion.p
180+
className="hero-subtext text-center mx-auto max-w-xl pb-8"
181+
initial={{ opacity: 0, y: 20 }}
182+
animate={{ opacity: 1, y: 0 }}
183+
transition={{ duration: 0.5, delay: 0.9 }}
184+
>
185+
Subscribe for higher usage limits
186+
</motion.p>
187+
188+
{/* Pricing cards grid with decorative blocks */}
189+
<motion.div
190+
className="w-full"
191+
initial={{ opacity: 0, y: 20 }}
192+
animate={{ opacity: 1, y: 0 }}
193+
transition={{ duration: 0.7, delay: 1.1 }}
194+
>
195+
<div className="grid grid-cols-3 gap-3 sm:gap-6">
196+
{Object.entries(SUBSCRIPTION_TIERS).map(([key, tier]) => {
197+
const price = Number(key) as SubscriptionTierPrice
198+
const isHighlighted = price === 200
199+
200+
return (
201+
<div
202+
key={price}
203+
className={cn(
204+
'rounded-xl p-3 sm:p-8 backdrop-blur-sm border flex flex-col items-center transition-all duration-300',
205+
'hover:scale-[1.02]',
206+
isHighlighted
207+
? 'border-acid-green/40 bg-acid-green/[0.06] shadow-[0_0_40px_rgba(0,255,149,0.12)] hover:shadow-[0_0_60px_rgba(0,255,149,0.2)]'
208+
: 'border-acid-green/15 bg-black/40 hover:border-acid-green/30 hover:bg-black/60',
209+
)}
210+
>
211+
<div className="flex items-baseline justify-center gap-1 mb-1">
212+
<span className="text-xl sm:text-5xl font-bold text-white tracking-tight">
213+
${tier.monthlyPrice}
214+
</span>
215+
<span className="text-xs sm:text-sm text-white/30">
216+
/mo
217+
</span>
218+
</div>
219+
220+
<p className="text-sm sm:text-base font-medium text-white/60 mb-3 sm:mb-6">
221+
{USAGE_MULTIPLIER[price]} usage
222+
</p>
223+
224+
<SubscribeButton
225+
tier={price}
226+
className={cn(
227+
'w-full',
228+
!isHighlighted &&
229+
'bg-acid-green/10 text-acid-green border border-acid-green/30 hover:bg-acid-green/20 shadow-none hover:shadow-none',
230+
)}
231+
/>
232+
</div>
233+
)
234+
})}
223235
</div>
224-
)
225-
})}
226-
</motion.div>
227-
228-
<motion.p
229-
className="text-xs text-white/30 tracking-wide"
230-
initial={{ opacity: 0 }}
231-
animate={{ opacity: 1 }}
232-
transition={{ duration: 0.8, delay: 1.6 }}
233-
>
234-
Cancel anytime · Tax not included · Usage amounts subject to change
235-
</motion.p>
236+
</motion.div>
237+
238+
<motion.p
239+
className="text-sm text-white/30 tracking-wide"
240+
initial={{ opacity: 0 }}
241+
animate={{ opacity: 1 }}
242+
transition={{ duration: 0.8, delay: 1.6 }}
243+
>
244+
Cancel anytime · Applicable taxes not shown · Usage subject to change
245+
</motion.p>
246+
</div>
236247
</div>
237-
</div>
248+
</Section>
238249
)
239250
}
240251

@@ -382,6 +393,9 @@ export default function PricingClient() {
382393
<>
383394
<StrongHeroSection />
384395

396+
{/* Visual divider between hero and feature section */}
397+
<div className="h-px bg-gradient-to-r from-transparent via-green-500/30 to-transparent" />
398+
385399
<FeatureSection
386400
title={<span>Usage-Based Pricing</span>}
387401
description="Get 500 free credits monthly, then pay just 1¢ per credit. Credits are consumed based on task complexity — simple queries cost less, complex changes more. You'll see how many credits each task consumes."

0 commit comments

Comments
 (0)