Compare commits
13 Commits
version_11
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 6f83f105ce | |||
|
|
ec07521e6f | ||
|
|
dd2fb07049 | ||
| 2c34a642b7 | |||
| 40cc266c9c | |||
| 40cd0dd55b | |||
| ca77bbff42 | |||
| f18a94ea3f | |||
| bf880a6f34 | |||
| 89ffb05621 | |||
| f65a66bb7a | |||
| 7282580819 | |||
| c6d88dd4b7 |
@@ -21,7 +21,8 @@ import ClientLogosSection from './HomePage/sections/ClientLogos';
|
||||
import FloatingCtaSection from './HomePage/sections/FloatingCta';
|
||||
import GuaranteeSection from './HomePage/sections/Guarantee';
|
||||
import BackgroundMusicSection from './HomePage/sections/BackgroundMusic';
|
||||
import NewsletterSection from './HomePage/sections/Newsletter';export default function HomePage(): React.JSX.Element {
|
||||
import NewsletterSection from './HomePage/sections/Newsletter';
|
||||
import PricingSection from './HomePage/sections/Pricing';export default function HomePage(): React.JSX.Element {
|
||||
return (
|
||||
<>
|
||||
<HeroSection />
|
||||
@@ -39,6 +40,7 @@ import NewsletterSection from './HomePage/sections/Newsletter';export default fu
|
||||
<ClientLogosSection />
|
||||
|
||||
<SocialProofSection />
|
||||
<PricingSection />
|
||||
<FaqSection />
|
||||
<GuaranteeSection />
|
||||
|
||||
|
||||
120
src/pages/HomePage/sections/Pricing.tsx
Normal file
120
src/pages/HomePage/sections/Pricing.tsx
Normal file
@@ -0,0 +1,120 @@
|
||||
import { Check } from "lucide-react";
|
||||
import Button from "@/components/ui/Button";
|
||||
import Card from "@/components/ui/Card";
|
||||
import Tag from "@/components/ui/Tag";
|
||||
import TextAnimation from "@/components/ui/TextAnimation";
|
||||
import ScrollReveal from "@/components/ui/ScrollReveal";
|
||||
|
||||
export default function PricingSection() {
|
||||
const plans = [
|
||||
{
|
||||
name: "Single Loaf",
|
||||
price: "$12",
|
||||
period: "/loaf",
|
||||
description: "Perfect for trying our signature 48-hour sourdough.",
|
||||
features: [
|
||||
"1 Classic Sourdough Loaf",
|
||||
"Freshly baked same-day",
|
||||
"In-store pickup",
|
||||
],
|
||||
buttonText: "Order Now",
|
||||
highlighted: false,
|
||||
},
|
||||
{
|
||||
name: "Weekly Subscription",
|
||||
price: "$40",
|
||||
period: "/month",
|
||||
description: "Never run out of fresh, artisan bread for your family.",
|
||||
features: [
|
||||
"1 Loaf per week (4 total)",
|
||||
"Priority baking schedule",
|
||||
"Free local delivery",
|
||||
"Early access to seasonal flavors",
|
||||
],
|
||||
buttonText: "Subscribe",
|
||||
highlighted: true,
|
||||
highlightText: "Most Popular",
|
||||
},
|
||||
{
|
||||
name: "Wholesale",
|
||||
price: "Custom",
|
||||
period: "",
|
||||
description: "For cafes and restaurants serving quality to their guests.",
|
||||
features: [
|
||||
"Bulk pricing available",
|
||||
"Custom loaf sizes & shapes",
|
||||
"Daily morning delivery",
|
||||
"Dedicated account manager",
|
||||
],
|
||||
buttonText: "Request Quote",
|
||||
highlighted: false,
|
||||
},
|
||||
];
|
||||
|
||||
return (
|
||||
<section id="pricing" data-webild-section="pricing" className="relative w-full bg-background">
|
||||
<div className="w-content-width mx-auto">
|
||||
<div className="flex flex-col items-center text-center">
|
||||
<ScrollReveal variant="fade">
|
||||
<Tag text="Pricing & Tiers" className="mb-4" />
|
||||
</ScrollReveal>
|
||||
<TextAnimation
|
||||
text="Choose Your Bread Journey"
|
||||
variant="fade-blur"
|
||||
tag="h2"
|
||||
className="text-4xl md:text-5xl font-bold text-foreground mb-6"
|
||||
gradientText={false}
|
||||
/>
|
||||
<ScrollReveal variant="fade" delay={0.1}>
|
||||
<p className="text-lg text-accent max-w-content-width mx-auto">
|
||||
Simple, transparent pricing for individuals, families, and local businesses. Evaluate the best fit for your needs.
|
||||
</p>
|
||||
</ScrollReveal>
|
||||
</div>
|
||||
|
||||
<div className="grid grid-cols-1 md:grid-cols-3 gap-8 items-center">
|
||||
{plans.map((plan, index) => (
|
||||
<ScrollReveal variant="fade" key={index} delay={index * 0.1} className="h-full">
|
||||
<Card className={`relative h-full flex flex-col p-8 ${plan.highlighted ?'border-2 border-[var(--primary-cta)] shadow-xl md:scale-105 z-10' : ''}`}>
|
||||
{plan.highlighted && (
|
||||
<div className="absolute top-0 left-1/2 -translate-x-1/2 -translate-y-1/2">
|
||||
<span className="bg-foreground text-background text-xs font-bold px-4 py-1.5 rounded-full uppercase tracking-wider whitespace-nowrap">
|
||||
{plan.highlightText}
|
||||
</span>
|
||||
</div>
|
||||
)}
|
||||
|
||||
<div className="mb-8">
|
||||
<h3 className="text-xl font-semibold text-foreground mb-2">{plan.name}</h3>
|
||||
<div className="flex items-baseline gap-1 mb-4">
|
||||
<span className="text-4xl font-bold text-foreground">{plan.price}</span>
|
||||
{plan.period && <span className="text-accent">{plan.period}</span>}
|
||||
</div>
|
||||
<p className="text-accent text-sm">{plan.description}</p>
|
||||
</div>
|
||||
|
||||
<div className="flex-grow mb-8">
|
||||
<ul className="space-y-4">
|
||||
{plan.features.map((feature, fIndex) => (
|
||||
<li key={fIndex} className="flex items-start gap-3">
|
||||
<Check className="w-5 h-5 text-foreground shrink-0" />
|
||||
<span className="text-foreground text-sm">{feature}</span>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<Button
|
||||
text={plan.buttonText}
|
||||
variant={plan.highlighted ? 'primary' : 'secondary'}
|
||||
className="w-full justify-center"
|
||||
href="#contact"
|
||||
/>
|
||||
</Card>
|
||||
</ScrollReveal>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user