16 Commits

Author SHA1 Message Date
06a54b4dab Merge version_9_1782376174762 into main
Merge version_9_1782376174762 into main
2026-06-25 08:31:41 +00:00
kudinDmitriyUp
277139d5a4 Bob AI: Populate src/pages/FatiguePage.tsx (snippet builder, 3 sections) 2026-06-25 08:31:06 +00:00
kudinDmitriyUp
8fa3fb592c Bob AI: Add fatigue page 2026-06-25 08:30:26 +00:00
35ce5c7f02 Merge version_8_1782375517356 into main
Merge version_8_1782375517356 into main
2026-06-25 08:20:56 +00:00
kudinDmitriyUp
880d8c4ecc Bob AI: remove the current placeholder text and replace it with the 2026-06-25 08:20:20 +00:00
3a06a5df89 Merge version_7_1782375297402 into main
Merge version_7_1782375297402 into main
2026-06-25 08:17:08 +00:00
kudinDmitriyUp
810bf45019 Bob AI: Replaced hero with HeroBrand for fatigue page 2026-06-25 08:16:18 +00:00
40964aa629 Merge version_6_1782374974662 into main
Merge version_6_1782374974662 into main
2026-06-25 08:10:17 +00:00
kudinDmitriyUp
ccd3b22994 Bob AI: Add service detail pages (dynamic route /services/:slug) 2026-06-25 08:10:13 +00:00
c1ae4c0c5c Merge version_5_1782374507117 into main
Merge version_5_1782374507117 into main
2026-06-25 08:03:56 +00:00
kudinDmitriyUp
179107ff92 Bob AI: Populate src/pages/NutritionPage.tsx (snippet builder, 3 sections) 2026-06-25 08:03:20 +00:00
kudinDmitriyUp
a489f50a40 Bob AI: Add nutrition page 2026-06-25 08:02:29 +00:00
e920dfcb2b Merge version_4_1782374229364 into main
Merge version_4_1782374229364 into main
2026-06-25 07:57:20 +00:00
702f8b77fd Update src/pages/HomePage.tsx 2026-06-25 07:57:17 +00:00
020691287b Merge version_3_1782374197978 into main
Merge version_3_1782374197978 into main
2026-06-25 07:56:49 +00:00
95404fe2ac Merge version_2_1782374083989 into main
Merge version_2_1782374083989 into main
2026-06-25 07:54:58 +00:00
15 changed files with 403 additions and 222 deletions

View File

@@ -2,12 +2,18 @@ import { Routes, Route } from 'react-router-dom';
import Layout from './components/Layout';
import HomePage from './pages/HomePage';
import NutritionPage from "@/pages/NutritionPage";
import ServiceDetailPage from './pages/ServiceDetailPage';
import FatiguePage from "@/pages/FatiguePage";
export default function App() {
return (
<Routes>
<Route element={<Layout />}>
<Route path="/" element={<HomePage />} />
<Route path="/nutrition" element={<NutritionPage />} />
</Route>
<Route path="/services/:slug" element={<ServiceDetailPage />} />
<Route path="/fatigue" element={<FatiguePage />} />
</Routes>
);
}

View File

@@ -34,7 +34,11 @@ export default function Layout() {
{
"name": "Training Schedules",
"href": "#training-schedules"
}
},
{ name: "Nutrition", href: "/nutrition" },
{ name: "Fatigue", href: "/fatigue" },
];
return (

19
src/data/services.ts Normal file
View File

@@ -0,0 +1,19 @@
export interface Service {
slug: string;
question: string;
answer: string;
body: string;
specs: Array<{ label: string; value: string }>;
}
export const services: Service[] = [
{"slug":"item-sc0cq","question":"Do I need to count calories to lose weight?","answer":"Not necessarily. While a caloric deficit is required for weight loss, focusing on nutrient-dense foods and portion control can be just as effective without the stress of tracking.","body":"Transform your outdoor space into a breathtaking extension of your home with our bespoke landscape design services. Our team of expert horticulturists and spatial designers works closely with you to understand your aesthetic preferences, lifestyle needs, and the unique microclimate of your property. We believe every garden should tell a story, blending natural beauty with functional elegance.\n\nFrom the initial conceptual sketches to the final 3D renderings, we ensure every detail is meticulously planned. We carefully select native plantings, drought-resistant flora, and mature trees that will thrive in your specific soil conditions while providing year-round visual interest. The result is a cohesive, sustainable, and stunning outdoor sanctuary.","specs":[{"label":"Consultation","value":"Free 1-hour site visit"},{"label":"Deliverables","value":"2D plans and 3D renderings"},{"label":"Timeline","value":"2-4 weeks"},{"label":"Revisions","value":"Up to 3 rounds"}]},
{"slug":"item-49l50","question":"What should I eat before a workout?","answer":"Aim for a mix of easily digestible carbohydrates and a moderate amount of protein about 1-2 hours before exercising to fuel your session and prevent fatigue.","body":"Anchor your outdoor living area with durable, beautifully crafted hardscape elements. Whether you envision a sprawling natural stone patio for summer entertaining, a cozy fire pit for crisp autumn evenings, or elegant retaining walls to tame a sloping yard, our master masons bring your vision to life. We use only premium materials sourced from trusted quarries to ensure longevity and timeless appeal.\n\nOur construction process prioritizes structural integrity and proper drainage, ensuring your new hardscape withstands the test of time and weather. We handle all necessary permits and site preparation, minimizing disruption to your daily life. Every paver is laid with precision, creating seamless transitions between your home's interior and your new outdoor oasis.","specs":[{"label":"Materials","value":"Natural stone, brick, concrete pavers"},{"label":"Warranty","value":"10-year structural guarantee"},{"label":"Permitting","value":"Handled by our team"},{"label":"Project Duration","value":"1-3 weeks"}]},
{"slug":"item-ggn6m","question":"Are carbohydrates bad for me?","answer":"Absolutely not. Carbohydrates are your body's primary energy source. Focus on complex carbs like whole grains, fruits, and vegetables rather than refined sugars.","body":"Protect your landscaping investment and conserve water with our state-of-the-art irrigation solutions. We design and install smart sprinkler and drip systems tailored to the specific hydration needs of your lawn, garden beds, and potted plants. By delivering the exact amount of water directly to the root zones, we promote deeper root growth and healthier, more resilient plants.\n\nModern irrigation is all about efficiency and convenience. We integrate smart controllers that automatically adjust watering schedules based on real-time local weather data and soil moisture sensors. You can easily monitor and control your entire system from your smartphone, ensuring your landscape remains lush and vibrant even when you are miles away from home.","specs":[{"label":"System Type","value":"Smart drip and sprinkler hybrid"},{"label":"Control","value":"Wi-Fi enabled mobile app"},{"label":"Water Savings","value":"Up to 40% annually"},{"label":"Maintenance","value":"Bi-annual seasonal checkups"}]},
{"slug":"item-wsnb3","question":"How much water should I drink daily?","answer":"A general rule is to drink at least 8 glasses a day, but your needs increase with physical activity and heat. Listen to your body and drink when thirsty.","body":"Extend the usability of your outdoor spaces well into the night with our custom architectural and landscape lighting. Proper illumination enhances the safety and security of your property while dramatically highlighting the architectural features of your home and the most beautiful elements of your garden. We use low-voltage, energy-efficient LED fixtures that cast a warm, inviting glow.\n\nOur lighting designers carefully map out focal points, pathways, and gathering areas to create a layered lighting effect. From subtle moonlighting cascading down from mature trees to precise uplighting on textured stone walls, we craft an enchanting nighttime atmosphere. All wiring is discreetly buried, leaving nothing but the stunning visual impact of the light itself.","specs":[{"label":"Bulb Type","value":"Low-voltage LED"},{"label":"Lifespan","value":"50,000+ hours"},{"label":"Automation","value":"Dusk-to-dawn timers"},{"label":"Style Options","value":"Brass, copper, and matte black"}]},
{"slug":"item-2cbar","question":"Can I build muscle on a plant-based diet?","answer":"Yes! Plant-based diets can provide ample protein through sources like lentils, beans, tofu, and quinoa. Proper planning ensures you get all essential amino acids.","body":"Keep your property looking immaculate year-round with our comprehensive seasonal maintenance packages. We go far beyond basic mowing, offering a holistic approach to turf and plant health. Our experienced crews provide precise edging, seasonal pruning, core aeration, and organic fertilization to ensure your landscape remains healthy, vibrant, and weed-free through every changing season.\n\nWe understand that a truly beautiful lawn requires proactive care. Our specialists conduct regular soil testing to adjust nutrient applications and monitor for early signs of pests or disease. By tailoring our maintenance schedule to the specific needs of your property and the local climate, we take the guesswork and labor out of yard work, leaving you with nothing to do but enjoy the view.","specs":[{"label":"Frequency","value":"Weekly or bi-weekly"},{"label":"Services","value":"Mowing, edging, pruning, cleanup"},{"label":"Fertilization","value":"100% organic options available"},{"label":"Contract Length","value":"6 or 12-month plans"}]},
];
export function findService(slug: string): Service | undefined {
return services.find((x) => x.slug === slug);
}

26
src/pages/FatiguePage.tsx Normal file
View File

@@ -0,0 +1,26 @@
import Button from "@/components/ui/Button";
import HeroBackgroundSlot from "@/components/ui/HeroBackgroundSlot";
import TextAnimation from "@/components/ui/TextAnimation";
import ImageOrVideo from "@/components/ui/ImageOrVideo";
import ScrollReveal from "@/components/ui/ScrollReveal";
import GridOrCarousel from "@/components/ui/GridOrCarousel";
import { Check } from "lucide-react";
export default function FatiguePage() {
return (
<>
<div data-webild-section="HeroSplit"><section aria-label="Hero section" className="relative flex items-center h-fit md:h-svh pt-25 pb-20 md:py-0"><HeroBackgroundSlot /><div className="flex flex-col md:flex-row items-center gap-12 md:gap-20 w-content-width mx-auto"><div className="w-full md:w-1/2"><div className="flex flex-col items-center md:items-start gap-3"><div className="px-3 py-1 mb-1 text-sm card rounded w-fit"><p>Overcome Exhaustion</p></div><TextAnimation text="Reclaim Your Energy Naturally" variant="fade-blur" gradientText={true} tag="h1" className="text-7xl 2xl:text-8xl leading-[1.15] font-semibold text-center md:text-left text-balance" /><TextAnimation text="Break free from chronic fatigue with our guided weekly programs. Learn how to fuel your body with revitalizing fruits and vegetables to restore your natural vitality." variant="fade-blur" gradientText={false} tag="p" className="md:max-w-8/10 text-lg md:text-xl leading-snug text-center md:text-left text-balance" /><div className="flex flex-wrap max-md:justify-center gap-3 mt-2 md:mt-3"><Button text="Explore Programs" href="#programs" variant="primary" /><Button text="Nutrition Guide" href="#nutrition" variant="secondary" animationDelay={0.1} /></div></div></div><ScrollReveal variant="slide-up" delay={0.2} className="w-full md:w-1/2 h-100 md:h-[65vh] md:max-h-[75svh] p-2 xl:p-3 2xl:p-4 card rounded overflow-hidden"><ImageOrVideo imageSrc="https://img.freepik.com/free-photo/top-view-assortment-vegetables-paper-bag_23-2148853335.jpg" /></ScrollReveal></div></section></div>
<div data-webild-section="FeaturesMediaCards"><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>Reclaim Your Energy</p></div><TextAnimation text="Natural Solutions for Exhaustion" variant="fade-blur" 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="Discover how nutrient-rich foods and structured weekly programs can help you overcome fatigue and restore your vitality." variant="fade-blur" gradientText={false} tag="p" className="md:max-w-7/10 text-lg md:text-xl leading-snug text-center text-balance" /><div className="flex flex-wrap justify-center gap-3 mt-2 md:mt-3"><Button text="View Programs" href="#programs" variant="primary" /><Button text="Learn More" href="#nutrition" variant="secondary" animationDelay={0.1} /></div></div><ScrollReveal variant="fade"><GridOrCarousel><div key="Power-Packed Vegetables" 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"><div className="aspect-square rounded overflow-hidden button-secondary shadow shadow-foreground/5"><ImageOrVideo imageSrc="https://img.freepik.com/free-photo/healthy-vegetables-wooden-table_1150-38014.jpg" /></div><div className="flex flex-col gap-1 p-3 xl:p-3.5 2xl:p-4"><h3 className="text-2xl font-semibold leading-snug">Power-Packed Vegetables</h3><p className="text-base leading-snug">Leafy greens and root vegetables provide essential vitamins to sustain your energy levels all day.</p></div></div>
<div key="Revitalizing Fruits" 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"><div className="aspect-square rounded overflow-hidden button-secondary shadow shadow-foreground/5"><ImageOrVideo imageSrc="https://img.freepik.com/free-photo/top-view-fresh-fruits-arrangement_23-2148949688.jpg" /></div><div className="flex flex-col gap-1 p-3 xl:p-3.5 2xl:p-4"><h3 className="text-2xl font-semibold leading-snug">Revitalizing Fruits</h3><p className="text-base leading-snug">Antioxidant-rich fruits offer a natural, jitter-free energy boost to combat midday slumps.</p></div></div>
<div key="Weekly Fatigue Programs" 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"><div className="aspect-square rounded overflow-hidden button-secondary shadow shadow-foreground/5"><ImageOrVideo imageSrc="https://img.freepik.com/free-photo/woman-writing-notebook-with-healthy-food_23-2148152684.jpg" /></div><div className="flex flex-col gap-1 p-3 xl:p-3.5 2xl:p-4"><h3 className="text-2xl font-semibold leading-snug">Weekly Fatigue Programs</h3><p className="text-base leading-snug">Structured routines combining nutrition, rest, and gentle movement to rebuild your stamina.</p></div></div></GridOrCarousel></ScrollReveal></div></section></div>
<div data-webild-section="PricingSimpleCards"><section aria-label="Pricing 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>Pricing Plans</p></div><TextAnimation text="Invest in Your Energy" variant="fade-blur" 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="Choose the right program to overcome exhaustion and reclaim your vitality through natural nutrition and structured support." variant="fade-blur" gradientText={false} tag="p" className="md:max-w-7/10 text-lg md:text-xl leading-snug text-center text-balance" /><div className="flex flex-wrap justify-center gap-3 mt-2 md:mt-3"><Button text="Get Started" href="#signup" variant="primary" /><Button text="Compare Plans" href="#compare" variant="secondary" animationDelay={0.1} /></div></div><ScrollReveal variant="slide-up"><GridOrCarousel><div key="Nutrition Starter" className="flex flex-col gap-4 xl:gap-5 2xl:gap-6 p-6 xl:p-7 2xl:p-8 h-full card rounded"><div className="px-3 py-1 text-sm card rounded w-fit"><p>Nutrition Starter</p></div><div className="flex flex-col gap-1"><span className="text-5xl md:text-6xl font-semibold">$49/mo</span><span className="text-base font-medium">Boost your energy with our guided natural nutrition plan.</span></div><div className="w-full h-px bg-foreground/20" /><div className="flex flex-col gap-3"><div key="Weekly fruit & veggie guides" className="flex items-start gap-3"><div className="flex items-center justify-center shrink-0 size-6 primary-button rounded"><Check className="size-3 text-primary-cta-text" strokeWidth={2} /></div><span className="text-base">Weekly fruit & veggie guides</span></div>
<div key="Energy-boosting recipes" className="flex items-start gap-3"><div className="flex items-center justify-center shrink-0 size-6 primary-button rounded"><Check className="size-3 text-primary-cta-text" strokeWidth={2} /></div><span className="text-base">Energy-boosting recipes</span></div>
<div key="Daily hydration tracking" className="flex items-start gap-3"><div className="flex items-center justify-center shrink-0 size-6 primary-button rounded"><Check className="size-3 text-primary-cta-text" strokeWidth={2} /></div><span className="text-base">Daily hydration tracking</span></div>
<div key="Email support" className="flex items-start gap-3"><div className="flex items-center justify-center shrink-0 size-6 primary-button rounded"><Check className="size-3 text-primary-cta-text" strokeWidth={2} /></div><span className="text-base">Email support</span></div></div></div>
<div key="Full Recovery" className="flex flex-col gap-4 xl:gap-5 2xl:gap-6 p-6 xl:p-7 2xl:p-8 h-full card rounded"><div className="px-3 py-1 text-sm card rounded w-fit"><p>Full Recovery</p></div><div className="flex flex-col gap-1"><span className="text-5xl md:text-6xl font-semibold">$99/mo</span><span className="text-base font-medium">A complete weekly program to overcome exhaustion.</span></div><div className="w-full h-px bg-foreground/20" /><div className="flex flex-col gap-3"><div key="Everything in Starter" className="flex items-start gap-3"><div className="flex items-center justify-center shrink-0 size-6 primary-button rounded"><Check className="size-3 text-primary-cta-text" strokeWidth={2} /></div><span className="text-base">Everything in Starter</span></div>
<div key="Weekly fatigue management plan" className="flex items-start gap-3"><div className="flex items-center justify-center shrink-0 size-6 primary-button rounded"><Check className="size-3 text-primary-cta-text" strokeWidth={2} /></div><span className="text-base">Weekly fatigue management plan</span></div>
<div key="1-on-1 energy coaching" className="flex items-start gap-3"><div className="flex items-center justify-center shrink-0 size-6 primary-button rounded"><Check className="size-3 text-primary-cta-text" strokeWidth={2} /></div><span className="text-base">1-on-1 energy coaching</span></div>
<div key="Sleep hygiene protocols" className="flex items-start gap-3"><div className="flex items-center justify-center shrink-0 size-6 primary-button rounded"><Check className="size-3 text-primary-cta-text" strokeWidth={2} /></div><span className="text-base">Sleep hygiene protocols</span></div></div></div></GridOrCarousel></ScrollReveal></div></section></div>
</>
);
}

View File

@@ -1,232 +1,33 @@
import AboutText from '@/components/sections/about/AboutText';
import ContactCta from '@/components/sections/contact/ContactCta';
import FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia';
import FeaturesMediaCarousel from '@/components/sections/features/FeaturesMediaCarousel';
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
import HeroOverlayMarquee from '@/components/sections/hero/HeroOverlayMarquee';
import MetricsMediaCards from '@/components/sections/metrics/MetricsMediaCards';
import { Award, Shield, Sparkles } from "lucide-react";
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 MalnutritionSolutionsSection from './HomePage/sections/MalnutritionSolutions';
import NutritionSection from './HomePage/sections/Nutrition';
import TrainingSchedulesSection from './HomePage/sections/TrainingSchedules';
import MotivationSection from './HomePage/sections/Motivation';
import ContactSection from './HomePage/sections/Contact';
export default function HomePage(): React.JSX.Element {
return (
<>
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroOverlayMarquee
tag="Personal Empowerment"
title="Fuel Your Body, Nourish Your Mind"
description="Comprehensive health resources, personalized training, and the motivation to achieve your true potential."
primaryButton={{
text: "Start My Plan",
href: "#contact",
}}
secondaryButton={{
text: "Learn More",
href: "#about",
}}
items={[
{
text: "Medical Backed",
icon: Shield,
},
{
text: "Elite Coaching",
icon: Award,
},
{
text: "Daily Motivation",
icon: Sparkles,
},
]}
imageSrc="https://images.pexels.com/photos/10828209/pexels-photo-10828209.jpeg?auto=compress&cs=tinysrgb&h=650&w=940&id=10828209"
/>
</SectionErrorBoundary>
</div>
<>
<HeroSection />
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutText
title="Why EmpowerVitality?"
primaryButton={{
text: "View App Features",
href: "#contact",
}}
/>
</SectionErrorBoundary>
</div>
<AboutSection />
<div id="malnutrition-solutions" data-section="malnutrition-solutions">
<SectionErrorBoundary name="malnutrition-solutions">
<FeaturesRevealCardsBento
tag="Solutions"
title="Overcoming Malnutrition"
description="Addressing common symptoms with scientific, actionable advice."
items={[
{
title: "Fatigue",
description: "Often caused by iron deficiency. Remedy: Leafy greens and red meat intake.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/closeup-bright-fresh-vegetables-fruits-berries_169016-20713.jpg",
},
{
title: "Hair Thinning",
description: "Protein and Zinc deficiency. Remedy: Nuts, seeds, and biotin-rich foods.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/different-tasty-nutritious-food-lunch-close-up_185193-109947.jpg",
},
{
title: "Poor Healing",
description: "Vitamin C or Zinc lack. Remedy: Citrus fruits and legumes.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/assortment-healthy-food-immunity-boosting_23-2148890233.jpg",
},
{
title: "Skin Issues",
description: "Omega-3 deficiency. Remedy: Fatty fish and flax seeds.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/fresh-fruits-vegetables-arranged-row-wooden-table_23-2148026924.jpg",
},
{
title: "Muscle Weakness",
description: "Lack of Magnesium. Remedy: Bananas, avocados, and dark chocolate.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/closeup-vegetable-salad-with-avocado-eggs_169016-19823.jpg",
},
{
title: "Mood Swings",
description: "B12/Folate deficiency. Remedy: Dairy, eggs, and fortified cereals.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/vegetables-fruits-flat-lay-isolated-white-background_169016-20651.jpg",
},
{
title: "Poor Focus",
description: "Omega-3 or B vitamin gap. Remedy: Walnuts and deep-sea fish.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/top-view-fresh-fruits-composition-different-fruits-white-background_140725-138719.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<MalnutritionSolutionsSection />
<div id="nutrition" data-section="nutrition">
<SectionErrorBoundary name="nutrition">
<FeaturesMediaCarousel
tag="Healthy Living"
title="Nutrition for Mind & Body"
description="Foods categorized for your specific development goals."
items={[
{
title: "Beautify Hair",
description: "Rich in biotin and keratin support.",
buttonIcon: "Zap",
imageSrc: "http://img.b2bpic.net/free-photo/bowl-with-fruits-vegetables_23-2147778432.jpg",
},
{
title: "Nourish Skin",
description: "Hydrating and collagen-boosting nutrients.",
buttonIcon: "Zap",
imageSrc: "http://img.b2bpic.net/free-photo/top-view-different-fresh-fruits-inside-plates-white-background-tropical-ripe-diet-mellow-exotic-healthy-life_140725-98384.jpg",
},
{
title: "Cognitive Clarity",
description: "Antioxidant-heavy foods for brain health.",
buttonIcon: "Zap",
imageSrc: "http://img.b2bpic.net/free-photo/plate-with-vegetables-seeds-nuts-generative-ai_169016-36598.jpg",
},
{
title: "Muscle Repair",
description: "High amino acid content for growth.",
buttonIcon: "Zap",
imageSrc: "http://img.b2bpic.net/free-photo/top-view-fresh-apples-with-sliced-oranges-plums-white-background-ripe-mellow-fruits-fresh-apple_140725-116624.jpg",
},
{
title: "Metabolic Boost",
description: "Thermogenic ingredients for energy.",
buttonIcon: "Zap",
imageSrc: "http://img.b2bpic.net/free-photo/top-view-vegetable-composition-with-seasonings-white-table_140725-144141.jpg",
},
{
title: "Bone Strength",
description: "Calcium and Vitamin D rich sources.",
buttonIcon: "Zap",
imageSrc: "https://storage.googleapis.com/webild/default/no-image.jpg?id=5rsczb",
},
]}
/>
</SectionErrorBoundary>
</div>
<NutritionSection />
<div id="training-schedules" data-section="training-schedules">
<SectionErrorBoundary name="training-schedules">
<MetricsMediaCards
tag="Professional Guides"
title="Doctor & Athlete Schedules"
description="Scientifically recommended physical and mental training."
metrics={[
{
value: "100%",
title: "Mental Focus",
description: "Guided daily meditation protocols.",
imageSrc: "http://img.b2bpic.net/free-photo/people-sharing-feelings-emotions-group-therapy-session_23-2151073971.jpg",
},
{
value: "5x",
title: "Physical Strength",
description: "Athletic standard conditioning plans.",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-man-woman-talking_23-2148894920.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<TrainingSchedulesSection />
<div id="motivation" data-section="motivation">
<SectionErrorBoundary name="motivation">
<FaqSplitMedia
tag="Inspiration"
title="Motivation Worldwide"
description="Essential quotes and reading list for empowerment."
items={[
{
question: "Marcus Aurelius on Life",
answer: "The happiness of your life depends upon the quality of your thoughts.",
},
{
question: "Atomic Habits (James Clear)",
answer: "Small changes, remarkable results. A cornerstone of personal development.",
},
{
question: "Viktor Frankl on Purpose",
answer: "When we are no longer able to change a situation, we are challenged to change ourselves.",
},
{
question: "Mindset (Carol Dweck)",
answer: "The power of believing you can improve your intelligence and ability.",
},
]}
imageSrc="http://img.b2bpic.net/free-photo/close-up-writing-map_23-2147776872.jpg"
/>
</SectionErrorBoundary>
</div>
<MotivationSection />
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="Personalized Plan"
text="Input your details for a custom weekly exercise and nutrition guide."
primaryButton={{
text: "Get My Plan",
href: "#",
}}
secondaryButton={{
text: "View Demo",
href: "#",
}}
/>
</SectionErrorBoundary>
</div>
<ContactSection />
</>
);
}

View 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 AboutText from '@/components/sections/about/AboutText';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function AboutSection(): React.JSX.Element {
return (
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutText
title="Why EmpowerVitality?"
primaryButton={{
text: "View App Features",
href: "#contact",
}}
/>
</SectionErrorBoundary>
</div>
);
}

View 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="Personalized Plan"
text="Input your details for a custom weekly exercise and nutrition guide."
primaryButton={{
text: "Get My Plan",
href: "#",
}}
secondaryButton={{
text: "View Demo",
href: "#",
}}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,18 @@
// Created by add_section_from_catalog (HeroBrand).
import React from 'react';
import HeroBrand from '@/components/sections/hero/HeroBrand';
export default function HeroSection(): React.JSX.Element {
return (
<div data-webild-section="hero" id="hero">
<HeroBrand
description="Overcome exhaustion and reclaim your energy with our specialized fatigue management programs."
primaryButton={{"href":"#contact","text":"Start My Plan"}}
secondaryButton={{"href":"#about","text":"Learn More"}}
brand="VitalitySphere"
imageSrc="https://picsum.photos/seed/1706416723/1200/800"
/>
</div>
);
}

View File

@@ -0,0 +1,64 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "malnutrition-solutions" section.
import React from 'react';
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function MalnutritionSolutionsSection(): React.JSX.Element {
return (
<div id="malnutrition-solutions" data-section="malnutrition-solutions">
<SectionErrorBoundary name="malnutrition-solutions">
<FeaturesRevealCardsBento
tag="Solutions"
title="Overcoming Malnutrition"
description="Addressing common symptoms with scientific, actionable advice."
items={[
{
title: "Fatigue",
description: "Often caused by iron deficiency. Remedy: Leafy greens and red meat intake.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/closeup-bright-fresh-vegetables-fruits-berries_169016-20713.jpg",
},
{
title: "Hair Thinning",
description: "Protein and Zinc deficiency. Remedy: Nuts, seeds, and biotin-rich foods.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/different-tasty-nutritious-food-lunch-close-up_185193-109947.jpg",
},
{
title: "Poor Healing",
description: "Vitamin C or Zinc lack. Remedy: Citrus fruits and legumes.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/assortment-healthy-food-immunity-boosting_23-2148890233.jpg",
},
{
title: "Skin Issues",
description: "Omega-3 deficiency. Remedy: Fatty fish and flax seeds.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/fresh-fruits-vegetables-arranged-row-wooden-table_23-2148026924.jpg",
},
{
title: "Muscle Weakness",
description: "Lack of Magnesium. Remedy: Bananas, avocados, and dark chocolate.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/closeup-vegetable-salad-with-avocado-eggs_169016-19823.jpg",
},
{
title: "Mood Swings",
description: "B12/Folate deficiency. Remedy: Dairy, eggs, and fortified cereals.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/vegetables-fruits-flat-lay-isolated-white-background_169016-20651.jpg",
},
{
title: "Poor Focus",
description: "Omega-3 or B vitamin gap. Remedy: Walnuts and deep-sea fish.",
href: "#",
imageSrc: "http://img.b2bpic.net/free-photo/top-view-fresh-fruits-composition-different-fruits-white-background_140725-138719.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,39 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "motivation" section.
import React from 'react';
import FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function MotivationSection(): React.JSX.Element {
return (
<div id="motivation" data-section="motivation">
<SectionErrorBoundary name="motivation">
<FaqSplitMedia
tag="Inspiration"
title="Motivation Worldwide"
description="Essential quotes and reading list for empowerment."
items={[
{
question: "Marcus Aurelius on Life",
answer: "The happiness of your life depends upon the quality of your thoughts.",
},
{
question: "Atomic Habits (James Clear)",
answer: "Small changes, remarkable results. A cornerstone of personal development.",
},
{
question: "Viktor Frankl on Purpose",
answer: "When we are no longer able to change a situation, we are challenged to change ourselves.",
},
{
question: "Mindset (Carol Dweck)",
answer: "The power of believing you can improve your intelligence and ability.",
},
]}
imageSrc="http://img.b2bpic.net/free-photo/close-up-writing-map_23-2147776872.jpg"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,58 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "nutrition" section.
import React from 'react';
import FeaturesMediaCarousel from '@/components/sections/features/FeaturesMediaCarousel';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function NutritionSection(): React.JSX.Element {
return (
<div id="nutrition" data-section="nutrition">
<SectionErrorBoundary name="nutrition">
<FeaturesMediaCarousel
tag="Healthy Living"
title="Nutrition for Mind & Body"
description="Foods categorized for your specific development goals."
items={[
{
title: "Beautify Hair",
description: "Rich in biotin and keratin support.",
buttonIcon: "Zap",
imageSrc: "http://img.b2bpic.net/free-photo/bowl-with-fruits-vegetables_23-2147778432.jpg",
},
{
title: "Nourish Skin",
description: "Hydrating and collagen-boosting nutrients.",
buttonIcon: "Zap",
imageSrc: "http://img.b2bpic.net/free-photo/top-view-different-fresh-fruits-inside-plates-white-background-tropical-ripe-diet-mellow-exotic-healthy-life_140725-98384.jpg",
},
{
title: "Cognitive Clarity",
description: "Antioxidant-heavy foods for brain health.",
buttonIcon: "Zap",
imageSrc: "http://img.b2bpic.net/free-photo/plate-with-vegetables-seeds-nuts-generative-ai_169016-36598.jpg",
},
{
title: "Muscle Repair",
description: "High amino acid content for growth.",
buttonIcon: "Zap",
imageSrc: "http://img.b2bpic.net/free-photo/top-view-fresh-apples-with-sliced-oranges-plums-white-background-ripe-mellow-fruits-fresh-apple_140725-116624.jpg",
},
{
title: "Metabolic Boost",
description: "Thermogenic ingredients for energy.",
buttonIcon: "Zap",
imageSrc: "http://img.b2bpic.net/free-photo/top-view-vegetable-composition-with-seasonings-white-table_140725-144141.jpg",
},
{
title: "Bone Strength",
description: "Calcium and Vitamin D rich sources.",
buttonIcon: "Zap",
imageSrc: "https://storage.googleapis.com/webild/default/no-image.jpg?id=5rsczb",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,34 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "training-schedules" section.
import React from 'react';
import MetricsMediaCards from '@/components/sections/metrics/MetricsMediaCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function TrainingSchedulesSection(): React.JSX.Element {
return (
<div id="training-schedules" data-section="training-schedules">
<SectionErrorBoundary name="training-schedules">
<MetricsMediaCards
tag="Professional Guides"
title="Doctor & Athlete Schedules"
description="Scientifically recommended physical and mental training."
metrics={[
{
value: "100%",
title: "Mental Focus",
description: "Guided daily meditation protocols.",
imageSrc: "http://img.b2bpic.net/free-photo/people-sharing-feelings-emotions-group-therapy-session_23-2151073971.jpg",
},
{
value: "5x",
title: "Physical Strength",
description: "Athletic standard conditioning plans.",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-man-woman-talking_23-2148894920.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,31 @@
import { useNavigate } from 'react-router-dom';
import Button from "@/components/ui/Button";
import HeroBackgroundSlot from "@/components/ui/HeroBackgroundSlot";
import TextAnimation from "@/components/ui/TextAnimation";
import ImageOrVideo from "@/components/ui/ImageOrVideo";
import ScrollReveal from "@/components/ui/ScrollReveal";
import GridOrCarousel from "@/components/ui/GridOrCarousel";
import FaqSimple from "@/components/sections/faq/FaqSimple";
import { services } from '@/data/services';
export default function NutritionPage() {
const navigate = useNavigate();
return (
<>
<div data-webild-section="HeroSplit"><section aria-label="Hero section" className="relative flex items-center h-fit md:h-svh pt-25 pb-20 md:py-0"><HeroBackgroundSlot /><div className="flex flex-col md:flex-row items-center gap-12 md:gap-20 w-content-width mx-auto"><div className="w-full md:w-1/2"><div className="flex flex-col items-center md:items-start gap-3"><div className="px-3 py-1 mb-1 text-sm card rounded w-fit"><p>Personalized Nutrition</p></div><TextAnimation text="Fuel Your Body for Peak Performance" variant="fade-blur" gradientText={true} tag="h1" className="text-7xl 2xl:text-8xl leading-[1.15] font-semibold text-center md:text-left text-balance" /><TextAnimation text="Discover science-backed nutrition plans tailored to your unique goals. Learn how to nourish your mind and body to achieve your true potential every single day." variant="fade-blur" gradientText={false} tag="p" className="md:max-w-8/10 text-lg md:text-xl leading-snug text-center md:text-left text-balance" /><div className="flex flex-wrap max-md:justify-center gap-3 mt-2 md:mt-3"><Button text="Get Your Plan" href="#nutrition-plans" variant="primary" /><Button text="Explore Recipes" href="#recipes" variant="secondary" animationDelay={0.1} /></div></div></div><ScrollReveal variant="slide-up" delay={0.2} className="w-full md:w-1/2 h-100 md:h-[65vh] md:max-h-[75svh] p-2 xl:p-3 2xl:p-4 card rounded overflow-hidden"><ImageOrVideo imageSrc="https://img.freepik.com/free-photo/fresh-healthy-food-assortment-dark-background_23-2148974582.jpg" /></ScrollReveal></div></section></div>
<div data-webild-section="FeaturesMediaCards"><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>Nutrition Guide</p></div><TextAnimation text="Comprehensive Nutrition Strategies" variant="fade-blur" 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="Discover personalized, science-backed nutrition strategies to nourish your mind and power your workouts. Take control of your diet today." variant="fade-blur" gradientText={false} tag="p" className="md:max-w-7/10 text-lg md:text-xl leading-snug text-center text-balance" /><div className="flex flex-wrap justify-center gap-3 mt-2 md:mt-3"><Button text="Get Your Plan" href="#nutrition-plans" variant="primary" /><Button text="Browse Recipes" href="#recipes" variant="secondary" animationDelay={0.1} /></div></div><ScrollReveal variant="fade"><GridOrCarousel><div key="Personalized Meal Plans" 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"><div className="aspect-square rounded overflow-hidden button-secondary shadow shadow-foreground/5"><ImageOrVideo imageSrc="https://img.freepik.com/free-photo/healthy-food-clean-eating-selection_7939-2249.jpg" /></div><div className="flex flex-col gap-1 p-3 xl:p-3.5 2xl:p-4"><h3 className="text-2xl font-semibold leading-snug">Personalized Meal Plans</h3><p className="text-base leading-snug">Tailored nutrition plans designed to meet your specific health and fitness goals.</p></div></div>
<div key="Macronutrient Tracking" 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"><div className="aspect-square rounded overflow-hidden button-secondary shadow shadow-foreground/5"><ImageOrVideo imageSrc="https://img.freepik.com/free-photo/top-view-healthy-food-with-copy-space_23-2148250269.jpg" /></div><div className="flex flex-col gap-1 p-3 xl:p-3.5 2xl:p-4"><h3 className="text-2xl font-semibold leading-snug">Macronutrient Tracking</h3><p className="text-base leading-snug">Learn how to balance proteins, fats, and carbs for optimal energy and recovery.</p></div></div>
<div key="Hydration Strategies" 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"><div className="aspect-square rounded overflow-hidden button-secondary shadow shadow-foreground/5"><ImageOrVideo imageSrc="https://img.freepik.com/free-photo/glass-water-with-lemon-mint_144627-16013.jpg" /></div><div className="flex flex-col gap-1 p-3 xl:p-3.5 2xl:p-4"><h3 className="text-2xl font-semibold leading-snug">Hydration Strategies</h3><p className="text-base leading-snug">Stay hydrated with our comprehensive guides on water intake and electrolyte balance.</p></div></div>
<div key="Mindful Eating Practices" 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"><div className="aspect-square rounded overflow-hidden button-secondary shadow shadow-foreground/5"><ImageOrVideo imageSrc="https://img.freepik.com/free-photo/woman-eating-salad-kitchen_1303-14300.jpg" /></div><div className="flex flex-col gap-1 p-3 xl:p-3.5 2xl:p-4"><h3 className="text-2xl font-semibold leading-snug">Mindful Eating Practices</h3><p className="text-base leading-snug">Build a healthier relationship with food and nourish your mind with every bite.</p></div></div></GridOrCarousel></ScrollReveal></div></section></div>
<div data-webild-section="FaqSimple"><FaqSimple
tag="Nutrition FAQ"
title="Common Questions About Your Diet"
description="Find answers to the most frequently asked questions about personalized nutrition, meal planning, and fueling your body."
primaryButton={{"text":"Get a Custom Plan","href":"#nutrition-plans"}}
secondaryButton={{"text":"Contact a Coach","href":"/contact"}}
items={services.map((p) => ({ ...p, onClick: () => navigate(`/services/${p.slug}`) }))}
/></div>
</>
);
}

View File

@@ -0,0 +1,30 @@
import { useParams, Link, Navigate } from 'react-router-dom';
import { findService } from '@/data/services';
export default function ServiceDetailPage() {
const { slug } = useParams<{ slug: string }>();
const service = slug ? findService(slug) : undefined;
if (!service) return <Navigate to="/services" replace />;
return (
<div className="flex flex-col min-h-screen bg-background text-foreground">
<main className="flex-grow pt-24">
<div className="w-content-width mx-auto py-16 flex flex-col gap-8">
<Link to="/services" className="text-sm opacity-60 hover:opacity-100 w-fit"> Back to Services</Link>
<div className="flex flex-col gap-4 max-w-3xl">
<h1 className="text-5xl font-bold">{service.question}</h1>
{service.body && <div className="text-base leading-relaxed opacity-80 whitespace-pre-line">{service.body}</div>}
</div>
<div className="grid grid-cols-2 md:grid-cols-3 gap-4">
{service.answer != null && (<div className="flex flex-col"><span className="text-xs uppercase tracking-wide opacity-50">Answer</span><span className="text-base">{String(service.answer)}</span></div>)}
</div>
{Array.isArray(service.specs) && service.specs.length > 0 && (
<div className="grid grid-cols-2 md:grid-cols-3 gap-4 border-t border-foreground/10 pt-6">
{service.specs.map((s, i) => (<div key={i} className="flex flex-col"><span className="text-xs uppercase tracking-wide opacity-50">{s.label}</span><span className="text-base">{s.value}</span></div>))}
</div>
)}
</div>
</main>
</div>
);
}

View File

@@ -6,4 +6,6 @@ export interface Route {
export const routes: Route[] = [
{ path: '/', label: 'Home', pageFile: 'HomePage' },
{ path: '/nutrition', label: 'Nutrition', pageFile: 'NutritionPage' },
{ path: '/fatigue', label: 'Fatigue', pageFile: 'FatiguePage' },
];