Compare commits
2 Commits
version_1_
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 05a60fff51 | |||
|
|
fccc057a2b |
@@ -5,15 +5,15 @@
|
||||
|
||||
:root {
|
||||
/* @colorThemes/lightTheme/grayNavyBlue */
|
||||
--background: #0a0a0a;
|
||||
--card: #1a1a1a;
|
||||
--foreground: #f5f5f5;
|
||||
--primary-cta: #ffdf7d;
|
||||
--primary-cta-text: #0a0a0a;
|
||||
--secondary-cta: #1a1a1a;
|
||||
--background: #0f172a;
|
||||
--card: #1e293b;
|
||||
--foreground: #f8fafc;
|
||||
--primary-cta: #3b82f6;
|
||||
--primary-cta-text: #ffffff;
|
||||
--secondary-cta: #1e293b;
|
||||
--secondary-cta-text: #ffffff;
|
||||
--accent: #b8860b;
|
||||
--background-accent: #8b6914;
|
||||
--accent: #2563eb;
|
||||
--background-accent: #1d4ed8;
|
||||
|
||||
/* @layout/border-radius/rounded */
|
||||
--radius: 0.5rem;
|
||||
|
||||
@@ -1,243 +1,26 @@
|
||||
import AboutText from '@/components/sections/about/AboutText';
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia';
|
||||
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
|
||||
import HeroBillboard from '@/components/sections/hero/HeroBillboard';
|
||||
import PricingLayeredCards from '@/components/sections/pricing/PricingLayeredCards';
|
||||
import TestimonialColumnMarqueeCards from '@/components/sections/testimonial/TestimonialColumnMarqueeCards';
|
||||
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; this shell only fixes render order.
|
||||
|
||||
export default function HomePage() {
|
||||
import React from 'react';
|
||||
import HomeSection from './HomePage/sections/Home';
|
||||
import AboutSection from './HomePage/sections/About';
|
||||
import RoomsSection from './HomePage/sections/Rooms';
|
||||
import OffersSection from './HomePage/sections/Offers';
|
||||
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="home" data-section="home">
|
||||
<SectionErrorBoundary name="home">
|
||||
<HeroBillboard
|
||||
title="Experience Unrivaled Luxury at The Grandeur Hotel"
|
||||
description="Nestled in the heart of the city, The Grandeur Hotel offers an exquisite escape where timeless elegance meets modern comfort. Discover a sanctuary designed for ultimate relaxation and refined indulgence."
|
||||
primaryButton={{
|
||||
text: "Book Your Stay",
|
||||
href: "#offers",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Explore Rooms",
|
||||
href: "#rooms",
|
||||
}}
|
||||
imageSrc="https://images.pexels.com/photos/6466290/pexels-photo-6466290.jpeg?auto=compress&cs=tinysrgb&h=650&w=940"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutText
|
||||
title="A Legacy of Hospitality and Elegance"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
|
||||
<div id="rooms" data-section="rooms">
|
||||
<SectionErrorBoundary name="rooms">
|
||||
<FeaturesRevealCardsBento
|
||||
tag="Our Accommodations"
|
||||
title="Indulge in Exquisite Comfort"
|
||||
description="Each room and suite at The Grandeur Hotel is a haven of luxury, meticulously designed with opulent furnishings and state-of-the-art amenities to provide an unparalleled experience."
|
||||
items={[
|
||||
{
|
||||
title: "Deluxe Room",
|
||||
description: "Sophisticated design with a plush king-sized bed, high-speed Wi-Fi, and stunning city views.",
|
||||
href: "#",
|
||||
imageSrc: "https://images.pexels.com/photos/3940733/pexels-photo-3940733.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
{
|
||||
title: "Executive Suite",
|
||||
description: "Expansive living area, a private work desk, and exclusive access to the Executive Lounge amenities.",
|
||||
href: "#",
|
||||
imageSrc: "https://images.pexels.com/photos/6899355/pexels-photo-6899355.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
{
|
||||
title: "Presidential Suite",
|
||||
description: "The epitome of luxury with a grand foyer, multiple bedrooms, and a dedicated butler service for an elite experience.",
|
||||
href: "#",
|
||||
imageSrc: "https://images.pexels.com/photos/27829894/pexels-photo-27829894.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
{
|
||||
title: "Ocean View Room",
|
||||
description: "Wake up to breathtaking panoramic ocean views, complemented by elegant decor and a private balcony.",
|
||||
href: "#",
|
||||
imageSrc: "https://images.pexels.com/photos/31146633/pexels-photo-31146633.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
{
|
||||
title: "Family Suite",
|
||||
description: "Designed for comfort and space, featuring separate sleeping areas and child-friendly amenities to ensure a delightful family stay.",
|
||||
href: "#",
|
||||
imageSrc: "https://images.pexels.com/photos/6466484/pexels-photo-6466484.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
{
|
||||
title: "Accessible Room",
|
||||
description: "Thoughtfully designed for accessibility with widened doorways, roll-in showers, and assistive devices for a comfortable and secure stay.",
|
||||
href: "#",
|
||||
imageSrc: "https://images.pexels.com/photos/1457847/pexels-photo-1457847.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
{
|
||||
title: "Penthouse Suite",
|
||||
description: "Our most exclusive offering, featuring a private terrace, a gourmet kitchen, and personalized services for an unforgettable stay above the city.",
|
||||
href: "#",
|
||||
imageSrc: "https://images.pexels.com/photos/9696597/pexels-photo-9696597.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
|
||||
<div id="offers" data-section="offers">
|
||||
<SectionErrorBoundary name="offers">
|
||||
<PricingLayeredCards
|
||||
tag="Exclusive Offers"
|
||||
title="Tailored Stays for Every Desire"
|
||||
description="Discover our range of meticulously crafted packages, offering exceptional value and unforgettable experiences for every type of traveler. From romantic getaways to family vacations, your perfect stay awaits."
|
||||
plans={[
|
||||
{
|
||||
tag: "Standard Stay",
|
||||
price: "$300/night",
|
||||
description: "Enjoy a comfortable stay with essential amenities.",
|
||||
primaryButton: {
|
||||
text: "Book Standard",
|
||||
href: "#",
|
||||
},
|
||||
features: [
|
||||
"Luxury Room",
|
||||
"Complimentary Wi-Fi",
|
||||
"Access to Fitness Center",
|
||||
"Concierge Service",
|
||||
],
|
||||
},
|
||||
{
|
||||
tag: "Weekend Escape",
|
||||
price: "$550/weekend",
|
||||
description: "Perfect for a romantic getaway or a relaxing short break.",
|
||||
primaryButton: {
|
||||
text: "Book Weekend",
|
||||
href: "#",
|
||||
},
|
||||
features: [
|
||||
"Executive Suite",
|
||||
"Breakfast for Two",
|
||||
"Spa Credit ($50)",
|
||||
"Late Check-out",
|
||||
],
|
||||
},
|
||||
{
|
||||
tag: "Luxury Indulgence",
|
||||
price: "$999/night",
|
||||
description: "Experience the pinnacle of luxury with our premium package.",
|
||||
primaryButton: {
|
||||
text: "Book Indulgence",
|
||||
href: "#",
|
||||
},
|
||||
features: [
|
||||
"Presidential Suite",
|
||||
"Gourmet Dinner",
|
||||
"Private Car Service",
|
||||
"Personal Butler",
|
||||
],
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialColumnMarqueeCards
|
||||
tag="Guest Experiences"
|
||||
title="What Our Esteemed Guests Say"
|
||||
description="Hear firsthand accounts from travelers who have experienced the exceptional service and luxurious comfort that define The Grandeur Hotel."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Isabella Rossi",
|
||||
role: "Fashion Designer",
|
||||
quote: "The Grandeur Hotel exceeded all expectations. The attention to detail, from the exquisite decor to the impeccable service, made my stay truly unforgettable. A perfect blend of classic elegance and modern luxury.",
|
||||
imageSrc: "https://images.pexels.com/photos/3770095/pexels-photo-3770095.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
{
|
||||
name: "Marcus Thorne",
|
||||
role: "Tech Entrepreneur",
|
||||
quote: "Simply outstanding. The Executive Suite provided a serene environment for both work and relaxation. The staff anticipated every need, making me feel incredibly valued. This is my new go-to hotel.",
|
||||
imageSrc: "https://images.pexels.com/photos/33761224/pexels-photo-33761224.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
{
|
||||
name: "Sophia Chang",
|
||||
role: "Art Curator",
|
||||
quote: "Every moment at The Grandeur was a delight. The culinary experience was exceptional, and the hotel's ambiance is truly captivating. It felt like a retreat into a world of refined beauty.",
|
||||
imageSrc: "https://images.pexels.com/photos/9119637/pexels-photo-9119637.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
{
|
||||
name: "David Miller",
|
||||
role: "Philanthropist",
|
||||
quote: "I've traveled the world, and The Grandeur Hotel stands out. The personalized service and commitment to guest satisfaction are commendable. A truly luxurious experience from start to finish.",
|
||||
imageSrc: "https://images.pexels.com/photos/5378693/pexels-photo-5378693.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
{
|
||||
name: "Elena Petrova",
|
||||
role: "Concert Pianist",
|
||||
quote: "The tranquility and elegance of my room allowed for perfect rest before my performance. The staff's professionalism and warmth were deeply appreciated. A gem of a hotel.",
|
||||
imageSrc: "https://images.pexels.com/photos/6939124/pexels-photo-6939124.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqSplitMedia
|
||||
tag="Your Questions, Answered"
|
||||
title="Frequently Asked Questions"
|
||||
description="Find quick answers to common inquiries about your stay, amenities, booking, and more at The Grandeur Hotel."
|
||||
items={[
|
||||
{
|
||||
question: "What are the check-in and check-out times?",
|
||||
answer: "Check-in is at 3:00 PM, and check-out is at 12:00 PM. We offer late check-out options based on availability, please inquire at the front desk.",
|
||||
},
|
||||
{
|
||||
question: "Does the hotel offer airport shuttle services?",
|
||||
answer: "Yes, we provide luxury airport shuttle services. Please contact our concierge team at least 24 hours in advance to arrange your transportation.",
|
||||
},
|
||||
{
|
||||
question: "Are pets allowed at The Grandeur Hotel?",
|
||||
answer: "The Grandeur Hotel is a pet-friendly establishment. We welcome well-behaved pets under 20 lbs for an additional fee. Please inform us upon booking.",
|
||||
},
|
||||
{
|
||||
question: "What dining options are available at the hotel?",
|
||||
answer: "Our hotel boasts a Michelin-starred restaurant, a sophisticated lounge bar, and 24-hour in-room dining services, offering a diverse culinary experience.",
|
||||
},
|
||||
{
|
||||
question: "Do you have facilities for business meetings or events?",
|
||||
answer: "Absolutely. We offer state-of-the-art conference rooms and elegant ballrooms, perfect for corporate events, weddings, and social gatherings. Our event planners are ready to assist you.",
|
||||
},
|
||||
]}
|
||||
imageSrc="https://images.pexels.com/photos/3768095/pexels-photo-3768095.jpeg?auto=compress&cs=tinysrgb&h=650&w=940"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Ready to Plan Your Escape?"
|
||||
text="Contact us today to arrange your unforgettable stay or inquire about our bespoke services. Our dedicated team is here to assist you."
|
||||
primaryButton={{
|
||||
text: "Make a Reservation",
|
||||
href: "#offers",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Contact Us Directly",
|
||||
href: "#",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<HomeSection />
|
||||
<AboutSection />
|
||||
<RoomsSection />
|
||||
<OffersSection />
|
||||
<TestimonialsSection />
|
||||
<FaqSection />
|
||||
<ContactSection />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
18
src/pages/HomePage/sections/About.tsx
Normal file
18
src/pages/HomePage/sections/About.tsx
Normal file
@@ -0,0 +1,18 @@
|
||||
// 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="A Legacy of Hospitality and Elegance"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
27
src/pages/HomePage/sections/Contact.tsx
Normal file
27
src/pages/HomePage/sections/Contact.tsx
Normal file
@@ -0,0 +1,27 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "contact" section.
|
||||
|
||||
import React from 'react';
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function ContactSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Ready to Plan Your Escape?"
|
||||
text="Contact us today to arrange your unforgettable stay or inquire about our bespoke services. Our dedicated team is here to assist you."
|
||||
primaryButton={{
|
||||
text: "Make a Reservation",
|
||||
href: "#offers",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Contact Us Directly",
|
||||
href: "#",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
43
src/pages/HomePage/sections/Faq.tsx
Normal file
43
src/pages/HomePage/sections/Faq.tsx
Normal file
@@ -0,0 +1,43 @@
|
||||
// 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 FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function FaqSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqSplitMedia
|
||||
tag="Your Questions, Answered"
|
||||
title="Frequently Asked Questions"
|
||||
description="Find quick answers to common inquiries about your stay, amenities, booking, and more at The Grandeur Hotel."
|
||||
items={[
|
||||
{
|
||||
question: "What are the check-in and check-out times?",
|
||||
answer: "Check-in is at 3:00 PM, and check-out is at 12:00 PM. We offer late check-out options based on availability, please inquire at the front desk.",
|
||||
},
|
||||
{
|
||||
question: "Does the hotel offer airport shuttle services?",
|
||||
answer: "Yes, we provide luxury airport shuttle services. Please contact our concierge team at least 24 hours in advance to arrange your transportation.",
|
||||
},
|
||||
{
|
||||
question: "Are pets allowed at The Grandeur Hotel?",
|
||||
answer: "The Grandeur Hotel is a pet-friendly establishment. We welcome well-behaved pets under 20 lbs for an additional fee. Please inform us upon booking.",
|
||||
},
|
||||
{
|
||||
question: "What dining options are available at the hotel?",
|
||||
answer: "Our hotel boasts a Michelin-starred restaurant, a sophisticated lounge bar, and 24-hour in-room dining services, offering a diverse culinary experience.",
|
||||
},
|
||||
{
|
||||
question: "Do you have facilities for business meetings or events?",
|
||||
answer: "Absolutely. We offer state-of-the-art conference rooms and elegant ballrooms, perfect for corporate events, weddings, and social gatherings. Our event planners are ready to assist you.",
|
||||
},
|
||||
]}
|
||||
imageSrc="https://images.pexels.com/photos/3768095/pexels-photo-3768095.jpeg?auto=compress&cs=tinysrgb&h=650&w=940"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
28
src/pages/HomePage/sections/Home.tsx
Normal file
28
src/pages/HomePage/sections/Home.tsx
Normal file
@@ -0,0 +1,28 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "home" section.
|
||||
|
||||
import React from 'react';
|
||||
import HeroBillboard from '@/components/sections/hero/HeroBillboard';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function HomeSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="home" data-section="home">
|
||||
<SectionErrorBoundary name="home">
|
||||
<HeroBillboard
|
||||
title="Experience Unrivaled Luxury at The Grandeur Hotel"
|
||||
description="Nestled in the heart of the city, The Grandeur Hotel offers an exquisite escape where timeless elegance meets modern comfort. Discover a sanctuary designed for ultimate relaxation and refined indulgence."
|
||||
primaryButton={{
|
||||
text: "Book Your Stay",
|
||||
href: "#offers",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Explore Rooms",
|
||||
href: "#rooms",
|
||||
}}
|
||||
imageSrc="https://images.pexels.com/photos/6466290/pexels-photo-6466290.jpeg?auto=compress&cs=tinysrgb&h=650&w=940"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
67
src/pages/HomePage/sections/Offers.tsx
Normal file
67
src/pages/HomePage/sections/Offers.tsx
Normal file
@@ -0,0 +1,67 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "offers" section.
|
||||
|
||||
import React from 'react';
|
||||
import PricingLayeredCards from '@/components/sections/pricing/PricingLayeredCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function OffersSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="offers" data-section="offers">
|
||||
<SectionErrorBoundary name="offers">
|
||||
<PricingLayeredCards
|
||||
tag="Exclusive Offers"
|
||||
title="Tailored Stays for Every Desire"
|
||||
description="Discover our range of meticulously crafted packages, offering exceptional value and unforgettable experiences for every type of traveler. From romantic getaways to family vacations, your perfect stay awaits."
|
||||
plans={[
|
||||
{
|
||||
tag: "Standard Stay",
|
||||
price: "$300/night",
|
||||
description: "Enjoy a comfortable stay with essential amenities.",
|
||||
primaryButton: {
|
||||
text: "Book Standard",
|
||||
href: "#",
|
||||
},
|
||||
features: [
|
||||
"Luxury Room",
|
||||
"Complimentary Wi-Fi",
|
||||
"Access to Fitness Center",
|
||||
"Concierge Service",
|
||||
],
|
||||
},
|
||||
{
|
||||
tag: "Weekend Escape",
|
||||
price: "$550/weekend",
|
||||
description: "Perfect for a romantic getaway or a relaxing short break.",
|
||||
primaryButton: {
|
||||
text: "Book Weekend",
|
||||
href: "#",
|
||||
},
|
||||
features: [
|
||||
"Executive Suite",
|
||||
"Breakfast for Two",
|
||||
"Spa Credit ($50)",
|
||||
"Late Check-out",
|
||||
],
|
||||
},
|
||||
{
|
||||
tag: "Luxury Indulgence",
|
||||
price: "$999/night",
|
||||
description: "Experience the pinnacle of luxury with our premium package.",
|
||||
primaryButton: {
|
||||
text: "Book Indulgence",
|
||||
href: "#",
|
||||
},
|
||||
features: [
|
||||
"Presidential Suite",
|
||||
"Gourmet Dinner",
|
||||
"Private Car Service",
|
||||
"Personal Butler",
|
||||
],
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
64
src/pages/HomePage/sections/Rooms.tsx
Normal file
64
src/pages/HomePage/sections/Rooms.tsx
Normal file
@@ -0,0 +1,64 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "rooms" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesRevealCardsBento from '@/components/sections/features/FeaturesRevealCardsBento';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function RoomsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="rooms" data-section="rooms">
|
||||
<SectionErrorBoundary name="rooms">
|
||||
<FeaturesRevealCardsBento
|
||||
tag="Our Accommodations"
|
||||
title="Indulge in Exquisite Comfort"
|
||||
description="Each room and suite at The Grandeur Hotel is a haven of luxury, meticulously designed with opulent furnishings and state-of-the-art amenities to provide an unparalleled experience."
|
||||
items={[
|
||||
{
|
||||
title: "Deluxe Room",
|
||||
description: "Sophisticated design with a plush king-sized bed, high-speed Wi-Fi, and stunning city views.",
|
||||
href: "#",
|
||||
imageSrc: "https://images.pexels.com/photos/3940733/pexels-photo-3940733.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
{
|
||||
title: "Executive Suite",
|
||||
description: "Expansive living area, a private work desk, and exclusive access to the Executive Lounge amenities.",
|
||||
href: "#",
|
||||
imageSrc: "https://images.pexels.com/photos/6899355/pexels-photo-6899355.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
{
|
||||
title: "Presidential Suite",
|
||||
description: "The epitome of luxury with a grand foyer, multiple bedrooms, and a dedicated butler service for an elite experience.",
|
||||
href: "#",
|
||||
imageSrc: "https://images.pexels.com/photos/27829894/pexels-photo-27829894.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
{
|
||||
title: "Ocean View Room",
|
||||
description: "Wake up to breathtaking panoramic ocean views, complemented by elegant decor and a private balcony.",
|
||||
href: "#",
|
||||
imageSrc: "https://images.pexels.com/photos/31146633/pexels-photo-31146633.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
{
|
||||
title: "Family Suite",
|
||||
description: "Designed for comfort and space, featuring separate sleeping areas and child-friendly amenities to ensure a delightful family stay.",
|
||||
href: "#",
|
||||
imageSrc: "https://images.pexels.com/photos/6466484/pexels-photo-6466484.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
{
|
||||
title: "Accessible Room",
|
||||
description: "Thoughtfully designed for accessibility with widened doorways, roll-in showers, and assistive devices for a comfortable and secure stay.",
|
||||
href: "#",
|
||||
imageSrc: "https://images.pexels.com/photos/1457847/pexels-photo-1457847.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
{
|
||||
title: "Penthouse Suite",
|
||||
description: "Our most exclusive offering, featuring a private terrace, a gourmet kitchen, and personalized services for an unforgettable stay above the city.",
|
||||
href: "#",
|
||||
imageSrc: "https://images.pexels.com/photos/9696597/pexels-photo-9696597.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
52
src/pages/HomePage/sections/Testimonials.tsx
Normal file
52
src/pages/HomePage/sections/Testimonials.tsx
Normal file
@@ -0,0 +1,52 @@
|
||||
// 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 TestimonialColumnMarqueeCards from '@/components/sections/testimonial/TestimonialColumnMarqueeCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function TestimonialsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<SectionErrorBoundary name="testimonials">
|
||||
<TestimonialColumnMarqueeCards
|
||||
tag="Guest Experiences"
|
||||
title="What Our Esteemed Guests Say"
|
||||
description="Hear firsthand accounts from travelers who have experienced the exceptional service and luxurious comfort that define The Grandeur Hotel."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Isabella Rossi",
|
||||
role: "Fashion Designer",
|
||||
quote: "The Grandeur Hotel exceeded all expectations. The attention to detail, from the exquisite decor to the impeccable service, made my stay truly unforgettable. A perfect blend of classic elegance and modern luxury.",
|
||||
imageSrc: "https://images.pexels.com/photos/3770095/pexels-photo-3770095.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
{
|
||||
name: "Marcus Thorne",
|
||||
role: "Tech Entrepreneur",
|
||||
quote: "Simply outstanding. The Executive Suite provided a serene environment for both work and relaxation. The staff anticipated every need, making me feel incredibly valued. This is my new go-to hotel.",
|
||||
imageSrc: "https://images.pexels.com/photos/33761224/pexels-photo-33761224.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
{
|
||||
name: "Sophia Chang",
|
||||
role: "Art Curator",
|
||||
quote: "Every moment at The Grandeur was a delight. The culinary experience was exceptional, and the hotel's ambiance is truly captivating. It felt like a retreat into a world of refined beauty.",
|
||||
imageSrc: "https://images.pexels.com/photos/9119637/pexels-photo-9119637.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
{
|
||||
name: "David Miller",
|
||||
role: "Philanthropist",
|
||||
quote: "I've traveled the world, and The Grandeur Hotel stands out. The personalized service and commitment to guest satisfaction are commendable. A truly luxurious experience from start to finish.",
|
||||
imageSrc: "https://images.pexels.com/photos/5378693/pexels-photo-5378693.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
{
|
||||
name: "Elena Petrova",
|
||||
role: "Concert Pianist",
|
||||
quote: "The tranquility and elegance of my room allowed for perfect rest before my performance. The staff's professionalism and warmth were deeply appreciated. A gem of a hotel.",
|
||||
imageSrc: "https://images.pexels.com/photos/6939124/pexels-photo-6939124.jpeg?auto=compress&cs=tinysrgb&h=650&w=940",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user