Spaces:
Paused
Paused
| import React, { useState } from 'react'; | |
| import Button from './ui/Button'; | |
| import { Check } from 'lucide-react'; | |
| const Pricing: React.FC = () => { | |
| const [isYearly, setIsYearly] = useState(false); | |
| const plans = [ | |
| { | |
| name: "Free", | |
| price: "$0", | |
| desc: "No cost to run your first experiments", | |
| features: ["Access all features", "Configure your own focus groups", "3 Starting simulation credits"], | |
| cta: "Select Free", | |
| featured: false | |
| }, | |
| { | |
| name: "Pro", | |
| price: "$55", | |
| period: "/ mo", | |
| desc: "Billed monthly", | |
| features: ["Everything in Free", "Unlimited focus groups", "Unlimited simulation credits"], | |
| cta: "Select Pro", | |
| featured: true | |
| }, | |
| { | |
| name: "Enterprise", | |
| price: "Get in Touch", | |
| desc: "Custom builds for businesses", | |
| features: ["Custom audience builds", "Custom contexts & segments", "Data & CRM integration", "API Access", "Dedicated Account Manager"], | |
| cta: "Enquire", | |
| featured: false | |
| } | |
| ]; | |
| return ( | |
| <section id="pricing" className="py-24 bg-black"> | |
| <div className="max-w-7xl mx-auto px-6"> | |
| <div className="text-center mb-16"> | |
| <h2 className="text-4xl md:text-5xl font-semibold mb-6">Get started today</h2> | |
| {/* Toggle */} | |
| <div className="inline-flex items-center bg-gray-900 rounded-full p-1 border border-gray-800 relative"> | |
| <button | |
| className={`px-6 py-2 rounded-full text-sm font-medium transition-all ${!isYearly ? 'bg-white text-black' : 'text-gray-400 hover:text-white'}`} | |
| onClick={() => setIsYearly(false)} | |
| > | |
| Monthly | |
| </button> | |
| <button | |
| className={`px-6 py-2 rounded-full text-sm font-medium transition-all ${isYearly ? 'bg-white text-black' : 'text-gray-400 hover:text-white'}`} | |
| onClick={() => setIsYearly(true)} | |
| > | |
| Yearly | |
| </button> | |
| <span className="absolute -top-3 -right-6 bg-teal-900 text-teal-200 text-[10px] font-bold px-2 py-0.5 rounded-full border border-teal-700"> | |
| -30% | |
| </span> | |
| </div> | |
| </div> | |
| <div className="grid grid-cols-1 md:grid-cols-3 gap-8"> | |
| {plans.map((plan, idx) => ( | |
| <div | |
| key={idx} | |
| className={`flex flex-col p-8 rounded-2xl border ${plan.featured ? 'border-gray-600 bg-gray-900/40 relative' : 'border-gray-800 bg-black'}`} | |
| > | |
| <div className="mb-8"> | |
| <h3 className="text-lg font-medium text-white mb-2">{plan.name}</h3> | |
| <p className="text-gray-500 text-sm">{plan.name === 'Free' ? 'Get started with simulations' : plan.name === 'Pro' ? 'For founders, creators and builders' : 'Custom builds for businesses'}</p> | |
| </div> | |
| <div className="mb-8"> | |
| <div className="flex items-baseline"> | |
| <span className="text-4xl font-bold text-white">{plan.price}</span> | |
| {plan.period && <span className="text-gray-400 ml-1">{plan.period}</span>} | |
| </div> | |
| <p className="text-gray-500 text-sm mt-2">{plan.desc}</p> | |
| </div> | |
| <div className="flex-grow space-y-4 mb-8"> | |
| {plan.features.map((feature, fIdx) => ( | |
| <div key={fIdx} className="flex items-start gap-3"> | |
| <Check className="w-5 h-5 text-white shrink-0" /> | |
| <span className="text-gray-300 text-sm">{feature}</span> | |
| </div> | |
| ))} | |
| </div> | |
| <Button | |
| variant={plan.featured ? 'primary' : 'outline'} | |
| className="w-full" | |
| > | |
| {plan.cta} | |
| </Button> | |
| </div> | |
| ))} | |
| </div> | |
| </div> | |
| </section> | |
| ); | |
| }; | |
| export default Pricing; |