From 23414bcb3b28fa4dfc69d8f91fbf763f4cac28b0 Mon Sep 17 00:00:00 2001 From: jyswee Date: Thu, 23 Jul 2026 22:12:44 +0000 Subject: [PATCH] Seed: fitness template (17 files) --- src/pages/Pricing.tsx | 132 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 src/pages/Pricing.tsx diff --git a/src/pages/Pricing.tsx b/src/pages/Pricing.tsx new file mode 100644 index 0000000..b3ea944 --- /dev/null +++ b/src/pages/Pricing.tsx @@ -0,0 +1,132 @@ +import { Link } from "react-router-dom"; +import { Button } from "@/components/ui/button"; +import { Card, CardContent } from "@/components/ui/card"; +import { Badge } from "@/components/ui/badge"; +import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "@/components/ui/accordion"; +import { CheckCircle, Plus, ArrowRight } from "lucide-react"; +import { useSaasMutation } from "@/hooks/use-tygarun"; +import { toast } from "sonner"; +import Header from "@/components/Header"; +import Footer from "@/components/Footer"; + +const tiers = [ + { + name: "Basic", + price: "$29", + desc: "Perfect for getting started", + features: ["Gym floor & free weights", "Locker room access", "2 group classes per week", "Fitness assessment", "Mobile app access"], + popular: false, + }, + { + name: "Pro", + price: "$59", + desc: "For dedicated fitness enthusiasts", + features: ["Everything in Basic", "Unlimited group classes", "Sauna & pool access", "1 personal training session/mo", "Custom nutrition plan", "2 guest passes/mo"], + popular: true, + }, + { + name: "Elite", + price: "$99", + desc: "The ultimate training experience", + features: ["Everything in Pro", "Unlimited PT sessions", "Recovery suite & cryo", "Priority class booking", "20% merch discount", "24/7 facility access", "VIP lounge"], + popular: false, + }, +]; + +const addons = [ + { name: "Meal Prep Box", price: "+$15/week" }, + { name: "Towel Service", price: "+$10/mo" }, + { name: "Parking Pass", price: "+$20/mo" }, +]; + +const faqs = [ + { q: "Is there a sign-up fee?", a: "Nope! We believe in transparent pricing. The monthly rate is all you pay." }, + { q: "Can I freeze my membership?", a: "Yes, you can freeze for up to 3 months per year at no extra charge." }, + { q: "What is the cancellation policy?", a: "Cancel anytime with 30 days notice. No penalties, no hassle." }, + { q: "Do you offer student or military discounts?", a: "Absolutely! Show a valid ID and get 20% off any plan." }, +]; + +export default function Pricing() { + const { mutate: subscribe, loading: subscribing } = useSaasMutation("billing", "/checkout"); + return ( +
+
+ + {/* ── Hero ── */} +
+
+ Pricing +

INVEST IN YOURSELF

+

No long-term contracts. Cancel anytime. Start with a free 7-day trial on any plan.

+
+
+ + {/* ── Tiers ── */} +
+
+
+ {tiers.map((tier, i) => ( + + {tier.popular &&
Most Popular
} + +

{tier.name}

+

{tier.desc}

+
+ {tier.price} + /mo +
+
+ {tier.features.map((f, j) => ( +
+ + {f} +
+ ))} +
+ +
+
+ ))} +
+
+
+ + {/* ── Add-ons ── */} +
+
+

Add-ons

+
+ {addons.map((a, i) => ( + + + +

{a.name}

+

{a.price}

+
+
+ ))} +
+
+
+ + {/* ── FAQ ── */} +
+
+

Frequently Asked Questions

+ + {faqs.map((faq, i) => ( + + {faq.q} + {faq.a} + + ))} + +
+
+ +
+ ); +} \ No newline at end of file