Merge version_2 into main #1

Merged
bender merged 4 commits from version_2 into main 2026-04-22 12:23:24 +00:00
4 changed files with 174 additions and 238 deletions

51
src/app/courses/page.tsx Normal file
View File

@@ -0,0 +1,51 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import NavbarLayoutFloatingInline from '@/components/navbar/NavbarLayoutFloatingInline';
import FooterBase from '@/components/sections/footer/FooterBase';
import ContactCTA from '@/components/sections/contact/ContactCTA';
import { LucideIcon } from "lucide-react";
export default function CoursesPage() {
return (
<ThemeProvider>
<ReactLenis root>
<NavbarLayoutFloatingInline
navItems={[
{ name: "Home", id: "/" },
{ name: "Courses", id: "/courses" },
]}
brandName="TrainFit"
button={{ text: "Get Started", href: "#contact" }}
/>
<div className="py-20 px-6 max-w-7xl mx-auto">
<h1 className="text-5xl font-bold mb-6">Our Courses</h1>
<p className="text-xl text-gray-600 mb-12">Explore our professional training programs.</p>
<div className="grid md:grid-cols-3 gap-8">
{["Strength Foundations", "Advanced Cardio", "Yoga for Mobility", "Nutrition Basics", "HIIT Mastery", "Recovery Science"].map((title, i) => (
<div key={i} className="p-6 rounded-2xl border border-gray-200 shadow-sm">
<h3 className="text-xl font-semibold mb-2">{title}</h3>
<p className="text-sm text-gray-500 mb-4">Master the fundamentals of your fitness journey.</p>
<button className="px-4 py-2 bg-black text-white rounded-full">View Course</button>
</div>
))}
</div>
</div>
<ContactCTA
tag="Get Started"
title="Start Your Training"
description="Ready to level up your fitness?"
buttons={[{text: "Get Started", href: "#"}]}
/>
<FooterBase
columns={[
{ title: "Product", items: [{ label: "Courses", href: "/courses" }] },
{ title: "Company", items: [{ label: "Contact", href: "#contact" }] },
]}
logoText="TrainFit"
/>
</ReactLenis>
</ThemeProvider>
);
}

View File

@@ -0,0 +1,31 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import NavbarLayoutFloatingInline from '@/components/navbar/NavbarLayoutFloatingInline';
import MetricCardOne from '@/components/sections/metrics/MetricCardOne';
import { TrendingUp, Activity, Target } from "lucide-react";
export default function DashboardPage() {
return (
<ThemeProvider>
<ReactLenis root>
<NavbarLayoutFloatingInline navItems={[{ name: "Home", id: "/" }, { name: "Dashboard", id: "/dashboard" }, { name: "Pricing", id: "/pricing" }]} brandName="TrainFit" />
<div className="pt-24">
<MetricCardOne
title="Your Progress"
description="Track your active training sessions and growth."
gridVariant="uniform-all-items-equal"
animationType="slide-up"
textboxLayout="split"
metrics={[
{ id: "1", value: "42", title: "Active Days", description: "Consistency streak", icon: Activity },
{ id: "2", value: "18", title: "Workouts", description: "Completed this month", icon: Target },
{ id: "3", value: "+12%", title: "Improvement", description: "Volume compared to last month", icon: TrendingUp }
]}
/>
</div>
</ReactLenis>
</ThemeProvider>
);
}

View File

@@ -12,7 +12,7 @@ import MetricSplitMediaAbout from '@/components/sections/about/MetricSplitMediaA
import NavbarLayoutFloatingInline from '@/components/navbar/NavbarLayoutFloatingInline';
import SocialProofOne from '@/components/sections/socialProof/SocialProofOne';
import TestimonialCardTen from '@/components/sections/testimonial/TestimonialCardTen';
import { Clock, Star, Zap } from "lucide-react";
import { Clock, Star, Zap, MessageSquare } from "lucide-react";
export default function LandingPage() {
return (
@@ -33,27 +33,17 @@ export default function LandingPage() {
<NavbarLayoutFloatingInline
navItems={[
{
name: "Features",
id: "#features",
},
name: "Features", id: "#features"},
{
name: "Metrics",
id: "#metrics",
},
name: "Metrics", id: "#metrics"},
{
name: "Testimonials",
id: "#testimonials",
},
name: "Testimonials", id: "#testimonials"},
{
name: "FAQ",
id: "#faq",
},
name: "FAQ", id: "#faq"},
]}
brandName="TrainFit"
button={{
text: "Get Started",
href: "#contact",
}}
text: "Get Started", href: "#contact"}}
/>
</div>
@@ -61,99 +51,51 @@ export default function LandingPage() {
<HeroSplitTestimonial
useInvertedBackground={true}
background={{
variant: "gradient-bars",
}}
variant: "gradient-bars"}}
title="Master Your Training"
description="Unlock professional-grade training plans, real-time analytics, and a community dedicated to results. Train smarter, not harder."
testimonials={[
{
name: "Alex R.",
handle: "@alexfit",
testimonial: "The best training app I've ever used. Precision tracking!",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/handsome-black-man-is-engaged-gym_1157-29637.jpg",
},
name: "Alex R.", handle: "@alexfit", testimonial: "The best training app I've ever used. Precision tracking!", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/handsome-black-man-is-engaged-gym_1157-29637.jpg"},
{
name: "Sarah J.",
handle: "@sfit",
testimonial: "Finally, a routine that works for my specific goals. Love it.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/front-view-young-female-excited-pink_179666-2069.jpg",
},
name: "Sarah J.", handle: "@sfit", testimonial: "Finally, a routine that works for my specific goals. Love it.", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/front-view-young-female-excited-pink_179666-2069.jpg"},
{
name: "Mark D.",
handle: "@marktrains",
testimonial: "Advanced metrics really pushed my limits. Worth every penny.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/high-angle-women-gym-training_23-2148419894.jpg",
},
name: "Mark D.", handle: "@marktrains", testimonial: "Advanced metrics really pushed my limits. Worth every penny.", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/high-angle-women-gym-training_23-2148419894.jpg"},
{
name: "Elena V.",
handle: "@elenaactive",
testimonial: "Community challenges are exactly what I needed.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/front-view-woman-outdoors-portrait_23-2150828878.jpg",
},
name: "Elena V.", handle: "@elenaactive", testimonial: "Community challenges are exactly what I needed.", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/front-view-woman-outdoors-portrait_23-2150828878.jpg"},
{
name: "John K.",
handle: "@jkfitness",
testimonial: "Professional UI and even better workout depth.",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/redhead-man-with-long-beard-wearing-basketball-uniform-angry-mad-raising-fist-frustrated-furious-while-shouting-with-anger-rage-aggressive-concept_839833-6491.jpg",
},
name: "John K.", handle: "@jkfitness", testimonial: "Professional UI and even better workout depth.", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/redhead-man-with-long-beard-wearing-basketball-uniform-angry-mad-raising-fist-frustrated-furious-while-shouting-with-anger-rage-aggressive-concept_839833-6491.jpg"},
]}
buttons={[
{
text: "Start Training",
href: "#contact",
},
text: "Start Training", href: "#contact"},
]}
imageSrc="http://img.b2bpic.net/free-photo/panoramic-view-determined-physically-active-young-man-stands-topless-highway-raises-leg-road-sign-does-exercises-morning-admires-nature-likes-sport-feels-exhausted-needs-energy_273609-29337.jpg"
mediaAnimation="slide-up"
avatars={[
{
src: "http://img.b2bpic.net/free-photo/confident-sportsman-with-bushy-hairstyle-doing-exercises-pier-early-morning-placing-his-arms-platform-while-listening-music_176420-19887.jpg",
alt: "athlete one",
},
src: "http://img.b2bpic.net/free-photo/confident-sportsman-with-bushy-hairstyle-doing-exercises-pier-early-morning-placing-his-arms-platform-while-listening-music_176420-19887.jpg", alt: "athlete one"},
{
src: "http://img.b2bpic.net/free-photo/exhausted-black-male-runner-rests-after-active-run-wears-sneakers-poses-thinks-about-future-sport-competitions-has-hard-sport-workout-jogging-motivation_273609-29338.jpg",
alt: "athlete two",
},
src: "http://img.b2bpic.net/free-photo/exhausted-black-male-runner-rests-after-active-run-wears-sneakers-poses-thinks-about-future-sport-competitions-has-hard-sport-workout-jogging-motivation_273609-29338.jpg", alt: "athlete two"},
{
src: "http://img.b2bpic.net/free-photo/serious-brunet-curly-darkskinned-man-black-sport-longsleeved-shirt-looks-into-camera-runs-outside_197531-28741.jpg",
alt: "athlete three",
},
src: "http://img.b2bpic.net/free-photo/serious-brunet-curly-darkskinned-man-black-sport-longsleeved-shirt-looks-into-camera-runs-outside_197531-28741.jpg", alt: "athlete three"},
{
src: "http://img.b2bpic.net/free-photo/tired-sporty-man-with-dark-skin-sprints-fast-mountain-road-focused-down-catches-breath-holds-fresh-water-bottle-models-against-mountain-view-free-space-your-advertising-content_273609-29330.jpg",
alt: "athlete four",
},
src: "http://img.b2bpic.net/free-photo/tired-sporty-man-with-dark-skin-sprints-fast-mountain-road-focused-down-catches-breath-holds-fresh-water-bottle-models-against-mountain-view-free-space-your-advertising-content_273609-29330.jpg", alt: "athlete four"},
{
src: "http://img.b2bpic.net/free-photo/cropped-shot-happy-young-afro-american-bodybuilder-looking-camera-grinning-confidently-keeping-hands-his-waist-posing-against-white-studio-wall-background-with-copy-space-your-text_343059-465.jpg",
alt: "athlete five",
},
src: "http://img.b2bpic.net/free-photo/cropped-shot-happy-young-afro-american-bodybuilder-looking-camera-grinning-confidently-keeping-hands-his-waist-posing-against-white-studio-wall-background-with-copy-space-your-text_343059-465.jpg", alt: "athlete five"},
]}
avatarText="Join 50k+ athletes"
marqueeItems={[
{
type: "text",
text: "Strength",
},
{
type: "text",
text: "Cardio",
},
{
type: "text",
text: "Yoga",
},
{
type: "text",
text: "Recovery",
},
{
type: "text",
text: "Nutrition",
},
{ type: "text", text: "Strength" },
{ type: "text", text: "Cardio" },
{ type: "text", text: "Yoga" },
{ type: "text", text: "Recovery" },
{ type: "text", text: "Nutrition" },
]}
/>
</div>
@@ -164,18 +106,9 @@ export default function LandingPage() {
title="Data-Driven Fitness"
description="We combine human expertise with advanced algorithms to design training programs that evolve with your performance."
metrics={[
{
value: "50k+",
title: "Active Athletes",
},
{
value: "1M+",
title: "Workouts Completed",
},
{
value: "98%",
title: "User Satisfaction",
},
{ value: "50k+", title: "Active Athletes" },
{ value: "1M+", title: "Workouts Completed" },
{ value: "98%", title: "User Satisfaction" },
]}
imageSrc="http://img.b2bpic.net/free-photo/image-beautiful-woman-stylish-sportswear-looking-her-smartphone-sitting-yoga-mat-home_1258-182393.jpg"
mediaAnimation="blur-reveal"
@@ -189,27 +122,9 @@ export default function LandingPage() {
textboxLayout="split"
useInvertedBackground={true}
features={[
{
id: "f1",
title: "Custom Plans",
subtitle: "Built for you",
category: "Training",
value: "Tailored",
},
{
id: "f2",
title: "Live Metrics",
subtitle: "Track real-time",
category: "Analytics",
value: "Precise",
},
{
id: "f3",
title: "Global Community",
subtitle: "Stay motivated",
category: "Social",
value: "Active",
},
{ id: "f1", title: "Custom Plans", subtitle: "Built for you", category: "Training", value: "Tailored" },
{ id: "f2", title: "Live Metrics", subtitle: "Track real-time", category: "Analytics", value: "Precise" },
{ id: "f3", title: "Global Community", subtitle: "Stay motivated", category: "Social", value: "Active" },
]}
title="Core Capabilities"
description="Powerful tools to help you crush your fitness goals."
@@ -223,27 +138,9 @@ export default function LandingPage() {
gridVariant="uniform-all-items-equal"
useInvertedBackground={false}
metrics={[
{
id: "m1",
value: "240",
title: "Workouts",
description: "This year alone",
icon: Zap,
},
{
id: "m2",
value: "120h",
title: "Time Spent",
description: "Focused training",
icon: Clock,
},
{
id: "m3",
value: "85kg",
title: "Avg Load",
description: "Average intensity",
icon: Star,
},
{ id: "m1", value: "240", title: "Workouts", description: "This year alone", icon: Zap },
{ id: "m2", value: "120h", title: "Time Spent", description: "Focused training", icon: Clock },
{ id: "m3", value: "85kg", title: "Avg Load", description: "Average intensity", icon: Star },
]}
title="Performance Tracking"
description="View all your stats in one place."
@@ -255,46 +152,11 @@ export default function LandingPage() {
textboxLayout="split"
useInvertedBackground={true}
testimonials={[
{
id: "t1",
title: "Game Changer",
quote: "I have never tracked my progress this effectively before.",
name: "Sarah P.",
role: "Athlete",
imageSrc: "http://img.b2bpic.net/free-photo/young-handsome-man-training-gym-bodybuilding_23-2149552356.jpg",
},
{
id: "t2",
title: "Incredible Data",
quote: "The analytics gave me the clarity I needed for growth.",
name: "John R.",
role: "Pro",
imageSrc: "http://img.b2bpic.net/free-photo/front-view-fit-man-gym_23-2150289978.jpg",
},
{
id: "t3",
title: "Motivating",
quote: "The community kept me consistent for months.",
name: "Emily S.",
role: "User",
imageSrc: "http://img.b2bpic.net/free-photo/young-women-gym-taking-selfies_23-2148419851.jpg",
},
{
id: "t4",
title: "Professional",
quote: "Training felt more structured and goals achieved faster.",
name: "David L.",
role: "Gym Goer",
imageSrc: "http://img.b2bpic.net/free-photo/young-woman-fitness-instructor-doing-workout-home-practice-yoga-wireless-headphones-rubber_1258-218294.jpg",
},
{
id: "t5",
title: "Must Have",
quote: "Best investment I made for my health.",
name: "Kevin M.",
role: "Amateur",
imageSrc: "http://img.b2bpic.net/free-photo/male-swimmer-with-towel-locker-room_23-2148357073.jpg",
},
{ id: "t1", title: "Game Changer", quote: "I have never tracked my progress this effectively before.", name: "Sarah P.", role: "Athlete", imageSrc: "http://img.b2bpic.net/free-photo/young-handsome-man-training-gym-bodybuilding_23-2149552356.jpg" },
{ id: "t2", title: "Incredible Data", quote: "The analytics gave me the clarity I needed for growth.", name: "John R.", role: "Pro", imageSrc: "http://img.b2bpic.net/free-photo/front-view-fit-man-gym_23-2150289978.jpg" },
{ id: "t3", title: "Motivating", quote: "The community kept me consistent for months.", name: "Emily S.", role: "User", imageSrc: "http://img.b2bpic.net/free-photo/young-women-gym-taking-selfies_23-2148419851.jpg" },
{ id: "t4", title: "Professional", quote: "Training felt more structured and goals achieved faster.", name: "David L.", role: "Gym Goer", imageSrc: "http://img.b2bpic.net/free-photo/young-woman-fitness-instructor-doing-workout-home-practice-yoga-wireless-headphones-rubber_1258-218294.jpg" },
{ id: "t5", title: "Must Have", quote: "Best investment I made for my health.", name: "Kevin M.", role: "Amateur", imageSrc: "http://img.b2bpic.net/free-photo/male-swimmer-with-towel-locker-room_23-2148357073.jpg" },
]}
title="User Stories"
description="Hear from the community."
@@ -305,15 +167,7 @@ export default function LandingPage() {
<SocialProofOne
textboxLayout="split"
useInvertedBackground={false}
names={[
"FitnessPro",
"GymNation",
"HealthCo",
"ActiveElite",
"PowerUp",
"StrongLife",
"VitalTech",
]}
names={["FitnessPro", "GymNation", "HealthCo", "ActiveElite", "PowerUp", "StrongLife", "VitalTech"]}
title="Trusted By Professionals"
description="Leading gyms and health tech companies rely on us."
/>
@@ -324,21 +178,9 @@ export default function LandingPage() {
textboxLayout="split"
useInvertedBackground={true}
faqs={[
{
id: "q1",
title: "How do I start?",
content: "Just sign up and follow our onboarding wizard.",
},
{
id: "q2",
title: "Is it paid?",
content: "We offer a free tier and a pro tier.",
},
{
id: "q3",
title: "Can I sync apps?",
content: "Yes, we integrate with most health wearables.",
},
{ id: "q1", title: "How do I start?", content: "Just sign up and follow our onboarding wizard." },
{ id: "q2", title: "Is it paid?", content: "We offer a free tier and a pro tier." },
{ id: "q3", title: "Can I sync apps?", content: "Yes, we integrate with most health wearables." },
]}
title="Common Questions"
description="Find quick answers."
@@ -351,17 +193,13 @@ export default function LandingPage() {
<div id="contact" data-section="contact">
<ContactCTA
useInvertedBackground={false}
background={{
variant: "plain",
}}
background={{ variant: "plain" }}
tag="Get Started"
title="Start Your Fitness Journey"
description="Join thousands of athletes training smarter. Get started for free today."
description="Join thousands of athletes training smarter. Get started for free today. Our AI Chatbot is here to assist with any questions!"
buttons={[
{
text: "Contact Support",
href: "#",
},
{ text: "Contact Support", href: "#" },
{ text: "Ask AI Chatbot", onClick: () => console.log("Open Chatbot") },
]}
/>
</div>
@@ -369,37 +207,25 @@ export default function LandingPage() {
<div id="footer" data-section="footer">
<FooterBase
columns={[
{
title: "Product",
items: [
{
label: "Features",
href: "#features",
},
{
label: "Metrics",
href: "#metrics",
},
],
},
{
title: "Company",
items: [
{
label: "About",
href: "#",
},
{
label: "Contact",
href: "#contact",
},
],
},
{ title: "Product", items: [{ label: "Features", href: "#features" }, { label: "Metrics", href: "#metrics" }] },
{ title: "Company", items: [{ label: "About", href: "#" }, { label: "Contact", href: "#contact" }] },
]}
logoText="TrainFit"
copyrightText="© 2025 TrainFit. All rights reserved."
/>
</div>
{/* Global AI Chatbot Integration */}
<div className="fixed bottom-6 right-6 z-50">
<button
className="p-4 bg-primary text-white rounded-full shadow-lg hover:scale-105 transition-all flex items-center justify-center"
onClick={() => console.log("Opening AI Chatbot")}
aria-label="Open AI Chatbot"
>
<MessageSquare size={24} />
</button>
</div>
</ReactLenis>
</ThemeProvider>
);

28
src/app/pricing/page.tsx Normal file
View File

@@ -0,0 +1,28 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import NavbarLayoutFloatingInline from '@/components/navbar/NavbarLayoutFloatingInline';
import PricingCardFive from '@/components/sections/pricing/PricingCardFive';
export default function PricingPage() {
return (
<ThemeProvider>
<ReactLenis root>
<NavbarLayoutFloatingInline navItems={[{ name: "Home", id: "/" }, { name: "Dashboard", id: "/dashboard" }, { name: "Pricing", id: "/pricing" }]} brandName="TrainFit" />
<div className="pt-24">
<PricingCardFive
title="Subscription Tiers"
description="Choose the plan that suits your goals."
textboxLayout="split"
animationType="slide-up"
plans={[
{ id: "basic", tag: "Free", price: "$0", period: "forever", description: "Essentials for beginners.", button: { text: "Join Free" }, featuresTitle: "Includes", features: ["Basic Tracking", "Community Access"] },
{ id: "pro", tag: "Pro", price: "$19", period: "mo", description: "Advanced for athletes.", button: { text: "Upgrade Now" }, featuresTitle: "Includes", features: ["Everything in Basic", "Advanced Analytics", "Custom Plans"] }
]}
/>
</div>
</ReactLenis>
</ThemeProvider>
);
}