14 Commits

Author SHA1 Message Date
e19c83bb6b Merge version_2 into main
Merge version_2 into main
2026-03-31 17:17:54 +00:00
1a2e890e8e Update theme colors 2026-03-31 17:17:49 +00:00
843bb21730 Merge version_2 into main
Merge version_2 into main
2026-03-30 17:57:22 +00:00
40f7e82d4e Update src/app/exercises/page.tsx 2026-03-30 17:57:19 +00:00
0705c454f2 Merge version_2 into main
Merge version_2 into main
2026-03-30 17:56:58 +00:00
ae87b05607 Update src/app/workout-log/page.tsx 2026-03-30 17:56:55 +00:00
b1940907fd Update src/app/workout-history/page.tsx 2026-03-30 17:56:55 +00:00
a495999be7 Update src/app/exercises/page.tsx 2026-03-30 17:56:54 +00:00
1c583ec49d Merge version_2 into main
Merge version_2 into main
2026-03-30 17:56:28 +00:00
be6d1517ff Add src/app/workout-log/page.tsx 2026-03-30 17:56:25 +00:00
d8c463c271 Add src/app/workout-history/page.tsx 2026-03-30 17:56:24 +00:00
420e9610f7 Update src/app/page.tsx 2026-03-30 17:56:24 +00:00
23b7192dd3 Add src/app/exercises/page.tsx 2026-03-30 17:56:23 +00:00
e06891ea9e Merge version_1 into main
Merge version_1 into main
2026-03-30 17:53:41 +00:00
5 changed files with 221 additions and 148 deletions

View File

@@ -0,0 +1,64 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay';
import FeatureCardMedia from '@/components/sections/feature/FeatureCardMedia';
import FooterBase from '@/components/sections/footer/FooterBase';
export default function ExercisesPage() {
return (
<ThemeProvider
defaultButtonVariant="text-stagger"
defaultTextAnimation="entrance-slide"
borderRadius="rounded"
contentWidth="medium"
sizing="medium"
background="circleGradient"
cardStyle="glass-elevated"
primaryButtonStyle="gradient"
secondaryButtonStyle="glass"
headingFontWeight="normal"
>
<ReactLenis root>
<div id="nav" data-section="nav">
<NavbarLayoutFloatingOverlay
navItems={[
{ name: "Home", id: "/" },
{ name: "Log Workout", id: "/workout-log" },
{ name: "History", id: "/workout-history" },
{ name: "Exercises", id: "/exercises" }
]}
/>
</div>
<div className="pt-32 pb-20">
<FeatureCardMedia
animationType="blur-reveal"
title="Exercise Library"
description="Master your form with our curated collection of effective exercises."
textboxLayout="default"
useInvertedBackground={false}
features={[
{
id: "e1", title: "Squats", tag: "Legs & Glutes", description: "Focus: Quadriceps, Hamstrings, Glutes. Keep your back straight, chest up, and lower your hips until thighs are parallel to the floor.", videoSrc: "https://www.w3schools.com/howto/movie.mp4?_wi=1"
},
{
id: "e2", title: "Push-ups", tag: "Chest & Shoulders", description: "Focus: Pectorals, Deltoids, Triceps. Maintain a straight plank position and lower your body until your chest nearly touches the floor.", videoSrc: "https://www.w3schools.com/howto/movie.mp4?_wi=2"
},
{
id: "e3", title: "Lunges", tag: "Legs & Stability", description: "Focus: Glutes, Quads. Step forward and lower your hips until both knees are bent at 90-degree angles.", videoSrc: "https://www.w3schools.com/howto/movie.mp4?_wi=3"
}
]}
/>
</div>
<div id="footer" data-section="footer">
<FooterBase
columns={[
{ title: "Vitality", items: [{ label: "Home", href: "/" }] }
]}
/>
</div>
</ReactLenis>
</ThemeProvider>
);
}

View File

@@ -30,21 +30,15 @@ export default function LandingPage() {
<NavbarLayoutFloatingOverlay
navItems={[
{
name: "About",
id: "about",
},
name: "About", id: "about"},
{
name: "Services",
id: "services",
},
name: "Services", id: "services"},
{
name: "Testimonials",
id: "testimonials",
},
name: "Exercises", id: "/exercises"},
{
name: "Contact",
id: "contact",
},
name: "Testimonials", id: "testimonials"},
{
name: "Contact", id: "contact"},
]}
brandName="Vitality"
/>
@@ -53,47 +47,26 @@ export default function LandingPage() {
<div id="hero" data-section="hero">
<HeroBillboardRotatedCarousel
background={{
variant: "rotated-rays-static",
}}
variant: "rotated-rays-static"}}
title="Redefining Your Wellness Experience"
description="Experience premium, personalized healthcare designed with your comfort and vitality in mind. Our clinic blends advanced science with serene luxury."
buttons={[
{
text: "Book Consultation",
href: "#contact",
},
text: "Book Consultation", href: "#contact"},
]}
carouselItems={[
{
id: "1",
imageSrc: "http://img.b2bpic.net/free-photo/side-view-woman-looking-out-window_23-2149622868.jpg",
imageAlt: "Luxurious healthcare clinic entrance",
},
id: "1", imageSrc: "http://img.b2bpic.net/free-photo/side-view-woman-looking-out-window_23-2149622868.jpg", imageAlt: "Luxurious healthcare clinic entrance"},
{
id: "2",
imageSrc: "http://img.b2bpic.net/free-photo/woman-relaxing-spa_23-2148000456.jpg",
imageAlt: "Calm medical environment",
},
id: "2", imageSrc: "http://img.b2bpic.net/free-photo/woman-relaxing-spa_23-2148000456.jpg", imageAlt: "Calm medical environment"},
{
id: "3",
imageSrc: "http://img.b2bpic.net/free-photo/family-doctor-doctor-s-office_23-2148168485.jpg",
imageAlt: "Professional medical consultation",
},
id: "3", imageSrc: "http://img.b2bpic.net/free-photo/family-doctor-doctor-s-office_23-2148168485.jpg", imageAlt: "Professional medical consultation"},
{
id: "4",
imageSrc: "http://img.b2bpic.net/free-photo/old-specialist-meeting-with-woman-patient-discuss-results-cabinet_482257-126979.jpg",
imageAlt: "State of the art medical facilities",
},
id: "4", imageSrc: "http://img.b2bpic.net/free-photo/old-specialist-meeting-with-woman-patient-discuss-results-cabinet_482257-126979.jpg", imageAlt: "State of the art medical facilities"},
{
id: "5",
imageSrc: "http://img.b2bpic.net/free-photo/nurse-guides-patient-medical-checkup_482257-108947.jpg",
imageAlt: "Healthcare expert professional",
},
id: "5", imageSrc: "http://img.b2bpic.net/free-photo/nurse-guides-patient-medical-checkup_482257-108947.jpg", imageAlt: "Healthcare expert professional"},
{
id: "6",
imageSrc: "http://img.b2bpic.net/free-psd/entrance-emergency-room-hospital-generative-ai_587448-2179.jpg",
imageAlt: "Modern wellness clinic lobby",
},
id: "6", imageSrc: "http://img.b2bpic.net/free-psd/entrance-emergency-room-hospital-generative-ai_587448-2179.jpg", imageAlt: "Modern wellness clinic lobby"},
]}
/>
</div>
@@ -105,19 +78,13 @@ export default function LandingPage() {
metrics={[
{
icon: Award,
label: "Years Experience",
value: "15+",
},
label: "Years Experience", value: "15+"},
{
icon: Users,
label: "Satisfied Patients",
value: "10k+",
},
label: "Satisfied Patients", value: "10k+"},
{
icon: CheckCircle,
label: "Procedures Completed",
value: "25k+",
},
label: "Procedures Completed", value: "25k+"},
]}
metricsAnimation="blur-reveal"
/>
@@ -130,32 +97,17 @@ export default function LandingPage() {
useInvertedBackground={false}
features={[
{
id: "s1",
title: "Precision Diagnostics",
tags: [
"Advanced Tech",
],
imageSrc: "http://img.b2bpic.net/free-photo/futuristic-kitchen-interior-design_23-2151821256.jpg",
imageAlt: "Medical tech",
},
id: "s1", title: "Precision Diagnostics", tags: [
"Advanced Tech"],
imageSrc: "http://img.b2bpic.net/free-photo/futuristic-kitchen-interior-design_23-2151821256.jpg", imageAlt: "Medical tech"},
{
id: "s2",
title: "Holistic Therapy",
tags: [
"Wellness",
],
imageSrc: "http://img.b2bpic.net/free-photo/labor-union-members-working-together_23-2150995049.jpg",
imageAlt: "Holistic healing",
},
id: "s2", title: "Holistic Therapy", tags: [
"Wellness"],
imageSrc: "http://img.b2bpic.net/free-photo/labor-union-members-working-together_23-2150995049.jpg", imageAlt: "Holistic healing"},
{
id: "s3",
title: "Preventative Care",
tags: [
"Health Check",
],
imageSrc: "http://img.b2bpic.net/free-photo/beautiful-stylish-white-office-successful-doctor_8353-9587.jpg",
imageAlt: "Medical checkup",
},
id: "s3", title: "Preventative Care", tags: [
"Health Check"],
imageSrc: "http://img.b2bpic.net/free-photo/beautiful-stylish-white-office-successful-doctor_8353-9587.jpg", imageAlt: "Medical checkup"},
]}
title="Comprehensive Wellness Care"
description="A tailored approach to your health, offering a wide range of specialized services in a premium setting."
@@ -170,45 +122,20 @@ export default function LandingPage() {
useInvertedBackground={false}
testimonials={[
{
id: "t1",
name: "Alice M.",
role: "Executive",
company: "Global Corp",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/portrait-happy-young-businesswoman-talking-mobile-phone_1262-16443.jpg?_wi=1",
},
id: "t1", name: "Alice M.", role: "Executive", company: "Global Corp", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/portrait-happy-young-businesswoman-talking-mobile-phone_1262-16443.jpg?_wi=1"},
{
id: "t2",
name: "David R.",
role: "Architect",
company: "Studio X",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/worker-with-big-smile-crossed-arms_1139-248.jpg",
},
id: "t2", name: "David R.", role: "Architect", company: "Studio X", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/worker-with-big-smile-crossed-arms_1139-248.jpg"},
{
id: "t3",
name: "Sarah K.",
role: "Teacher",
company: "EduGroup",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-man-with-water-bottle-mat_23-2148247208.jpg",
},
id: "t3", name: "Sarah K.", role: "Teacher", company: "EduGroup", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-man-with-water-bottle-mat_23-2148247208.jpg"},
{
id: "t4",
name: "Mark L.",
role: "Entrepreneur",
company: "StartUp Labs",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/patient-consulting-doctor_1170-2096.jpg",
},
id: "t4", name: "Mark L.", role: "Entrepreneur", company: "StartUp Labs", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/patient-consulting-doctor_1170-2096.jpg"},
{
id: "t5",
name: "Elena V.",
role: "Consultant",
company: "Strategy Firm",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/portrait-happy-young-businesswoman-talking-mobile-phone_1262-16443.jpg?_wi=2",
},
id: "t5", name: "Elena V.", role: "Consultant", company: "Strategy Firm", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/portrait-happy-young-businesswoman-talking-mobile-phone_1262-16443.jpg?_wi=2"},
]}
title="What Our Patients Say"
description="Excellence in care, as shared by those who trust us with their health journey."
@@ -222,22 +149,14 @@ export default function LandingPage() {
description="Ready to experience premium care? Reach out to our team to book your initial consultation."
inputs={[
{
name: "name",
type: "text",
placeholder: "Your Name",
required: true,
name: "name", type: "text", placeholder: "Your Name", required: true,
},
{
name: "email",
type: "email",
placeholder: "Your Email",
required: true,
name: "email", type: "email", placeholder: "Your Email", required: true,
},
]}
textarea={{
name: "message",
placeholder: "How can we help?",
rows: 4,
name: "message", placeholder: "How can we help?", rows: 4,
required: true,
}}
imageSrc="http://img.b2bpic.net/free-photo/general-practitioner-consulting-old-man-facility-office-taking-notes-give-prescription-medicine-treatment-medic-doing-checkup-examination-appointment-with-senior-patient-clinic_482257-49284.jpg"
@@ -251,33 +170,21 @@ export default function LandingPage() {
<FooterBase
columns={[
{
title: "Vitality",
items: [
title: "Vitality", items: [
{
label: "About Us",
href: "#about",
},
label: "About Us", href: "#about"},
{
label: "Services",
href: "#services",
},
label: "Services", href: "#services"},
{
label: "Contact",
href: "#contact",
},
label: "Contact", href: "#contact"},
],
},
{
title: "Legal",
items: [
title: "Legal", items: [
{
label: "Privacy Policy",
href: "#",
},
label: "Privacy Policy", href: "#"},
{
label: "Terms of Service",
href: "#",
},
label: "Terms of Service", href: "#"},
],
},
]}

View File

@@ -10,15 +10,15 @@
--accent: #ffffff;
--background-accent: #ffffff; */
--background: #f5f4ef;
--card: #dad6cd;
--foreground: #2a2928;
--primary-cta: #2a2928;
--primary-cta-text: #f5f4ef;
--secondary-cta: #ecebea;
--secondary-cta-text: #2a2928;
--accent: #ffffff;
--background-accent: #c6b180;
--background: #ffffff;
--card: #f9f9f9;
--foreground: #000612e6;
--primary-cta: #15479c;
--primary-cta-text: #ffffff;
--secondary-cta: #f9f9f9;
--secondary-cta-text: #000612e6;
--accent: #e2e2e2;
--background-accent: #c4c4c4;
/* text sizing - set by ThemeProvider */
/* --text-2xs: clamp(0.465rem, 0.62vw, 0.62rem);

View File

@@ -0,0 +1,49 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay';
import CardStack from '@/components/cardStack/CardStack';
export default function WorkoutHistoryPage() {
return (
<ThemeProvider
defaultButtonVariant="text-stagger"
defaultTextAnimation="entrance-slide"
borderRadius="rounded"
contentWidth="medium"
sizing="medium"
background="circleGradient"
cardStyle="glass-elevated"
primaryButtonStyle="gradient"
secondaryButtonStyle="glass"
headingFontWeight="normal"
>
<ReactLenis root>
<div id="nav" data-section="nav">
<NavbarLayoutFloatingOverlay
navItems={[
{ name: "Home", id: "/" },
{ name: "Log Workout", id: "/workout-log" },
{ name: "History", id: "/workout-history" },
{ name: "Exercises", id: "/exercises" }
]}
/>
</div>
<div className="pt-32 pb-20 px-6">
<h1 className="text-4xl font-bold mb-12 text-center">Your Workout History</h1>
<CardStack animationType="blur-reveal" textboxLayout="default">
<div className="p-8 bg-card rounded-xl shadow-lg border">
<h3 className="text-2xl font-semibold">Bench Press - 2023-10-15</h3>
<p>Sets: 4 | Reps: 10 | Weight: 80kg</p>
</div>
<div className="p-8 bg-card rounded-xl shadow-lg border">
<h3 className="text-2xl font-semibold">Squats - 2023-10-14</h3>
<p>Sets: 3 | Reps: 12 | Weight: 100kg</p>
</div>
</CardStack>
</div>
</ReactLenis>
</ThemeProvider>
);
}

View File

@@ -0,0 +1,53 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay';
import ContactSplitForm from '@/components/sections/contact/ContactSplitForm';
export default function WorkoutLogPage() {
return (
<ThemeProvider
defaultButtonVariant="text-stagger"
defaultTextAnimation="entrance-slide"
borderRadius="rounded"
contentWidth="medium"
sizing="medium"
background="circleGradient"
cardStyle="glass-elevated"
primaryButtonStyle="gradient"
secondaryButtonStyle="glass"
headingFontWeight="normal"
>
<ReactLenis root>
<div id="nav" data-section="nav">
<NavbarLayoutFloatingOverlay
navItems={[
{ name: "Home", id: "/" },
{ name: "Log Workout", id: "/workout-log" },
{ name: "History", id: "/workout-history" },
{ name: "Exercises", id: "/exercises" }
]}
/>
</div>
<div className="pt-32 pb-20 px-6 max-w-4xl mx-auto">
<h1 className="text-4xl font-bold mb-8">Log New Workout</h1>
<div id="contact" data-section="contact">
<ContactSplitForm
title="Record Your Session"
description="Log your daily exercise progress including weight and reps."
inputs={[
{ name: "exercise", type: "text", placeholder: "Exercise Name", required: true },
{ name: "sets", type: "number", placeholder: "Sets", required: true },
{ name: "reps", type: "number", placeholder: "Reps", required: true },
{ name: "weight", type: "number", placeholder: "Weight (kg)", required: true }
]}
buttonText="Save Workout"
useInvertedBackground={false}
/>
</div>
</div>
</ReactLenis>
</ThemeProvider>
);
}