Compare commits
7 Commits
version_1_
...
version_4_
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ebd1186e4d | ||
| a89e02dc40 | |||
|
|
a7c5de9f60 | ||
|
|
d8b08eeae5 | ||
| 4b43e4ba11 | |||
|
|
02a06d94c7 | ||
|
|
b337af83c9 |
@@ -1,338 +1,33 @@
|
||||
import AboutText from '@/components/sections/about/AboutText';
|
||||
import ContactCta from '@/components/sections/contact/ContactCta';
|
||||
import FaqTabbedAccordion from '@/components/sections/faq/FaqTabbedAccordion';
|
||||
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
|
||||
import FeaturesResultsComparison from '@/components/sections/features/FeaturesResultsComparison';
|
||||
import HeroBillboardCreator from '@/components/sections/hero/HeroBillboardCreator';
|
||||
import PricingHighlightedCards from '@/components/sections/pricing/PricingHighlightedCards';
|
||||
import SocialProofMarquee from '@/components/sections/social-proof/SocialProofMarquee';
|
||||
import TestimonialOverlayCards from '@/components/sections/testimonial/TestimonialOverlayCards';
|
||||
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 HeroSection from './HomePage/sections/Hero';
|
||||
import AboutSection from './HomePage/sections/About';
|
||||
import RoomsSection from './HomePage/sections/Rooms';
|
||||
import AmenitiesSection from './HomePage/sections/Amenities';
|
||||
import RatesSection from './HomePage/sections/Rates';
|
||||
import ReviewsSection from './HomePage/sections/Reviews';
|
||||
import PartnersSection from './HomePage/sections/Partners';
|
||||
import FaqSection from './HomePage/sections/Faq';
|
||||
import ContactSection from './HomePage/sections/Contact';
|
||||
|
||||
|
||||
{/* webild-stub @2026-06-02T15:47:34.838Z: make the hero section with a big image */}
|
||||
|
||||
export default function HomePage(): React.JSX.Element {
|
||||
return (
|
||||
<>
|
||||
<div id="hero" data-section="hero">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<HeroBillboardCreator
|
||||
tag="Your Ultimate Escape"
|
||||
title="Experience Unrivaled Luxury at The Grand Hotel"
|
||||
titleHighlight="Unrivaled Luxury"
|
||||
description="Discover a world of refined elegance, impeccable service, and breathtaking amenities designed for an unforgettable stay. Your perfect getaway begins here."
|
||||
primaryButton={{
|
||||
text: "Book Your Stay",
|
||||
href: "#contact",
|
||||
}}
|
||||
note="Voted #1 Luxury Hotel 5 Years in a Row by Global Travel Magazine"
|
||||
videos={[
|
||||
{
|
||||
videoSrc: "asset://hero-video-1",
|
||||
name: "Luxury Stays",
|
||||
followers: "5000+ Guest Reviews",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/closeup-photo-huge-bouquet-made-hydrangeas-standing-table-large-luxurious-room_627829-8201.jpg",
|
||||
},
|
||||
{
|
||||
videoSrc: "asset://hero-video-2",
|
||||
name: "Gourmet Dining",
|
||||
followers: "Michelin Star Rated",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/luxurious-modern-bedroom-with-comfortable-bedding-elegant-decor-generated-by-ai_188544-29870.jpg",
|
||||
},
|
||||
{
|
||||
videoSrc: "asset://hero-video-3",
|
||||
name: "Spa & Wellness",
|
||||
followers: "Award-Winning Services",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/towels-interior-spa-complex_169016-22506.jpg",
|
||||
},
|
||||
]}
|
||||
badgeText="5-Star Excellence"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
|
||||
<div id="about" data-section="about">
|
||||
<SectionErrorBoundary name="about">
|
||||
<AboutText
|
||||
title="About The Grand Hotel"
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
|
||||
<div id="rooms" data-section="rooms">
|
||||
<SectionErrorBoundary name="rooms">
|
||||
<FeaturesImageBento
|
||||
tag="Our Accommodations"
|
||||
title="Rooms & Suites Gallery"
|
||||
description="Explore our lavish rooms and opulent suites, each meticulously designed for comfort and elegance. From breathtaking city views to serene garden vistas, find your perfect sanctuary."
|
||||
items={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/pillow-bed_1203-9643.jpg",
|
||||
href: "#",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/3d-rendering-beautiful-luxury-dark-wood-european-classic-bedroom-suite-hotel_105762-2164.jpg",
|
||||
href: "#",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/steel-faucet-bathtub-bathroom-interior-with-window_169016-26296.jpg",
|
||||
href: "#",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/men-looking-out-window-cafe_23-2147775903.jpg",
|
||||
href: "#",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/spa-complements_23-2147645728.jpg",
|
||||
href: "#",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/side-view-women-gym_23-2148503087.jpg",
|
||||
href: "#",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/wide-view-dining-hall-classic-design_114579-2224.jpg",
|
||||
href: "#",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
|
||||
<div id="amenities" data-section="amenities">
|
||||
<SectionErrorBoundary name="amenities">
|
||||
<FeaturesResultsComparison
|
||||
tag="Transform Your Stay"
|
||||
title="Experience Pure Rejuvenation"
|
||||
description="From arrival to departure, our bespoke services are meticulously designed to elevate your well-being and leave you completely refreshed, creating lasting memories of tranquility."
|
||||
items={[
|
||||
{
|
||||
treatment: "Stress-Free Spa",
|
||||
detail: "Discover serenity with a personalized session at our world-class spa.",
|
||||
beforeSrc: "",
|
||||
afterSrc: "",
|
||||
},
|
||||
{
|
||||
treatment: "Gourmet Dining",
|
||||
detail: "Indulge your palate with an exquisite culinary journey at our acclaimed restaurants.",
|
||||
beforeSrc: "",
|
||||
afterSrc: "",
|
||||
},
|
||||
{
|
||||
treatment: "Serene Sleep",
|
||||
detail: "Experience ultimate comfort and deep relaxation in our plush, tranquil beds.",
|
||||
beforeSrc: "",
|
||||
afterSrc: "",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
|
||||
<div id="rates" data-section="rates">
|
||||
<SectionErrorBoundary name="rates">
|
||||
<PricingHighlightedCards
|
||||
tag="Our Exclusive Offers"
|
||||
title="Find Your Perfect Stay"
|
||||
description="Choose from our selection of meticulously crafted room and suite packages, each offering a unique blend of luxury and comfort tailored to your desires."
|
||||
plans={[
|
||||
{
|
||||
tag: "Standard",
|
||||
price: "$350/night",
|
||||
description: "Comfort and elegance for a serene escape.",
|
||||
features: [
|
||||
"Luxury King Bed",
|
||||
"City View",
|
||||
"Complimentary Breakfast",
|
||||
"Access to Fitness Center",
|
||||
],
|
||||
primaryButton: {
|
||||
text: "Book Standard",
|
||||
href: "#contact",
|
||||
},
|
||||
},
|
||||
{
|
||||
tag: "Deluxe",
|
||||
price: "$550/night",
|
||||
description: "Elevated comfort with premium amenities.",
|
||||
features: [
|
||||
"Spacious Room",
|
||||
"Panoramic Views",
|
||||
"Spa Credit Included",
|
||||
"Late Check-out",
|
||||
],
|
||||
highlight: "Popular Choice",
|
||||
primaryButton: {
|
||||
text: "Book Deluxe",
|
||||
href: "#contact",
|
||||
},
|
||||
},
|
||||
{
|
||||
tag: "Grand Suite",
|
||||
price: "$900/night",
|
||||
description: "Unparalleled luxury and personalized service.",
|
||||
features: [
|
||||
"Exclusive Lounge Access",
|
||||
"Personal Concierge",
|
||||
"Private Dining Experience",
|
||||
"Airport Transfer",
|
||||
],
|
||||
primaryButton: {
|
||||
text: "Book Grand Suite",
|
||||
href: "#contact",
|
||||
},
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
|
||||
<div id="reviews" data-section="reviews">
|
||||
<SectionErrorBoundary name="reviews">
|
||||
<TestimonialOverlayCards
|
||||
tag="What Our Guests Say"
|
||||
title="Hear From Our Satisfied Visitors"
|
||||
description="Read the glowing reviews and heartfelt experiences shared by those who have discovered the magic of The Grand Hotel. Your exceptional stay awaits."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Isabella Chen",
|
||||
role: "Frequent Traveler",
|
||||
company: "Luxury Lifestyle Magazine",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/woman-night-dress-sitting-edge-pool-holding-champagne-house-daytime_176474-4936.jpg",
|
||||
},
|
||||
{
|
||||
name: "Marcus Thorne",
|
||||
role: "Business Executive",
|
||||
company: "Global Innovations Inc.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/couple-sitting-by-tree-spring-forest_1157-32865.jpg",
|
||||
},
|
||||
{
|
||||
name: "Sophia Rodriguez",
|
||||
role: "Wedding Planner",
|
||||
company: "Elite Events Co.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/people-having-dinner-luxurious-restaurants_23-2151081913.jpg",
|
||||
},
|
||||
{
|
||||
name: "David Lee",
|
||||
role: "Explorer",
|
||||
company: "Solo Adventures Blog",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/sisters-fighting-with-pillows_1303-11231.jpg",
|
||||
},
|
||||
{
|
||||
name: "Eleanor Vance",
|
||||
role: "Travel Influencer",
|
||||
company: "Wanderlust Diaries",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/smiling-woman-with-olives-beer_23-2147680964.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
|
||||
<div id="partners" data-section="partners">
|
||||
<SectionErrorBoundary name="partners">
|
||||
<SocialProofMarquee
|
||||
tag="Trusted By The Best"
|
||||
title="Awards & Esteemed Partners"
|
||||
description="Proudly recognized by leading travel organizations and trusted by prestigious partners worldwide, ensuring an unparalleled experience."
|
||||
names={[
|
||||
"Condé Nast Traveler",
|
||||
"Forbes Travel Guide",
|
||||
"Michelin Guide",
|
||||
"Leading Hotels of the World",
|
||||
"Virtuoso",
|
||||
"American Express Fine Hotels + Resorts",
|
||||
"Relais & Châteaux",
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
|
||||
<div id="faq" data-section="faq">
|
||||
<SectionErrorBoundary name="faq">
|
||||
<FaqTabbedAccordion
|
||||
tag="Need Assistance?"
|
||||
title="Frequently Asked Questions"
|
||||
description="Find quick answers to common queries about your stay, dining, and hotel services. Our comprehensive FAQ is designed to assist you effortlessly."
|
||||
categories={[
|
||||
{
|
||||
name: "Booking & Reservations",
|
||||
items: [
|
||||
{
|
||||
question: "How do I make a reservation?",
|
||||
answer: "Reservations can be made directly on our website, via phone, or through our preferred travel partners. Visit our 'Book Now' section for more details.",
|
||||
},
|
||||
{
|
||||
question: "What is your cancellation policy?",
|
||||
answer: "Our standard cancellation policy allows free cancellation up to 48 hours prior to your arrival date. Specific packages may have different policies, so please check your booking details.",
|
||||
},
|
||||
{
|
||||
question: "Do you offer group rates?",
|
||||
answer: "Yes, we offer special rates for group bookings. Please contact our events team directly to discuss your requirements and receive a personalized quote.",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "Hotel Services",
|
||||
items: [
|
||||
{
|
||||
question: "What amenities are included in my stay?",
|
||||
answer: "All guests enjoy complimentary Wi-Fi, access to our fitness center, and a welcome drink upon arrival. Depending on your room type, additional amenities like spa credit or lounge access may be included.",
|
||||
},
|
||||
{
|
||||
question: "Is parking available?",
|
||||
answer: "Valet parking is available for all guests at a daily rate. Self-parking options are also available nearby. Please inquire with our concierge for details.",
|
||||
},
|
||||
{
|
||||
question: "Do you have a concierge service?",
|
||||
answer: "Our dedicated concierge team is available 24/7 to assist with dining reservations, tour bookings, transportation, and any other requests to enhance your stay.",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "Dining",
|
||||
items: [
|
||||
{
|
||||
question: "What dining options are available?",
|
||||
answer: "The Grand Hotel boasts several dining venues, including our Michelin-starred restaurant, an elegant cafe, and a sophisticated bar. Room service is also available 24 hours a day.",
|
||||
},
|
||||
{
|
||||
question: "Do you cater to dietary restrictions?",
|
||||
answer: "Our culinary team is happy to accommodate most dietary restrictions and allergies. Please inform us of your needs when making a reservation or upon arrival.",
|
||||
},
|
||||
],
|
||||
},
|
||||
]}
|
||||
cta={{
|
||||
name: "Our Concierge",
|
||||
role: "Always Here to Help",
|
||||
buttonText: "Contact Support",
|
||||
buttonHref: "#contact",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-businessman-using-tablet_23-2148242702.jpg",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<SectionErrorBoundary name="contact">
|
||||
<ContactCta
|
||||
tag="Ready to Experience Luxury?"
|
||||
text="Book Your Unforgettable Stay at The Grand Hotel Today and Indulge in World-Class Hospitality."
|
||||
primaryButton={{
|
||||
text: "Book Now",
|
||||
href: "#",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Contact Us",
|
||||
href: "#",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
<HeroSection />
|
||||
<AboutSection />
|
||||
<RoomsSection />
|
||||
<AmenitiesSection />
|
||||
<RatesSection />
|
||||
<ReviewsSection />
|
||||
<PartnersSection />
|
||||
<FaqSection />
|
||||
<ContactSection />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
54
src/pages/HomePage/sections/About.tsx
Normal file
54
src/pages/HomePage/sections/About.tsx
Normal file
@@ -0,0 +1,54 @@
|
||||
// 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 SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
import Tag from "@/components/ui/Tag";
|
||||
import ImageOrVideo from "@/components/ui/ImageOrVideo";
|
||||
import ScrollReveal from "@/components/ui/ScrollReveal";
|
||||
import { CheckCircle2 } from "lucide-react";
|
||||
|
||||
export default function AboutSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="about" data-section="about" className="py-24 bg-background">
|
||||
<SectionErrorBoundary name="about">
|
||||
<div className="container mx-auto px-4">
|
||||
<div className="grid grid-cols-1 lg:grid-cols-2 gap-12 items-center">
|
||||
<ScrollReveal variant="slide-up">
|
||||
<div className="space-y-6">
|
||||
<Tag text="About Us" />
|
||||
<h2 className="text-4xl md:text-5xl font-bold text-foreground">
|
||||
A Legacy of Excellence
|
||||
</h2>
|
||||
<p className="text-lg text-muted-foreground">
|
||||
Experience the perfect blend of classic elegance and modern luxury. Since our founding, we have been dedicated to providing unparalleled service and unforgettable experiences for our guests.
|
||||
</p>
|
||||
<ul className="space-y-4 mt-8">
|
||||
{[
|
||||
"Award-winning dining experiences",
|
||||
"World-class spa and wellness center",
|
||||
"Prime location in the heart of the city",
|
||||
"Exceptional personalized concierge service"
|
||||
].map((item, index) => (
|
||||
<li key={index} className="flex items-center space-x-3 text-foreground">
|
||||
<CheckCircle2 className="w-6 h-6 text-primary" />
|
||||
<span>{item}</span>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
</ScrollReveal>
|
||||
<ScrollReveal variant="fade-blur">
|
||||
<div className="relative h-[500px] rounded-2xl overflow-hidden">
|
||||
<ImageOrVideo
|
||||
imageSrc="https://images.unsplash.com/photo-1566073771259-6a8506099945?auto=format&fit=crop&q=80"
|
||||
className="w-full h-full object-cover"
|
||||
/>
|
||||
</div>
|
||||
</ScrollReveal>
|
||||
</div>
|
||||
</div>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
40
src/pages/HomePage/sections/Amenities.tsx
Normal file
40
src/pages/HomePage/sections/Amenities.tsx
Normal file
@@ -0,0 +1,40 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "amenities" section.
|
||||
|
||||
import React from 'react';
|
||||
import FeaturesResultsComparison from '@/components/sections/features/FeaturesResultsComparison';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function AmenitiesSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="amenities" data-section="amenities">
|
||||
<SectionErrorBoundary name="amenities">
|
||||
<FeaturesResultsComparison
|
||||
tag="Transform Your Stay"
|
||||
title="Experience Pure Rejuvenation"
|
||||
description="From arrival to departure, our bespoke services are meticulously designed to elevate your well-being and leave you completely refreshed, creating lasting memories of tranquility."
|
||||
items={[
|
||||
{
|
||||
treatment: "Stress-Free Spa",
|
||||
detail: "Discover serenity with a personalized session at our world-class spa.",
|
||||
beforeSrc: "",
|
||||
afterSrc: "",
|
||||
},
|
||||
{
|
||||
treatment: "Gourmet Dining",
|
||||
detail: "Indulge your palate with an exquisite culinary journey at our acclaimed restaurants.",
|
||||
beforeSrc: "",
|
||||
afterSrc: "",
|
||||
},
|
||||
{
|
||||
treatment: "Serene Sleep",
|
||||
detail: "Experience ultimate comfort and deep relaxation in our plush, tranquil beds.",
|
||||
beforeSrc: "",
|
||||
afterSrc: "",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</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 Experience Luxury?"
|
||||
text="Book Your Unforgettable Stay at The Grand Hotel Today and Indulge in World-Class Hospitality."
|
||||
primaryButton={{
|
||||
text: "Book Now",
|
||||
href: "#",
|
||||
}}
|
||||
secondaryButton={{
|
||||
text: "Contact Us",
|
||||
href: "#",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
76
src/pages/HomePage/sections/Faq.tsx
Normal file
76
src/pages/HomePage/sections/Faq.tsx
Normal file
@@ -0,0 +1,76 @@
|
||||
// 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="Need Assistance?"
|
||||
title="Frequently Asked Questions"
|
||||
description="Find quick answers to common queries about your stay, dining, and hotel services. Our comprehensive FAQ is designed to assist you effortlessly."
|
||||
categories={[
|
||||
{
|
||||
name: "Booking & Reservations",
|
||||
items: [
|
||||
{
|
||||
question: "How do I make a reservation?",
|
||||
answer: "Reservations can be made directly on our website, via phone, or through our preferred travel partners. Visit our 'Book Now' section for more details.",
|
||||
},
|
||||
{
|
||||
question: "What is your cancellation policy?",
|
||||
answer: "Our standard cancellation policy allows free cancellation up to 48 hours prior to your arrival date. Specific packages may have different policies, so please check your booking details.",
|
||||
},
|
||||
{
|
||||
question: "Do you offer group rates?",
|
||||
answer: "Yes, we offer special rates for group bookings. Please contact our events team directly to discuss your requirements and receive a personalized quote.",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "Hotel Services",
|
||||
items: [
|
||||
{
|
||||
question: "What amenities are included in my stay?",
|
||||
answer: "All guests enjoy complimentary Wi-Fi, access to our fitness center, and a welcome drink upon arrival. Depending on your room type, additional amenities like spa credit or lounge access may be included.",
|
||||
},
|
||||
{
|
||||
question: "Is parking available?",
|
||||
answer: "Valet parking is available for all guests at a daily rate. Self-parking options are also available nearby. Please inquire with our concierge for details.",
|
||||
},
|
||||
{
|
||||
question: "Do you have a concierge service?",
|
||||
answer: "Our dedicated concierge team is available 24/7 to assist with dining reservations, tour bookings, transportation, and any other requests to enhance your stay.",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "Dining",
|
||||
items: [
|
||||
{
|
||||
question: "What dining options are available?",
|
||||
answer: "The Grand Hotel boasts several dining venues, including our Michelin-starred restaurant, an elegant cafe, and a sophisticated bar. Room service is also available 24 hours a day.",
|
||||
},
|
||||
{
|
||||
question: "Do you cater to dietary restrictions?",
|
||||
answer: "Our culinary team is happy to accommodate most dietary restrictions and allergies. Please inform us of your needs when making a reservation or upon arrival.",
|
||||
},
|
||||
],
|
||||
},
|
||||
]}
|
||||
cta={{
|
||||
name: "Our Concierge",
|
||||
role: "Always Here to Help",
|
||||
buttonText: "Contact Support",
|
||||
buttonHref: "#contact",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-businessman-using-tablet_23-2148242702.jpg",
|
||||
}}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
42
src/pages/HomePage/sections/Hero.tsx
Normal file
42
src/pages/HomePage/sections/Hero.tsx
Normal file
@@ -0,0 +1,42 @@
|
||||
// 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 Button from '@/components/ui/Button';
|
||||
import Tag from '@/components/ui/Tag';
|
||||
import ImageOrVideo from '@/components/ui/ImageOrVideo';
|
||||
import ScrollReveal from '@/components/ui/ScrollReveal';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function HeroSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="hero" data-webild-section="hero" className="relative min-h-[80vh] flex items-center justify-center overflow-hidden">
|
||||
<SectionErrorBoundary name="hero">
|
||||
<div className="absolute inset-0 z-0">
|
||||
<ImageOrVideo
|
||||
imageSrc="https://images.unsplash.com/photo-1542314831-c6a4d14d8c85?auto=format&fit=crop&q=80"
|
||||
className="w-full h-full object-cover"
|
||||
/>
|
||||
<div className="absolute inset-0 bg-black/60" />
|
||||
</div>
|
||||
|
||||
<div className="relative z-10 container mx-auto px-4 text-center">
|
||||
<ScrollReveal variant="slide-up">
|
||||
<Tag text="Your Ultimate Escape" className="mb-6 mx-auto bg-black/50 text-white border-white/20" />
|
||||
<h1 className="text-5xl md:text-7xl font-bold text-white mb-6 tracking-tight">
|
||||
Experience Unrivaled Luxury<br />
|
||||
<span className="text-primary-cta">at The Grand Hotel</span>
|
||||
</h1>
|
||||
<p className="text-lg md:text-xl text-white/90 max-w-content-width mx-auto">
|
||||
Discover a world of refined elegance, impeccable service, and breathtaking amenities designed for an unforgettable stay. Your perfect getaway begins here.
|
||||
</p>
|
||||
<div className="flex flex-col sm:flex-row items-center justify-center gap-4">
|
||||
<Button text="Book Your Stay" variant="primary" href="#contact" className="px-8 py-4 text-lg" />
|
||||
<Button text="Explore Rooms" variant="secondary" href="#rooms" className="px-8 py-4 text-lg text-white border-white/20" />
|
||||
</div>
|
||||
</ScrollReveal>
|
||||
</div>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
29
src/pages/HomePage/sections/Partners.tsx
Normal file
29
src/pages/HomePage/sections/Partners.tsx
Normal file
@@ -0,0 +1,29 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "partners" section.
|
||||
|
||||
import React from 'react';
|
||||
import SocialProofMarquee from '@/components/sections/social-proof/SocialProofMarquee';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function PartnersSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="partners" data-section="partners">
|
||||
<SectionErrorBoundary name="partners">
|
||||
<SocialProofMarquee
|
||||
tag="Trusted By The Best"
|
||||
title="Awards & Esteemed Partners"
|
||||
description="Proudly recognized by leading travel organizations and trusted by prestigious partners worldwide, ensuring an unparalleled experience."
|
||||
names={[
|
||||
"Condé Nast Traveler",
|
||||
"Forbes Travel Guide",
|
||||
"Michelin Guide",
|
||||
"Leading Hotels of the World",
|
||||
"Virtuoso",
|
||||
"American Express Fine Hotels + Resorts",
|
||||
"Relais & Châteaux",
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
68
src/pages/HomePage/sections/Rates.tsx
Normal file
68
src/pages/HomePage/sections/Rates.tsx
Normal file
@@ -0,0 +1,68 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "rates" section.
|
||||
|
||||
import React from 'react';
|
||||
import PricingHighlightedCards from '@/components/sections/pricing/PricingHighlightedCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function RatesSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="rates" data-section="rates">
|
||||
<SectionErrorBoundary name="rates">
|
||||
<PricingHighlightedCards
|
||||
tag="Our Exclusive Offers"
|
||||
title="Find Your Perfect Stay"
|
||||
description="Choose from our selection of meticulously crafted room and suite packages, each offering a unique blend of luxury and comfort tailored to your desires."
|
||||
plans={[
|
||||
{
|
||||
tag: "Standard",
|
||||
price: "$350/night",
|
||||
description: "Comfort and elegance for a serene escape.",
|
||||
features: [
|
||||
"Luxury King Bed",
|
||||
"City View",
|
||||
"Complimentary Breakfast",
|
||||
"Access to Fitness Center",
|
||||
],
|
||||
primaryButton: {
|
||||
text: "Book Standard",
|
||||
href: "#contact",
|
||||
},
|
||||
},
|
||||
{
|
||||
tag: "Deluxe",
|
||||
price: "$550/night",
|
||||
description: "Elevated comfort with premium amenities.",
|
||||
features: [
|
||||
"Spacious Room",
|
||||
"Panoramic Views",
|
||||
"Spa Credit Included",
|
||||
"Late Check-out",
|
||||
],
|
||||
highlight: "Popular Choice",
|
||||
primaryButton: {
|
||||
text: "Book Deluxe",
|
||||
href: "#contact",
|
||||
},
|
||||
},
|
||||
{
|
||||
tag: "Grand Suite",
|
||||
price: "$900/night",
|
||||
description: "Unparalleled luxury and personalized service.",
|
||||
features: [
|
||||
"Exclusive Lounge Access",
|
||||
"Personal Concierge",
|
||||
"Private Dining Experience",
|
||||
"Airport Transfer",
|
||||
],
|
||||
primaryButton: {
|
||||
text: "Book Grand Suite",
|
||||
href: "#contact",
|
||||
},
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
57
src/pages/HomePage/sections/Reviews.tsx
Normal file
57
src/pages/HomePage/sections/Reviews.tsx
Normal file
@@ -0,0 +1,57 @@
|
||||
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
|
||||
// file as the canonical source for the "reviews" section.
|
||||
|
||||
import React from 'react';
|
||||
import TestimonialOverlayCards from '@/components/sections/testimonial/TestimonialOverlayCards';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function ReviewsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="reviews" data-section="reviews">
|
||||
<SectionErrorBoundary name="reviews">
|
||||
<TestimonialOverlayCards
|
||||
tag="What Our Guests Say"
|
||||
title="Hear From Our Satisfied Visitors"
|
||||
description="Read the glowing reviews and heartfelt experiences shared by those who have discovered the magic of The Grand Hotel. Your exceptional stay awaits."
|
||||
testimonials={[
|
||||
{
|
||||
name: "Isabella Chen",
|
||||
role: "Frequent Traveler",
|
||||
company: "Luxury Lifestyle Magazine",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/woman-night-dress-sitting-edge-pool-holding-champagne-house-daytime_176474-4936.jpg",
|
||||
},
|
||||
{
|
||||
name: "Marcus Thorne",
|
||||
role: "Business Executive",
|
||||
company: "Global Innovations Inc.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/couple-sitting-by-tree-spring-forest_1157-32865.jpg",
|
||||
},
|
||||
{
|
||||
name: "Sophia Rodriguez",
|
||||
role: "Wedding Planner",
|
||||
company: "Elite Events Co.",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/people-having-dinner-luxurious-restaurants_23-2151081913.jpg",
|
||||
},
|
||||
{
|
||||
name: "David Lee",
|
||||
role: "Explorer",
|
||||
company: "Solo Adventures Blog",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/sisters-fighting-with-pillows_1303-11231.jpg",
|
||||
},
|
||||
{
|
||||
name: "Eleanor Vance",
|
||||
role: "Travel Influencer",
|
||||
company: "Wanderlust Diaries",
|
||||
rating: 5,
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/smiling-woman-with-olives-beer_23-2147680964.jpg",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
50
src/pages/HomePage/sections/Rooms.tsx
Normal file
50
src/pages/HomePage/sections/Rooms.tsx
Normal file
@@ -0,0 +1,50 @@
|
||||
// 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 FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
|
||||
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
|
||||
|
||||
export default function RoomsSection(): React.JSX.Element {
|
||||
return (
|
||||
<div id="rooms" data-section="rooms">
|
||||
<SectionErrorBoundary name="rooms">
|
||||
<FeaturesImageBento
|
||||
tag="Our Accommodations"
|
||||
title="Rooms & Suites Gallery"
|
||||
description="Explore our lavish rooms and opulent suites, each meticulously designed for comfort and elegance. From breathtaking city views to serene garden vistas, find your perfect sanctuary."
|
||||
items={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/pillow-bed_1203-9643.jpg",
|
||||
href: "#",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/3d-rendering-beautiful-luxury-dark-wood-european-classic-bedroom-suite-hotel_105762-2164.jpg",
|
||||
href: "#",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/steel-faucet-bathtub-bathroom-interior-with-window_169016-26296.jpg",
|
||||
href: "#",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/men-looking-out-window-cafe_23-2147775903.jpg",
|
||||
href: "#",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/spa-complements_23-2147645728.jpg",
|
||||
href: "#",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/side-view-women-gym_23-2148503087.jpg",
|
||||
href: "#",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/wide-view-dining-hall-classic-design_114579-2224.jpg",
|
||||
href: "#",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</SectionErrorBoundary>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user