3 Commits

Author SHA1 Message Date
eeb4fd0a6e Merge version_2_1782371027038 into main
Merge version_2_1782371027038 into main
2026-06-25 07:07:23 +00:00
kudinDmitriyUp
9a2f5859e9 Bob AI: Added pricing section with room categories and services sect 2026-06-25 07:06:43 +00:00
16d04c2935 Merge version_1_1782370422262 into main
Merge version_1_1782370422262 into main
2026-06-25 06:54:58 +00:00
10 changed files with 303 additions and 168 deletions

View File

@@ -1,181 +1,39 @@
import AboutText from '@/components/sections/about/AboutText';
import ContactCta from '@/components/sections/contact/ContactCta';
import FaqSimple from '@/components/sections/faq/FaqSimple';
import FeaturesComparison from '@/components/sections/features/FeaturesComparison';
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
import HeroSplitMediaGrid from '@/components/sections/hero/HeroSplitMediaGrid';
import PricingHighlightedCards from '@/components/sections/pricing/PricingHighlightedCards';
import SocialProofMarquee from '@/components/sections/social-proof/SocialProofMarquee';
import TestimonialQuoteCards from '@/components/sections/testimonial/TestimonialQuoteCards';
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 FeaturesSection from './HomePage/sections/Features';
import GallerySection from './HomePage/sections/Gallery';
import PricingSection from './HomePage/sections/Pricing';
import TestimonialsSection from './HomePage/sections/Testimonials';
import SocialSection from './HomePage/sections/Social';
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">
<HeroSplitMediaGrid
tag="Experience True Luxury"
title="Your Home Away From Home"
description="Escape to our boutique hotel located in the heart of the city. Relax in comfort and style."
primaryButton={{
text: "Book Your Stay", href: "#contact"}}
secondaryButton={{
text: "Learn More", href: "#about"}}
items={[
{
imageSrc: "http://img.b2bpic.net/free-photo/long-corridor-showcase_1127-3442.jpg"},
{
imageSrc: "http://img.b2bpic.net/free-photo/black-cushion-with-pillows_1203-545.jpg"},
]}
/>
</SectionErrorBoundary>
</div>
<>
<HeroSection />
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutText
title="Welcome to a new standard of hospitality. We pride ourselves on creating unforgettable experiences for every guest who walks through our doors."
/>
</SectionErrorBoundary>
</div>
<AboutSection />
<div id="features" data-section="features">
<SectionErrorBoundary name="features">
<FeaturesComparison
tag="Amenities & Services"
title="What Makes Us Unique"
description="Compare your experience with us against standard hotel services."
negativeItems={[
"Limited guest support", "Standard continental breakfast", "No leisure facilities", "Generic concierge"]}
positiveItems={[
"24/7 dedicated guest concierge", "Gourmet daily breakfast buffet", "Full leisure spa and gym", "Curated local experiences"]}
/>
</SectionErrorBoundary>
</div>
<FeaturesSection />
<div id="gallery" data-section="gallery">
<SectionErrorBoundary name="gallery">
<FeaturesImageBento
tag="Gallery"
title="Explore Our Facilities"
description="See the elegance of our hotel spaces."
items={[
{
title: "Gourmet Dining", description: "Local and international flavors.", imageSrc: "http://img.b2bpic.net/free-photo/restaurant-hall-with-round-square-tables-some-chairs-plants_140725-8031.jpg"},
{
title: "Outdoor Pool", description: "Relax under the sun.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-beautiful-young-asian-woman-relax-smile-leisure-around-outdoor-swimming-pool-with-sea-ocean-travel-vacation_74190-14576.jpg"},
{
title: "Luxury Spa", description: "Rejuvenate your mind.", imageSrc: "http://img.b2bpic.net/free-photo/luxurious-spa-bathroom-with-nature-view_23-2152008204.jpg"},
{
title: "Fitness Center", description: "Stay active during your stay.", imageSrc: "http://img.b2bpic.net/free-photo/equipments-gym_93675-129485.jpg"},
{
title: "Meeting Spaces", description: "Perfect for events.", imageSrc: "http://img.b2bpic.net/free-photo/people-taking-part-business-event_23-2149346606.jpg"},
{
title: "Private Gardens", description: "Quiet sanctuary.", imageSrc: "http://img.b2bpic.net/free-photo/lights-park-with-green-trees-pond_1268-15675.jpg"},
{
title: "Hotel Lounge", description: "Enjoy evening cocktails.", imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-woman-holding-drink_23-2150124828.jpg"},
]}
/>
</SectionErrorBoundary>
</div>
<GallerySection />
<div id="pricing" data-section="pricing">
<SectionErrorBoundary name="pricing">
<PricingHighlightedCards
tag="Stay Options"
title="Choose Your Perfect Room"
description="Designed for ultimate relaxation."
plans={[
{
tag: "Essential", price: "$150", description: "Perfect for a quick city break.", features: [
"Queen bed", "City view", "Free Wi-Fi"],
primaryButton: {
text: "Reserve", href: "#contact"},
},
{
tag: "Premium", price: "$250", description: "A touch of extra luxury.", features: [
"King bed", "Breakfast included", "Spa access", "Mini-bar"],
highlight: "Best Choice", primaryButton: {
text: "Reserve", href: "#contact"},
},
{
tag: "Suite", price: "$450", description: "Our finest experience.", features: [
"Panoramic view", "Private lounge", "Butler service", "In-room dining"],
primaryButton: {
text: "Reserve", href: "#contact"},
},
]}
/>
</SectionErrorBoundary>
</div>
<PricingSection />
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialQuoteCards
tag="Guest Reviews"
title="What Our Guests Say"
description="We are honored to have shared moments with our amazing guests."
testimonials={[
{
name: "Sarah Jenkins", role: "Travel Blogger", quote: "The absolute highlight of my year. The service was impeccable.", imageSrc: "http://img.b2bpic.net/free-photo/woman-trip-takes-photos-city-from-height-female-with-camera-women-photographer_1321-4658.jpg"},
{
name: "Marcus Thorne", role: "Business Executive", quote: "Perfect for both meetings and relaxing. Truly a professional hotel.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-smiling-businessman-with-luggage-checking-his-boarding-pass_107420-95776.jpg"},
{
name: "The Miller Family", role: "Guests", quote: "We loved every second of our stay. The breakfast was divine!", imageSrc: "http://img.b2bpic.net/free-photo/internationals-people-standing-cafe-with-shopping-bags_1157-31454.jpg"},
{
name: "Elaine Wong", role: "Yoga Instructor", quote: "A beautiful serene sanctuary in the middle of the busy city center.", imageSrc: "http://img.b2bpic.net/free-photo/happy-beautiful-young-woman-sitting-bed-holding-glass-juice-mobile-phone-looking-away_23-2148033310.jpg"},
{
name: "David Roth", role: "Architecture Fan", quote: "Incredible design and attention to detail everywhere you look.", imageSrc: "http://img.b2bpic.net/free-photo/woman-with-tea_1098-13992.jpg"},
]}
/>
</SectionErrorBoundary>
</div>
<TestimonialsSection />
<div id="social" data-section="social">
<SectionErrorBoundary name="social">
<SocialProofMarquee
tag="Trusted By"
title="Recognized Excellence"
description="Our commitment to quality is recognized industry-wide."
names={[
"Travel Today", "City Living", "Luxury Traveler", "Global Escapes", "Hotel Excellence Award", "Tourism Monthly", "Design Hotels World"]}
/>
</SectionErrorBoundary>
</div>
<SocialSection />
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqSimple
tag="Helpful Info"
title="Frequently Asked Questions"
description="Find answers to common questions about our services."
items={[
{
question: "What is the check-in time?", answer: "Check-in starts at 3:00 PM local time."},
{
question: "Do you have parking?", answer: "Yes, we provide secure underground parking for all our guests."},
{
question: "Are pets allowed?", answer: "We are a pet-friendly hotel for small breeds."},
{
question: "Can I request late checkout?", answer: "Yes, subject to room availability."},
]}
/>
</SectionErrorBoundary>
</div>
<FaqSection />
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="Contact Us"
text="Ready for an unforgettable escape? Book your room today."
primaryButton={{
text: "Book Your Stay", href: "#"}}
secondaryButton={{
text: "Contact Front Desk", href: "#"}}
/>
</SectionErrorBoundary>
</div>
<ContactSection />
</>
);
}

View 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="Welcome to a new standard of hospitality. We pride ourselves on creating unforgettable experiences for every guest who walks through our doors."
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,23 @@
// 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="Contact Us"
text="Ready for an unforgettable escape? Book your room today."
primaryButton={{
text: "Book Your Stay", href: "#"}}
secondaryButton={{
text: "Contact Front Desk", href: "#"}}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,30 @@
// 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 FaqSimple from '@/components/sections/faq/FaqSimple';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function FaqSection(): React.JSX.Element {
return (
<div id="faq" data-section="faq">
<SectionErrorBoundary name="faq">
<FaqSimple
tag="Helpful Info"
title="Frequently Asked Questions"
description="Find answers to common questions about our services."
items={[
{
question: "What is the check-in time?", answer: "Check-in starts at 3:00 PM local time."},
{
question: "Do you have parking?", answer: "Yes, we provide secure underground parking for all our guests."},
{
question: "Are pets allowed?", answer: "We are a pet-friendly hotel for small breeds."},
{
question: "Can I request late checkout?", answer: "Yes, subject to room availability."},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,65 @@
/* eslint-disable */
// @ts-nocheck — generated by catalog-eject; runtime-correct but TS strict-mode false-positives on inlined catalog body
import { Check, X } from "lucide-react";
import Button from "@/components/ui/Button";
import TextAnimation from "@/components/ui/TextAnimation";
import ScrollReveal from "@/components/ui/ScrollReveal";
const services = [
{ title: "Daily Housekeeping", description: "Rooms kept clean and presentable." },
{ title: "24/7 Security", description: "Round-the-clock security for a peaceful stay." },
{ title: "Dining Options", description: "Nearby dining and room service." },
{ title: "Fresh Atmosphere", description: "No typical hotel smell, fresh bedsheets." },
{ title: "Helpful Staff", description: "Owner and staff ready to assist." },
{ title: "Central Location", description: "On main Trunk Road, easy to find." }
];
const FeaturesInline = () => {
return (
<section aria-label="Services 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>{"Services & Amenities"}</p>
</div>
<TextAnimation
text={"Everything You Need"}
variant="fade"
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={"Enjoy a peaceful and welcoming atmosphere with our helpful staff and essential amenities."}
variant="fade"
gradientText={false}
tag="p"
className="md:max-w-7/10 text-lg md:text-xl leading-snug text-center text-balance"
/>
</div>
<ScrollReveal variant="fade-blur" className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 w-content-width mx-auto gap-5">
{services.map((service) => (
<div key={service.title} className="flex flex-col gap-4 p-6 xl:p-7 2xl:p-8 card rounded">
<div className="flex items-center justify-center shrink-0 size-10 primary-button rounded">
<Check className="size-5 text-primary-cta-text" strokeWidth={2} />
</div>
<h3 className="text-xl font-semibold">{service.title}</h3>
<p className="text-base text-accent">{service.description}</p>
</div>
))}
</ScrollReveal>
</div>
</section>
);
};
export default function FeaturesSection() {
return (
<div data-webild-section="features" id="features">
<FeaturesInline />
</div>
);
}

View File

@@ -0,0 +1,36 @@
// 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="Gallery"
title="Explore Our Facilities"
description="See the elegance of our hotel spaces."
items={[
{
title: "Gourmet Dining", description: "Local and international flavors.", imageSrc: "http://img.b2bpic.net/free-photo/restaurant-hall-with-round-square-tables-some-chairs-plants_140725-8031.jpg"},
{
title: "Outdoor Pool", description: "Relax under the sun.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-beautiful-young-asian-woman-relax-smile-leisure-around-outdoor-swimming-pool-with-sea-ocean-travel-vacation_74190-14576.jpg"},
{
title: "Luxury Spa", description: "Rejuvenate your mind.", imageSrc: "http://img.b2bpic.net/free-photo/luxurious-spa-bathroom-with-nature-view_23-2152008204.jpg"},
{
title: "Fitness Center", description: "Stay active during your stay.", imageSrc: "http://img.b2bpic.net/free-photo/equipments-gym_93675-129485.jpg"},
{
title: "Meeting Spaces", description: "Perfect for events.", imageSrc: "http://img.b2bpic.net/free-photo/people-taking-part-business-event_23-2149346606.jpg"},
{
title: "Private Gardens", description: "Quiet sanctuary.", imageSrc: "http://img.b2bpic.net/free-photo/lights-park-with-green-trees-pond_1268-15675.jpg"},
{
title: "Hotel Lounge", description: "Enjoy evening cocktails.", imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-woman-holding-drink_23-2150124828.jpg"},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,30 @@
// 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 HeroSplitMediaGrid from '@/components/sections/hero/HeroSplitMediaGrid';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function HeroSection(): React.JSX.Element {
return (
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroSplitMediaGrid
tag="Experience True Luxury"
title="Your Home Away From Home"
description="Escape to our boutique hotel located in the heart of the city. Relax in comfort and style."
primaryButton={{
text: "Book Your Stay", href: "#contact"}}
secondaryButton={{
text: "Learn More", href: "#about"}}
items={[
{
imageSrc: "http://img.b2bpic.net/free-photo/long-corridor-showcase_1127-3442.jpg"},
{
imageSrc: "http://img.b2bpic.net/free-photo/black-cushion-with-pillows_1203-545.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 PricingHighlightedCards from '@/components/sections/pricing/PricingHighlightedCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function PricingSection(): React.JSX.Element {
return (
<div id="pricing" data-section="pricing">
<SectionErrorBoundary name="pricing">
<PricingHighlightedCards
tag="Rooms & Pricing"
title="Budget-Friendly Lodging"
description="Clean, comfortable rooms with a homely feel. Good value for the price point in Silchar."
plans={[{"price":"₹800","primaryButton":{"href":"#contact","text":"Book Now"},"features":["Clean and comfortable","Fresh bedsheets and blankets","No typical hotel smell"],"tag":"Standard Room","description":"Perfect for solo travelers or a quick stay."},{"price":"₹1200","primaryButton":{"text":"Book Now","href":"#contact"},"features":["Clean and comfortable","Fresh bedsheets and blankets","No typical hotel smell","Peaceful atmosphere"],"tag":"Deluxe Room","highlight":"Best Value","description":"Ideal for couples or longer stays."},{"description":"More space for families or groups.","tag":"Family Room","features":["Clean and comfortable","Fresh bedsheets and blankets","No typical hotel smell","Peaceful atmosphere","Extra space"],"price":"₹1800","primaryButton":{"text":"Book Now","href":"#contact"}}]}
/>
</SectionErrorBoundary>
</div>
);
}

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 "social" section.
import React from 'react';
import SocialProofMarquee from '@/components/sections/social-proof/SocialProofMarquee';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function SocialSection(): React.JSX.Element {
return (
<div id="social" data-section="social">
<SectionErrorBoundary name="social">
<SocialProofMarquee
tag="Trusted By"
title="Recognized Excellence"
description="Our commitment to quality is recognized industry-wide."
names={[
"Travel Today", "City Living", "Luxury Traveler", "Global Escapes", "Hotel Excellence Award", "Tourism Monthly", "Design Hotels World"]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,32 @@
// 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 TestimonialQuoteCards from '@/components/sections/testimonial/TestimonialQuoteCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function TestimonialsSection(): React.JSX.Element {
return (
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialQuoteCards
tag="Guest Reviews"
title="What Our Guests Say"
description="We are honored to have shared moments with our amazing guests."
testimonials={[
{
name: "Sarah Jenkins", role: "Travel Blogger", quote: "The absolute highlight of my year. The service was impeccable.", imageSrc: "http://img.b2bpic.net/free-photo/woman-trip-takes-photos-city-from-height-female-with-camera-women-photographer_1321-4658.jpg"},
{
name: "Marcus Thorne", role: "Business Executive", quote: "Perfect for both meetings and relaxing. Truly a professional hotel.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-smiling-businessman-with-luggage-checking-his-boarding-pass_107420-95776.jpg"},
{
name: "The Miller Family", role: "Guests", quote: "We loved every second of our stay. The breakfast was divine!", imageSrc: "http://img.b2bpic.net/free-photo/internationals-people-standing-cafe-with-shopping-bags_1157-31454.jpg"},
{
name: "Elaine Wong", role: "Yoga Instructor", quote: "A beautiful serene sanctuary in the middle of the busy city center.", imageSrc: "http://img.b2bpic.net/free-photo/happy-beautiful-young-woman-sitting-bed-holding-glass-juice-mobile-phone-looking-away_23-2148033310.jpg"},
{
name: "David Roth", role: "Architecture Fan", quote: "Incredible design and attention to detail everywhere you look.", imageSrc: "http://img.b2bpic.net/free-photo/woman-with-tea_1098-13992.jpg"},
]}
/>
</SectionErrorBoundary>
</div>
);
}