Deploy
This commit is contained in:
@@ -0,0 +1,73 @@
|
|||||||
|
'use client'
|
||||||
|
|
||||||
|
import { useState } from 'react'
|
||||||
|
import Button from '@/components/ui/Button'
|
||||||
|
import Input from '@/components/ui/Input'
|
||||||
|
import { ArrowRight, Send } from 'lucide-react'
|
||||||
|
|
||||||
|
export default function JoinMovementSection() {
|
||||||
|
const [email, setEmail] = useState('')
|
||||||
|
const [submitted, setSubmitted] = useState(false)
|
||||||
|
|
||||||
|
const handleSubmit = (e: React.FormEvent) => {
|
||||||
|
e.preventDefault()
|
||||||
|
if (email.trim()) {
|
||||||
|
setSubmitted(true)
|
||||||
|
setEmail('')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<section data-vula-section="joinmovement" id="join-us" className="relative bg-[#18181b] text-white py-24 px-6 overflow-hidden">
|
||||||
|
{/* Gold accent strip */}
|
||||||
|
<div className="absolute top-0 left-0 right-0 h-2 bg-[#d4af37]" />
|
||||||
|
|
||||||
|
<div className="max-w-4xl mx-auto text-center relative z-10">
|
||||||
|
<span className="inline-block text-[#d4af37] text-sm tracking-[0.3em] uppercase mb-4">
|
||||||
|
Limited Drops // Exclusive Access
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<h2 className="text-4xl md:text-6xl lg:text-7xl font-bold uppercase leading-tight">
|
||||||
|
Stay{' '}
|
||||||
|
<span className="text-[#d4af37]">Fresh</span>
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
<p className="mt-6 text-lg md:text-xl text-zinc-300 max-w-2xl mx-auto font-light">
|
||||||
|
Join the Urban Threads movement — early access to every limited drop,
|
||||||
|
exclusive content drops, and invites to Soweto pop-up events.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
{submitted ? (
|
||||||
|
<div className="mt-10 inline-flex items-center gap-3 px-6 py-4 bg-[#d4af37]/10 border border-[#d4af37] rounded-lg">
|
||||||
|
<Send className="w-5 h-5 text-[#d4af37]" />
|
||||||
|
<span className="text-[#d4af37] font-semibold">You're on the list — check your inbox soon.</span>
|
||||||
|
</div>
|
||||||
|
) : (
|
||||||
|
<form onSubmit={handleSubmit} className="mt-10 flex flex-col sm:flex-row gap-4 max-w-lg mx-auto">
|
||||||
|
<div className="flex-1">
|
||||||
|
<Input
|
||||||
|
type="email"
|
||||||
|
placeholder="Enter your email"
|
||||||
|
value={email}
|
||||||
|
onChange={(e) => setEmail(e.target.value)}
|
||||||
|
required
|
||||||
|
className="h-14 text-lg bg-zinc-800 border-zinc-600 text-white placeholder:text-zinc-400 focus:border-[#d4af37]"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<Button type="submit" size="lg" className="h-14 bg-[#d4af37] text-[#18181b] hover:bg-[#c49a2f] font-bold uppercase tracking-wider">
|
||||||
|
Join Now
|
||||||
|
<ArrowRight className="ml-2 w-5 h-5" />
|
||||||
|
</Button>
|
||||||
|
</form>
|
||||||
|
)}
|
||||||
|
|
||||||
|
<p className="mt-6 text-sm text-zinc-500">
|
||||||
|
No spam, no fluff. Only real drops and culture updates.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Bottom accent strip */}
|
||||||
|
<div className="absolute bottom-0 left-0 right-0 h-2 bg-[#d4af37]" />
|
||||||
|
</section>
|
||||||
|
)
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user