2 Commits

Author SHA1 Message Date
1cee5ebb29 Merge version_2_1781570009669 into main
Merge version_2_1781570009669 into main
2026-06-16 00:36:39 +00:00
kudinDmitriyUp
93e9e3685a Bob AI: Apply blue theme and update gym content 2026-06-16 00:35:56 +00:00
9 changed files with 301 additions and 242 deletions

View File

@@ -5,13 +5,13 @@
:root {
/* @colorThemes/lightTheme/grayNavyBlue */
--background: #0a0a0a;
--card: #1a1a1a;
--foreground: #f5f5f5;
--primary-cta: #dfff1c;
--primary-cta-text: #0a0a0a;
--secondary-cta: #1a1a1a;
--secondary-cta-text: #ffffff;
--background: #060B14;
--card: #E1E4E8;
--foreground: #FFFFFF;
--primary-cta: #0062E3;
--primary-cta-text: #FFFFFF;
--secondary-cta: #4B91F7;
--secondary-cta-text: #FFFFFF;
--accent: #8b9a1b;
--background-accent: #5d6b00;

View File

@@ -1,246 +1,33 @@
import ContactCta from '@/components/sections/contact/ContactCta';
import FaqTabbedAccordion from '@/components/sections/faq/FaqTabbedAccordion';
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
import FeaturesMediaCards from '@/components/sections/features/FeaturesMediaCards';
import HeroBillboard from '@/components/sections/hero/HeroBillboard';
import PricingLayeredCards from '@/components/sections/pricing/PricingLayeredCards';
import TestimonialMarqueeOverlayCards from '@/components/sections/testimonial/TestimonialMarqueeOverlayCards';
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 FeaturesSection from './HomePage/sections/Features';
import GallerySection from './HomePage/sections/Gallery';
import PricingSection from './HomePage/sections/Pricing';
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">
<HeroBillboard
tag="Elevate Your Training"
title="Unleash Your True Potential"
description="Experience the ultimate fitness environment at Romano's Gym. State-of-the-art equipment, elite trainers, and a community dedicated to your transformation."
primaryButton={{
text: "Start Free Trial",
href: "#contact",
}}
secondaryButton={{
text: "View Membership",
href: "#pricing",
}}
imageSrc="http://img.b2bpic.net/free-photo/trainer-helping-woman-while-practicing-pilates_107420-85001.jpg"
/>
</SectionErrorBoundary>
</div>
<>
<HeroSection />
<div id="features" data-section="features">
<SectionErrorBoundary name="features">
<FeaturesMediaCards
tag="Our Services"
title="Everything You Need to Succeed"
description="We offer a wide range of services designed to help you reach your goals faster."
items={[
{
title: "Strength Training",
description: "Access to a full suite of professional-grade powerlifting and bodybuilding equipment.",
imageSrc: "http://img.b2bpic.net/free-photo/dumbbell_74190-5777.jpg",
},
{
title: "Cardio Performance",
description: "Modern machines to improve endurance, stamina, and heart health.",
imageSrc: "http://img.b2bpic.net/free-photo/fit-woman-using-exercise-bike_651396-638.jpg",
},
{
title: "Personal Coaching",
description: "Expert trainers to guide your fitness journey and optimize your workout routines.",
imageSrc: "http://img.b2bpic.net/free-photo/young-women-gym-talking_23-2148419847.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<FeaturesSection />
<div id="gallery" data-section="gallery">
<SectionErrorBoundary name="gallery">
<FeaturesImageBento
tag="The Facility"
title="A World-Class Environment"
description="See why our members call Romano's Gym their second home."
items={[
{
title: "Weight Area",
description: "Professional racks and plates.",
imageSrc: "http://img.b2bpic.net/free-photo/stationary-bike_23-2148017334.jpg",
},
{
title: "Studio Floor",
description: "Spacious and clean.",
imageSrc: "http://img.b2bpic.net/free-photo/view-beautifully-decorated-round-table-with-natural-fir-branch-candle-two-flutes-plates-against-classic-sofa-modern-apartment_132075-11383.jpg",
},
{
title: "Flexibility Zone",
description: "Dedicated stretching space.",
imageSrc: "http://img.b2bpic.net/free-photo/portrait-concentrated-young-sportsgirl_171337-9037.jpg",
},
{
title: "Hydration Station",
description: "Stay refreshed.",
imageSrc: "http://img.b2bpic.net/free-photo/kit-sport-activities_23-2147829452.jpg",
},
{
title: "Performance Rack",
description: "Heavy lifting optimized.",
imageSrc: "http://img.b2bpic.net/free-photo/fitness-equipment_53876-138086.jpg",
},
{
title: "Pro Flooring",
description: "High impact rubber.",
imageSrc: "http://img.b2bpic.net/free-photo/woman-doing-back-closely_1163-134.jpg",
},
{
title: "Functional Tools",
description: "Kettlebells and bands.",
imageSrc: "http://img.b2bpic.net/free-photo/still-life-gym-equipment_23-2148197736.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<GallerySection />
<div id="pricing" data-section="pricing">
<SectionErrorBoundary name="pricing">
<PricingLayeredCards
tag="Membership Options"
title="Simple Pricing for Everyone"
description="No hidden fees, no long contracts. Just results."
plans={[
{
tag: "Essential",
price: "$39",
description: "Perfect for casual gym goers.",
primaryButton: {
text: "Join Now",
href: "#",
},
features: [
"Basic Access",
"Cardio Machines",
"Locker Room",
],
},
{
tag: "Elite",
price: "$69",
description: "For those serious about fitness.",
primaryButton: {
text: "Get Elite",
href: "#",
},
features: [
"Full Club Access",
"Group Classes",
"Guest Pass",
"Personalized Plan",
],
},
]}
/>
</SectionErrorBoundary>
</div>
<PricingSection />
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialMarqueeOverlayCards
tag="Success Stories"
title="Hear from Our Community"
description="What our members have to say about their experience at Romano's."
testimonials={[
{
name: "Alex R.",
role: "Powerlifter",
company: "Romano's Gym",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/beautiful-sportive-girl-posing-with-crossed-arms-dark-wall_176420-623.jpg",
},
{
name: "Sarah M.",
role: "Athlete",
company: "Romano's Gym",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/athletic-suntanned-female-fitness-model-holding-barbell-weight-wall-from-grey-bricks_613910-15526.jpg",
},
{
name: "John D.",
role: "Fitness Enthusiast",
company: "Romano's Gym",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/half-naked-muscular-african-sportsman-resting_171337-9437.jpg",
},
{
name: "Emily K.",
role: "Personal Training",
company: "Romano's Gym",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/portrait-fit-woman-with-napkin-sitting-wooden-box-gym_23-2147949544.jpg",
},
{
name: "Mike P.",
role: "Weightlifter",
company: "Romano's Gym",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/young-women-taking-part-spinning-class_23-2149332052.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<TestimonialsSection />
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqTabbedAccordion
tag="Common Questions"
title="Need Help? Find Answers."
description="Most questions about membership, hours, and training can be found here."
categories={[
{
name: "Membership",
items: [
{
question: "Are there contracts?",
answer: "No, all memberships are month-to-month.",
},
{
question: "Can I bring a guest?",
answer: "Elite members get unlimited guest passes.",
},
],
},
{
name: "Training",
items: [
{
question: "Do you offer PT?",
answer: "Yes, we have certified personal trainers on staff.",
},
],
},
]}
/>
</SectionErrorBoundary>
</div>
<FaqSection />
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="Join Today"
text="Ready to start your journey? Sign up today and get your first session on us."
primaryButton={{
text: "Contact Us",
href: "#",
}}
secondaryButton={{
text: "Book a Tour",
href: "#",
}}
/>
</SectionErrorBoundary>
</div>
<ContactSection />
</>
);
}

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="Join Today"
text="Ready to start your journey? Sign up today and get your first session on us."
primaryButton={{
text: "Contact Us",
href: "#",
}}
secondaryButton={{
text: "Book a Tour",
href: "#",
}}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,44 @@
// 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 FaqTabbedAccordion from '@/components/sections/faq/FaqTabbedAccordion';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function FaqSection(): React.JSX.Element {
return (
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqTabbedAccordion
tag="Common Questions"
title="Need Help? Find Answers."
description="Most questions about membership, hours, and training can be found here."
categories={[
{
name: "Membership",
items: [
{
question: "Are there contracts?",
answer: "No, all memberships are month-to-month.",
},
{
question: "Can I bring a guest?",
answer: "Elite members get unlimited guest passes.",
},
],
},
{
name: "Training",
items: [
{
question: "Do you offer PT?",
answer: "Yes, we have certified personal trainers on staff.",
},
],
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,37 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "features" section.
import React from 'react';
import FeaturesMediaCards from '@/components/sections/features/FeaturesMediaCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function FeaturesSection(): React.JSX.Element {
return (
<div id="features" data-section="features">
<SectionErrorBoundary name="features">
<FeaturesMediaCards
tag="Our Services"
title="Everything You Need to Succeed"
description="We offer a wide range of services designed to help you reach your goals faster."
items={[
{
title: "Strength Training",
description: "Access to a full suite of professional-grade powerlifting and bodybuilding equipment.",
imageSrc: "http://img.b2bpic.net/free-photo/dumbbell_74190-5777.jpg",
},
{
title: "Cardio Performance",
description: "Modern machines to improve endurance, stamina, and heart health.",
imageSrc: "http://img.b2bpic.net/free-photo/fit-woman-using-exercise-bike_651396-638.jpg",
},
{
title: "Personal Coaching",
description: "Expert trainers to guide your fitness journey and optimize your workout routines.",
imageSrc: "http://img.b2bpic.net/free-photo/young-women-gym-talking_23-2148419847.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,57 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "gallery" section.
import React from 'react';
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function GallerySection(): React.JSX.Element {
return (
<div id="gallery" data-section="gallery">
<SectionErrorBoundary name="gallery">
<FeaturesImageBento
tag="The Facility"
title="A World-Class Environment"
description="See why our members call Romano's Gym their second home."
items={[
{
title: "Weight Area",
description: "Professional racks and plates.",
imageSrc: "http://img.b2bpic.net/free-photo/stationary-bike_23-2148017334.jpg",
},
{
title: "Studio Floor",
description: "Spacious and clean.",
imageSrc: "http://img.b2bpic.net/free-photo/view-beautifully-decorated-round-table-with-natural-fir-branch-candle-two-flutes-plates-against-classic-sofa-modern-apartment_132075-11383.jpg",
},
{
title: "Flexibility Zone",
description: "Dedicated stretching space.",
imageSrc: "http://img.b2bpic.net/free-photo/portrait-concentrated-young-sportsgirl_171337-9037.jpg",
},
{
title: "Hydration Station",
description: "Stay refreshed.",
imageSrc: "http://img.b2bpic.net/free-photo/kit-sport-activities_23-2147829452.jpg",
},
{
title: "Performance Rack",
description: "Heavy lifting optimized.",
imageSrc: "http://img.b2bpic.net/free-photo/fitness-equipment_53876-138086.jpg",
},
{
title: "Pro Flooring",
description: "High impact rubber.",
imageSrc: "http://img.b2bpic.net/free-photo/woman-doing-back-closely_1163-134.jpg",
},
{
title: "Functional Tools",
description: "Kettlebells and bands.",
imageSrc: "http://img.b2bpic.net/free-photo/still-life-gym-equipment_23-2148197736.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View 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 HeroBillboard from '@/components/sections/hero/HeroBillboard';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function HeroSection(): React.JSX.Element {
return (
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroBillboard
tag="Elevate Your Training"
title="BIENVENIDOS A ROMANO'S"
description="LUNES - VIERNES 6:00AM - 1:00 PM Y 4:00 PM - 10:00PM | SABADO 7:00AM - 1:00PM"
primaryButton={{
text: "Start Free Trial",
href: "#contact",
}}
secondaryButton={{
text: "View Membership",
href: "#pricing",
}}
imageSrc="http://img.b2bpic.net/free-photo/trainer-helping-woman-while-practicing-pilates_107420-85001.jpg"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,21 @@
// 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 PricingLayeredCards from '@/components/sections/pricing/PricingLayeredCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function PricingSection(): React.JSX.Element {
return (
<div id="pricing" data-section="pricing">
<SectionErrorBoundary name="pricing">
<PricingLayeredCards
tag="Membership Options"
title="Simple Pricing for Everyone"
description="No hidden fees, no long contracts. Just results."
plans={[{"features":["ACCESO COMPLETO AL GYM","REGIMEN ALIMENTICIO","RUTINA PERSONALIZADA"],"primaryButton":{"href":"#contact","text":"Join Now"},"price":"$2000","tag":"PLAN PERSONALIZADO","description":"Mensual"},{"features":["EQUIPOS","VESTIDORES","REGADERAS","ASESORAMIENTO"],"price":"$600","primaryButton":{"href":"#contact","text":"Join Now"},"tag":"PLAN RECLUTA","description":"Mensual"},{"description":"6 Meses","tag":"PLAN CENTURIÓN","primaryButton":{"href":"#contact","text":"Join Now"},"price":"$2,999","features":["EQUIPOS","VESTIDORES","REGADERAS","ASESORAMIENTO"]},{"tag":"PLAN MILITUM","description":"Anual","features":["EQUIPOS","VESTIDORES","REGADERAS","ASESORAMIENTO"],"primaryButton":{"href":"#contact","text":"Join Now"},"price":"$5,999"}]}
/>
</SectionErrorBoundary>
</div>
);
}

View 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 TestimonialMarqueeOverlayCards from '@/components/sections/testimonial/TestimonialMarqueeOverlayCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function TestimonialsSection(): React.JSX.Element {
return (
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialMarqueeOverlayCards
tag="Success Stories"
title="Hear from Our Community"
description="What our members have to say about their experience at Romano's."
testimonials={[
{
name: "Alex R.",
role: "Powerlifter",
company: "Romano's Gym",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/beautiful-sportive-girl-posing-with-crossed-arms-dark-wall_176420-623.jpg",
},
{
name: "Sarah M.",
role: "Athlete",
company: "Romano's Gym",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/athletic-suntanned-female-fitness-model-holding-barbell-weight-wall-from-grey-bricks_613910-15526.jpg",
},
{
name: "John D.",
role: "Fitness Enthusiast",
company: "Romano's Gym",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/half-naked-muscular-african-sportsman-resting_171337-9437.jpg",
},
{
name: "Emily K.",
role: "Personal Training",
company: "Romano's Gym",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/portrait-fit-woman-with-napkin-sitting-wooden-box-gym_23-2147949544.jpg",
},
{
name: "Mike P.",
role: "Weightlifter",
company: "Romano's Gym",
rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/young-women-taking-part-spinning-class_23-2149332052.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}