Bob AI: Expanded training features with new perks
This commit is contained in:
@@ -1,295 +1,39 @@
|
||||
import AboutTextSplit from '@/components/sections/about/AboutTextSplit';
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import FaqSimple from '@/components/sections/faq/FaqSimple';
|
||||
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
|
||||
import FeaturesTaggedCards from '@/components/sections/features/FeaturesTaggedCards';
|
||||
import HeroOverlay from '@/components/sections/hero/HeroOverlay';
|
||||
import MetricsFeatureCards from '@/components/sections/metrics/MetricsFeatureCards';
|
||||
import PricingMediaCards from '@/components/sections/pricing/PricingMediaCards';
|
||||
import TestimonialRatingCards from '@/components/sections/testimonial/TestimonialRatingCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
// AUTO-GENERATED shell by per-section-migrate.
|
||||
// Section bodies live in ./<PageBase>/sections/<X>.tsx. Edit the section
|
||||
// files directly. Non-block content (wrappers, non-inlinable sections) is
|
||||
// preserved inline; extracted section blocks become <XSection/> refs.
|
||||
|
||||
export default function HomePage() {
|
||||
import React from 'react';
|
||||
import HeroSection from './HomePage/sections/Hero';
|
||||
import AboutSection from './HomePage/sections/About';
|
||||
import TrainingSection from './HomePage/sections/Training';
|
||||
import FitnessBentoSection from './HomePage/sections/FitnessBento';
|
||||
import PricingSection from './HomePage/sections/Pricing';
|
||||
import MetricsSection from './HomePage/sections/Metrics';
|
||||
import TestimonialsSection from './HomePage/sections/Testimonials';
|
||||
import FaqSection from './HomePage/sections/Faq';
|
||||
import ContactSection from './HomePage/sections/Contact';
|
||||
|
||||
export default function HomePage(): React.JSX.Element {
|
||||
return (
|
||||
<>
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroOverlay
|
||||
tag="Premier Fitness in Model Colony"
|
||||
title="Balance and Burn Your Way to Peak Fitness"
|
||||
description="Join the premier gym and fitness studio in Karachi. Achieve your goals with professional guidance, state-of-the-art equipment, and a supportive community."
|
||||
primaryButton={{
|
||||
text: "Get Started",
|
||||
href: "#pricing",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Our Training",
|
||||
href: "#training",
|
||||
}}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/motivated-young-female-athlete-smiling-gym-using-leg-press-equipment_197531-22866.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<>
|
||||
<HeroSection />
|
||||
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutTextSplit
|
||||
title="Your Goals, Our Mission"
|
||||
descriptions={[
|
||||
"Balance and Burn Gym and Fitness Studio is Karachi's premier destination for achieving your fitness goals. We offer a comprehensive environment designed to help you balance your lifestyle and burn calories effectively.",
|
||||
"Located conveniently in Model Colony, our studio provides top-tier facilities, expert trainers, and a variety of workout programs tailored to your unique fitness level and personal objectives.",
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<AboutSection />
|
||||
|
||||
<div id="training" data-section="training">
|
||||
<SectionErrorBoundary name="training">
|
||||
<FeaturesTaggedCards
|
||||
tag="Our Expertise"
|
||||
title="Comprehensive Training Programs"
|
||||
description="We specialize in a diverse range of training disciplines to ensure a balanced, holistic fitness journey."
|
||||
items={[
|
||||
{
|
||||
tag: "Strength",
|
||||
title: "Strength & Resistance",
|
||||
description: "Build muscle and increase metabolic rate with professional strength training.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/sports-brunette-woman-sportswear-training-gym_1157-30609.jpg",
|
||||
primaryButton: {
|
||||
text: "Explore",
|
||||
href: "#",
|
||||
},
|
||||
},
|
||||
{
|
||||
tag: "Flexibility",
|
||||
title: "Flexibility Routines",
|
||||
description: "Enhance mobility and recovery with our expert-led stretching and flexibility sessions.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/defocused-dumbbells_1203-368.jpg",
|
||||
primaryButton: {
|
||||
text: "Explore",
|
||||
href: "#",
|
||||
},
|
||||
},
|
||||
{
|
||||
tag: "Stability",
|
||||
title: "Balance Workouts",
|
||||
description: "Improve core stability and athletic performance through specialized balance drills.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/doctor-observes-patient-balance-exercise-movement-control_169016-71198.jpg",
|
||||
primaryButton: {
|
||||
text: "Explore",
|
||||
href: "#",
|
||||
},
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TrainingSection />
|
||||
|
||||
<div id="fitness-bento" data-section="fitness-bento">
|
||||
<SectionErrorBoundary name="fitness-bento">
|
||||
<FeaturesRevealCardsBento
|
||||
tag="Gym Facilities"
|
||||
title="Modern Fitness Environment"
|
||||
description="We offer world-class equipment and dedicated zones for every type of workout."
|
||||
items={[
|
||||
{
|
||||
title: "Weight Area",
|
||||
description: "Complete collection of free weights.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/pregnant-woman-gym-with-dumbbells-her-hands_169016-59143.jpg",
|
||||
href: "#",
|
||||
},
|
||||
{
|
||||
title: "Boxing Zone",
|
||||
description: "Professional boxing gear for cardio.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/sporty-girl-training-treadmill-home-home-workout-treadmill_169016-67735.jpg",
|
||||
href: "#",
|
||||
},
|
||||
{
|
||||
title: "Jump Ropes",
|
||||
description: "Elite conditioning tools.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-woman-with-hula-hoop_23-2149374939.jpg",
|
||||
href: "#",
|
||||
},
|
||||
{
|
||||
title: "Cardio Rowers",
|
||||
description: "High-intensity endurance machines.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/3d-gym-equipment_23-2151114132.jpg",
|
||||
href: "#",
|
||||
},
|
||||
{
|
||||
title: "Kettlebells",
|
||||
description: "Full set for functional training.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/woman-blue-sportswear-doing-lunges_23-2147687906.jpg",
|
||||
href: "#",
|
||||
},
|
||||
{
|
||||
title: "Yoga Studio",
|
||||
description: "Quiet space for floor work.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/training-composition-with-space-middle_23-2147692067.jpg",
|
||||
href: "#",
|
||||
},
|
||||
{
|
||||
title: "Battle Ropes",
|
||||
description: "High-intensity conditioning.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/weights-kettlebells-gym_23-2147675173.jpg",
|
||||
href: "#",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FitnessBentoSection />
|
||||
|
||||
<div id="pricing" data-section="pricing">
|
||||
<SectionErrorBoundary name="pricing">
|
||||
<PricingMediaCards
|
||||
tag="Affordable Quality"
|
||||
title="Simple Membership Pricing"
|
||||
description="Start your journey today at Karachi's premium gym."
|
||||
plans={[
|
||||
{
|
||||
tag: "Monthly",
|
||||
price: "3,500",
|
||||
period: "/month",
|
||||
features: [
|
||||
"Full Gym Access",
|
||||
"Core Workouts",
|
||||
"Resistance Training",
|
||||
],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/side-view-young-women-gym_23-2148419835.jpg",
|
||||
primaryButton: {
|
||||
text: "Join Now",
|
||||
href: "#contact",
|
||||
},
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<PricingSection />
|
||||
|
||||
<div id="metrics" data-section="metrics">
|
||||
<SectionErrorBoundary name="metrics">
|
||||
<MetricsFeatureCards
|
||||
tag="Our Impact"
|
||||
title="Fitness by the Numbers"
|
||||
description="We are proud of the transformation our members achieve every day."
|
||||
metrics={[
|
||||
{
|
||||
value: "500+",
|
||||
title: "Active Members",
|
||||
features: [
|
||||
"Vibrant community",
|
||||
"Diverse age groups",
|
||||
],
|
||||
},
|
||||
{
|
||||
value: "12",
|
||||
title: "Training Disciplines",
|
||||
features: [
|
||||
"Strength",
|
||||
"Mobility",
|
||||
"Cardio",
|
||||
],
|
||||
},
|
||||
{
|
||||
value: "4.8",
|
||||
title: "Member Rating",
|
||||
features: [
|
||||
"Expert guidance",
|
||||
"Clean facilities",
|
||||
],
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<MetricsSection />
|
||||
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialRatingCards
|
||||
tag="Member Stories"
|
||||
title="Proven Results"
|
||||
description="Hear what our members have to say about their fitness experience."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Ali Khan",
|
||||
role: "Corporate Worker",
|
||||
quote: "The best gym in Model Colony! Excellent guidance.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/two-internationals-friends-is-engaged-gym_1157-32106.jpg",
|
||||
},
|
||||
{
|
||||
name: "Sarah J.",
|
||||
role: "Student",
|
||||
quote: "I feel so much stronger and more flexible now.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/endurance-workout-fitness-concept-happy-motivated-woman-with-sweat-face-program-equipment-training-session-smiling-delighted-pushing-weight-with-legs-as-using-leg-press_197531-30391.jpg",
|
||||
},
|
||||
{
|
||||
name: "Zaid B.",
|
||||
role: "Entrepreneur",
|
||||
quote: "The trainers here are absolute professionals.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/muscular-sportsman-building-biceps-with-dumbbell_651396-294.jpg",
|
||||
},
|
||||
{
|
||||
name: "Maria F.",
|
||||
role: "Designer",
|
||||
quote: "Incredible facilities and very clean environment.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-woman-pink-top-standing-with-coach_1157-32121.jpg",
|
||||
},
|
||||
{
|
||||
name: "Hamza S.",
|
||||
role: "Manager",
|
||||
quote: "Perfect for my busy schedule, highly recommend.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/fitness-woman-does-push-ups-concentrated-forward-with-confident-expression-has-strong-body-musclular-arms-dressed-activewear-poses-outdoors_273609-55484.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<TestimonialsSection />
|
||||
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqSimple
|
||||
tag="Have Questions?"
|
||||
title="Frequently Asked Questions"
|
||||
description="Everything you need to know about our fitness studio."
|
||||
items={[
|
||||
{
|
||||
question: "What is the monthly fee?",
|
||||
answer: "Our membership is currently 3,500 per month.",
|
||||
},
|
||||
{
|
||||
question: "Are personal trainers available?",
|
||||
answer: "Yes, we have expert trainers ready to guide you.",
|
||||
},
|
||||
{
|
||||
question: "Do you offer core conditioning?",
|
||||
answer: "Absolutely, core and abs conditioning is part of our standard routines.",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<FaqSection />
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Get Started"
|
||||
text="Ready to transform your lifestyle? Join Balance and Burn today."
|
||||
primaryButton={{
|
||||
text: "Call Now: 0333 2276348",
|
||||
href: "tel:03332276348",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Message Us",
|
||||
href: "https://instagram.com/b.b_gmy_and_fitness_studio",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<ContactSection />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
22
src/pages/HomePage/sections/About.tsx
Normal file
22
src/pages/HomePage/sections/About.tsx
Normal file
@@ -0,0 +1,22 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "about" section.
|
||||
|
||||
import React from 'react';
|
||||
import AboutTextSplit from '@/components/sections/about/AboutTextSplit';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function AboutSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutTextSplit
|
||||
title="Your Goals, Our Mission"
|
||||
descriptions={[
|
||||
"Balance and Burn Gym and Fitness Studio is Karachi's premier destination for achieving your fitness goals. We offer a comprehensive environment designed to help you balance your lifestyle and burn calories effectively.",
|
||||
"Located conveniently in Model Colony, our studio provides top-tier facilities, expert trainers, and a variety of workout programs tailored to your unique fitness level and personal objectives.",
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
27
src/pages/HomePage/sections/Contact.tsx
Normal file
27
src/pages/HomePage/sections/Contact.tsx
Normal file
@@ -0,0 +1,27 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "contact" section.
|
||||
|
||||
import React from 'react';
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function ContactSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Get Started"
|
||||
text="Ready to transform your lifestyle? Join Balance and Burn today."
|
||||
primaryButton={{
|
||||
text: "Call Now: 0333 2276348",
|
||||
href: "tel:03332276348",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Message Us",
|
||||
href: "https://instagram.com/b.b_gmy_and_fitness_studio",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
34
src/pages/HomePage/sections/Faq.tsx
Normal file
34
src/pages/HomePage/sections/Faq.tsx
Normal file
@@ -0,0 +1,34 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "faq" section.
|
||||
|
||||
import React from 'react';
|
||||
import FaqSimple from '@/components/sections/faq/FaqSimple';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function FaqSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqSimple
|
||||
tag="Have Questions?"
|
||||
title="Frequently Asked Questions"
|
||||
description="Everything you need to know about our fitness studio."
|
||||
items={[
|
||||
{
|
||||
question: "What is the monthly fee?",
|
||||
answer: "Our membership is currently 3,500 per month.",
|
||||
},
|
||||
{
|
||||
question: "Are personal trainers available?",
|
||||
answer: "Yes, we have expert trainers ready to guide you.",
|
||||
},
|
||||
{
|
||||
question: "Do you offer core conditioning?",
|
||||
answer: "Absolutely, core and abs conditioning is part of our standard routines.",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
64
src/pages/HomePage/sections/FitnessBento.tsx
Normal file
64
src/pages/HomePage/sections/FitnessBento.tsx
Normal file
@@ -0,0 +1,64 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "fitness-bento" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function FitnessBentoSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="fitness-bento" data-section="fitness-bento">
|
||||
<SectionErrorBoundary name="fitness-bento">
|
||||
<FeaturesRevealCardsBento
|
||||
tag="Gym Facilities"
|
||||
title="Modern Fitness Environment"
|
||||
description="We offer world-class equipment and dedicated zones for every type of workout."
|
||||
items={[
|
||||
{
|
||||
title: "Weight Area",
|
||||
description: "Complete collection of free weights.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/pregnant-woman-gym-with-dumbbells-her-hands_169016-59143.jpg",
|
||||
href: "#",
|
||||
},
|
||||
{
|
||||
title: "Boxing Zone",
|
||||
description: "Professional boxing gear for cardio.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/sporty-girl-training-treadmill-home-home-workout-treadmill_169016-67735.jpg",
|
||||
href: "#",
|
||||
},
|
||||
{
|
||||
title: "Jump Ropes",
|
||||
description: "Elite conditioning tools.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-woman-with-hula-hoop_23-2149374939.jpg",
|
||||
href: "#",
|
||||
},
|
||||
{
|
||||
title: "Cardio Rowers",
|
||||
description: "High-intensity endurance machines.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/3d-gym-equipment_23-2151114132.jpg",
|
||||
href: "#",
|
||||
},
|
||||
{
|
||||
title: "Kettlebells",
|
||||
description: "Full set for functional training.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/woman-blue-sportswear-doing-lunges_23-2147687906.jpg",
|
||||
href: "#",
|
||||
},
|
||||
{
|
||||
title: "Yoga Studio",
|
||||
description: "Quiet space for floor work.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/training-composition-with-space-middle_23-2147692067.jpg",
|
||||
href: "#",
|
||||
},
|
||||
{
|
||||
title: "Battle Ropes",
|
||||
description: "High-intensity conditioning.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/weights-kettlebells-gym_23-2147675173.jpg",
|
||||
href: "#",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
29
src/pages/HomePage/sections/Hero.tsx
Normal file
29
src/pages/HomePage/sections/Hero.tsx
Normal file
@@ -0,0 +1,29 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "hero" section.
|
||||
|
||||
import React from 'react';
|
||||
import HeroOverlay from '@/components/sections/hero/HeroOverlay';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function HeroSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroOverlay
|
||||
tag="Premier Fitness in Model Colony"
|
||||
title="Balance and Burn Your Way to Peak Fitness"
|
||||
description="Join the premier gym and fitness studio in Karachi. Achieve your goals with professional guidance, state-of-the-art equipment, and a supportive community."
|
||||
primaryButton={{
|
||||
text: "Get Started",
|
||||
href: "#pricing",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Our Training",
|
||||
href: "#training",
|
||||
}}
|
||||
imageSrc="http://img.b2bpic.net/free-photo/motivated-young-female-athlete-smiling-gym-using-leg-press-equipment_197531-22866.jpg"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
47
src/pages/HomePage/sections/Metrics.tsx
Normal file
47
src/pages/HomePage/sections/Metrics.tsx
Normal file
@@ -0,0 +1,47 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "metrics" section.
|
||||
|
||||
import React from 'react';
|
||||
import MetricsFeatureCards from '@/components/sections/metrics/MetricsFeatureCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function MetricsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="metrics" data-section="metrics">
|
||||
<SectionErrorBoundary name="metrics">
|
||||
<MetricsFeatureCards
|
||||
tag="Our Impact"
|
||||
title="Fitness by the Numbers"
|
||||
description="We are proud of the transformation our members achieve every day."
|
||||
metrics={[
|
||||
{
|
||||
value: "500+",
|
||||
title: "Active Members",
|
||||
features: [
|
||||
"Vibrant community",
|
||||
"Diverse age groups",
|
||||
],
|
||||
},
|
||||
{
|
||||
value: "12",
|
||||
title: "Training Disciplines",
|
||||
features: [
|
||||
"Strength",
|
||||
"Mobility",
|
||||
"Cardio",
|
||||
],
|
||||
},
|
||||
{
|
||||
value: "4.8",
|
||||
title: "Member Rating",
|
||||
features: [
|
||||
"Expert guidance",
|
||||
"Clean facilities",
|
||||
],
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
37
src/pages/HomePage/sections/Pricing.tsx
Normal file
37
src/pages/HomePage/sections/Pricing.tsx
Normal file
@@ -0,0 +1,37 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "pricing" section.
|
||||
|
||||
import React from 'react';
|
||||
import PricingMediaCards from '@/components/sections/pricing/PricingMediaCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function PricingSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="pricing" data-section="pricing">
|
||||
<SectionErrorBoundary name="pricing">
|
||||
<PricingMediaCards
|
||||
tag="Affordable Quality"
|
||||
title="Simple Membership Pricing"
|
||||
description="Start your journey today at Karachi's premium gym."
|
||||
plans={[
|
||||
{
|
||||
tag: "Monthly",
|
||||
price: "3,500",
|
||||
period: "/month",
|
||||
features: [
|
||||
"Full Gym Access",
|
||||
"Core Workouts",
|
||||
"Resistance Training",
|
||||
],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/side-view-young-women-gym_23-2148419835.jpg",
|
||||
primaryButton: {
|
||||
text: "Join Now",
|
||||
href: "#contact",
|
||||
},
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
57
src/pages/HomePage/sections/Testimonials.tsx
Normal file
57
src/pages/HomePage/sections/Testimonials.tsx
Normal file
@@ -0,0 +1,57 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "testimonials" section.
|
||||
|
||||
import React from 'react';
|
||||
import TestimonialRatingCards from '@/components/sections/testimonial/TestimonialRatingCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function TestimonialsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialRatingCards
|
||||
tag="Member Stories"
|
||||
title="Proven Results"
|
||||
description="Hear what our members have to say about their fitness experience."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Ali Khan",
|
||||
role: "Corporate Worker",
|
||||
quote: "The best gym in Model Colony! Excellent guidance.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/two-internationals-friends-is-engaged-gym_1157-32106.jpg",
|
||||
},
|
||||
{
|
||||
name: "Sarah J.",
|
||||
role: "Student",
|
||||
quote: "I feel so much stronger and more flexible now.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/endurance-workout-fitness-concept-happy-motivated-woman-with-sweat-face-program-equipment-training-session-smiling-delighted-pushing-weight-with-legs-as-using-leg-press_197531-30391.jpg",
|
||||
},
|
||||
{
|
||||
name: "Zaid B.",
|
||||
role: "Entrepreneur",
|
||||
quote: "The trainers here are absolute professionals.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/muscular-sportsman-building-biceps-with-dumbbell_651396-294.jpg",
|
||||
},
|
||||
{
|
||||
name: "Maria F.",
|
||||
role: "Designer",
|
||||
quote: "Incredible facilities and very clean environment.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-woman-pink-top-standing-with-coach_1157-32121.jpg",
|
||||
},
|
||||
{
|
||||
name: "Hamza S.",
|
||||
role: "Manager",
|
||||
quote: "Perfect for my busy schedule, highly recommend.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/fitness-woman-does-push-ups-concentrated-forward-with-confident-expression-has-strong-body-musclular-arms-dressed-activewear-poses-outdoors_273609-55484.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
153
src/pages/HomePage/sections/Training.tsx
Normal file
153
src/pages/HomePage/sections/Training.tsx
Normal file
@@ -0,0 +1,153 @@
|
||||
/* eslint-disable */
|
||||
// @ts-nocheck — generated by catalog-eject; runtime-correct but TS strict-mode false-positives on inlined catalog body
|
||||
import Button from "@/components/ui/Button";
|
||||
import TextAnimation from "@/components/ui/TextAnimation";
|
||||
import ImageOrVideo from "@/components/ui/ImageOrVideo";
|
||||
import GridOrCarousel from "@/components/ui/GridOrCarousel";
|
||||
import ScrollReveal from "@/components/ui/ScrollReveal";
|
||||
|
||||
const items = [
|
||||
{
|
||||
tag: "Strength",
|
||||
title: "Strength & Resistance",
|
||||
description: "Build muscle and increase metabolic rate with professional strength training.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/sports-brunette-woman-sportswear-training-gym_1157-30609.jpg",
|
||||
primaryButton: {
|
||||
text: "Explore",
|
||||
href: "#"
|
||||
}
|
||||
},
|
||||
{
|
||||
tag: "Flexibility",
|
||||
title: "Flexibility Routines",
|
||||
description: "Enhance mobility and recovery with our expert-led stretching and flexibility sessions.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/defocused-dumbbells_1203-368.jpg",
|
||||
primaryButton: {
|
||||
text: "Explore",
|
||||
href: "#"
|
||||
}
|
||||
},
|
||||
{
|
||||
tag: "Stability",
|
||||
title: "Balance Workouts",
|
||||
description: "Improve core stability and athletic performance through specialized balance drills.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/doctor-observes-patient-balance-exercise-movement-control_169016-71198.jpg",
|
||||
primaryButton: {
|
||||
text: "Explore",
|
||||
href: "#"
|
||||
}
|
||||
},
|
||||
{
|
||||
tag: "Access",
|
||||
title: "Unlimited Access",
|
||||
description: "Train on your own schedule with 24/7 unlimited access to all gym facilities.",
|
||||
imageSrc: "https://images.unsplash.com/photo-1534438327276-14e5300c3a48?q=80&w=1470&auto=format&fit=crop",
|
||||
primaryButton: {
|
||||
text: "Explore",
|
||||
href: "#"
|
||||
}
|
||||
},
|
||||
{
|
||||
tag: "Consultation",
|
||||
title: "Free Consultation",
|
||||
description: "Kickstart your fitness journey with a complimentary session with our expert trainers.",
|
||||
imageSrc: "https://images.unsplash.com/photo-1571019614242-c5c5dee9f50b?q=80&w=1470&auto=format&fit=crop",
|
||||
primaryButton: {
|
||||
text: "Explore",
|
||||
href: "#"
|
||||
}
|
||||
},
|
||||
{
|
||||
tag: "Amenities",
|
||||
title: "Locker Facilities",
|
||||
description: "Secure and spacious locker rooms equipped with showers and premium amenities.",
|
||||
imageSrc: "https://images.unsplash.com/photo-1583454110551-21f2fa2afe61?q=80&w=1470&auto=format&fit=crop",
|
||||
primaryButton: {
|
||||
text: "Explore",
|
||||
href: "#"
|
||||
}
|
||||
}
|
||||
];
|
||||
|
||||
type FeatureItem = {
|
||||
tag: string;
|
||||
title: string;
|
||||
description: string;
|
||||
primaryButton: { text: string; href: string };
|
||||
} & ({ imageSrc: string; videoSrc?: never } | { videoSrc: string; imageSrc?: never });
|
||||
|
||||
interface FeaturesTaggedCardsProps {
|
||||
tag: string;
|
||||
title: string;
|
||||
description: string;
|
||||
primaryButton?: { text: string; href: string };
|
||||
secondaryButton?: { text: string; href: string };
|
||||
items: FeatureItem[];
|
||||
}
|
||||
|
||||
const TrainingInline = () => {
|
||||
return (
|
||||
<section aria-label="Features section" className="py-20">
|
||||
<div className="flex flex-col gap-8 md:gap-10">
|
||||
<div className="flex flex-col items-center w-content-width mx-auto gap-2">
|
||||
<div className="px-3 py-1 mb-1 text-sm card rounded w-fit">
|
||||
<p>{"Our Expertise"}</p>
|
||||
</div>
|
||||
|
||||
<TextAnimation
|
||||
text={"Comprehensive Training Programs"}
|
||||
variant="slide-up"
|
||||
gradientText={true}
|
||||
tag="h2"
|
||||
className="md:max-w-8/10 text-6xl 2xl:text-7xl leading-[1.15] font-semibold text-center text-balance"
|
||||
/>
|
||||
|
||||
<TextAnimation
|
||||
text={"We specialize in a diverse range of training disciplines to ensure a balanced, holistic fitness journey."}
|
||||
variant="slide-up"
|
||||
gradientText={false}
|
||||
tag="p"
|
||||
className="md:max-w-7/10 text-lg md:text-xl leading-snug text-center text-balance"
|
||||
/>
|
||||
|
||||
{(undefined || undefined) && (
|
||||
<div className="flex flex-wrap justify-center gap-3 mt-2 md:mt-3">
|
||||
{undefined && <Button text={undefined.text} href={undefined.href} variant="primary"/>}
|
||||
{undefined && <Button text={undefined.text} href={undefined.href} variant="secondary"animationDelay={0.1} />}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
|
||||
<ScrollReveal variant="fade">
|
||||
<GridOrCarousel>
|
||||
{items.map((item) => (
|
||||
<div key={item.title} className="flex flex-col gap-3 xl:gap-3.5 2xl:gap-4 p-3 xl:p-3.5 2xl:p-4 h-full card rounded group">
|
||||
<div className="relative aspect-square rounded overflow-hidden">
|
||||
<ImageOrVideo imageSrc={item.imageSrc} videoSrc={item.videoSrc} className="transition-transform duration-500 ease-in-out group-hover:scale-105" />
|
||||
<div className="absolute top-3 right-3 xl:top-3.5 xl:right-3.5 2xl:top-4 2xl:right-4 px-3 py-1 text-sm card rounded w-fit">
|
||||
<p>{item.tag}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex flex-col justify-between flex-1 gap-1 p-3 xl:p-3.5 2xl:p-4">
|
||||
<div className="flex flex-col gap-1">
|
||||
<h3 className="text-2xl font-semibold leading-snug text-balance">{item.title}</h3>
|
||||
<p className="text-base leading-snug text-balance">{item.description}</p>
|
||||
</div>
|
||||
<Button text={item.primaryButton.text} href={item.primaryButton.href} variant="primary" className="w-full mt-2 md:mt-3" />
|
||||
</div>
|
||||
</div>
|
||||
))}
|
||||
</GridOrCarousel>
|
||||
</ScrollReveal>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
};
|
||||
|
||||
export default function TrainingSection() {
|
||||
return (
|
||||
<div data-webild-section="training" id="training">
|
||||
<TrainingInline />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user