Compare commits

...

28 Commits

Author SHA1 Message Date
kudinDmitriyUp
6a1e1b8121 Bob AI: remove white border from hero section image box 2026-06-03 14:13:22 +00:00
b744e497c0 Merge version_15_1780495898454 into main
Merge version_15_1780495898454 into main
2026-06-03 14:12:40 +00:00
kudinDmitriyUp
1e6aab2988 Bob AI: Removed the black background from the hero section 2026-06-03 14:12:03 +00:00
587cbacf95 Merge version_14_1780495786088 into main
Merge version_14_1780495786088 into main
2026-06-03 14:11:26 +00:00
kudinDmitriyUp
444cf85ddc Bob AI: Fix hero heading gradient and bottom clipping 2026-06-03 14:10:37 +00:00
56e04d4460 Merge version_13_1780495654401 into main
Merge version_13_1780495654401 into main
2026-06-03 14:08:48 +00:00
kudinDmitriyUp
280e8dda68 Bob AI: Added text-balance to hero heading 2026-06-03 14:08:11 +00:00
d9f48bc7b4 Merge version_12_1780495544927 into main
Merge version_12_1780495544927 into main
2026-06-03 14:06:57 +00:00
kudinDmitriyUp
dcc140c72d Bob AI: Match hero heading size and gradient to accommodation sectio 2026-06-03 14:06:20 +00:00
b237841c42 Merge version_11_1780495392414 into main
Merge version_11_1780495392414 into main
2026-06-03 14:04:34 +00:00
kudinDmitriyUp
ce48920897 Bob AI: Match hero title size with accommodation title 2026-06-03 14:03:55 +00:00
101c7f6641 Merge version_10_1780495208394 into main
Merge version_10_1780495208394 into main
2026-06-03 14:02:00 +00:00
kudinDmitriyUp
7c37b18ffd Bob AI: Adjust hero section text box to match accommodation section 2026-06-03 14:01:22 +00:00
da7de495ba Merge version_9_1780495095951 into main
Merge version_9_1780495095951 into main
2026-06-03 13:59:34 +00:00
kudinDmitriyUp
ada39e3fe6 Bob AI: Adjust hero section textbox sizing to match accommodation se 2026-06-03 13:58:53 +00:00
7f0cc4b273 Merge version_8_1780494974164 into main
Merge version_8_1780494974164 into main
2026-06-03 13:57:49 +00:00
kudinDmitriyUp
20ff83b8d9 Bob AI: Remove the text 'Our Legacy of Hospitality' from the about s 2026-06-03 13:57:16 +00:00
026cd0a078 Merge version_7_1780494791132 into main
Merge version_7_1780494791132 into main
2026-06-03 13:55:26 +00:00
kudinDmitriyUp
61d5307458 Bob AI: Fix carousel skipping images by removing state setter from u 2026-06-03 13:54:36 +00:00
fede3905da Merge version_6_1780494606830 into main
Merge version_6_1780494606830 into main
2026-06-03 13:52:04 +00:00
kudinDmitriyUp
64c7aa89fb Bob AI: i want each images to have their own progress bar and they a 2026-06-03 13:51:28 +00:00
bc52183401 Merge version_5_1780494437120 into main
Merge version_5_1780494437120 into main
2026-06-03 13:49:07 +00:00
kudinDmitriyUp
1f33c04279 Bob AI (stub): change the hero section so each image in the carousel has it 2026-06-03 13:49:01 +00:00
5cb557e570 Merge version_4_1780494288262 into main
Merge version_4_1780494288262 into main
2026-06-03 13:46:48 +00:00
kudinDmitriyUp
588c8cddf7 Bob AI: Add image carousel with progress bar to hero section 2026-06-03 13:46:07 +00:00
311974c386 Merge version_3_1780494163704 into main
Merge version_3_1780494163704 into main
2026-06-03 13:44:05 +00:00
kudinDmitriyUp
e60814f2c1 Bob AI: Updated hero section layout with text above and image below 2026-06-03 13:43:24 +00:00
2ec5bb4c45 Merge version_2_1780494013667 into main
Merge version_2_1780494013667 into main
2026-06-03 13:42:25 +00:00
3 changed files with 83 additions and 34 deletions

View File

@@ -13,6 +13,9 @@ import SocialProofSection from './HomePage/sections/SocialProof';
import FaqSection from './HomePage/sections/Faq';
import ContactSection from './HomePage/sections/Contact';
{/* webild-stub @2026-06-03T13:49:00.110Z: change the hero section so each image in the carousel has its own progress bar, and all progress bars are visible at the same time */}
export default function HomePage(): React.JSX.Element {
return (
<>

View File

@@ -1,18 +1,11 @@
// 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 {
export default function AboutSection() {
return (
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutText
title="Our Legacy of Hospitality"
/>
</SectionErrorBoundary>
<section id="about" className="bg-background">
<div className="max-w-content-width mx-auto px-6 text-center">
{/* Text 'Our Legacy of Hospitality' removed as requested */}
</div>
</section>
);
}
}

View File

@@ -1,35 +1,88 @@
// 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 React, { useState, useEffect } from 'react';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
import Button from '@/components/ui/Button';
import Tag from '@/components/ui/Tag';
import ImageOrVideo from '@/components/ui/ImageOrVideo';
export default function HeroSection(): React.JSX.Element {
const images = [
"http://img.b2bpic.net/free-photo/modern-interior-design-interior_23-2151929575.jpg",
"http://img.b2bpic.net/free-photo/luxury-pool-villa-spectacular-contemporary-design-digital-art-real-estate-home-house-property-ge_1258-150749.jpg",
"http://img.b2bpic.net/free-photo/3d-rendering-beautiful-luxury-bedroom-suite-hotel-with-tv_105762-2301.jpg"
];
const [currentIndex, setCurrentIndex] = useState(0);
const [progress, setProgress] = useState(0);
useEffect(() => {
const intervalTime = 5000; // 5 seconds
const updateInterval = 50; // Update progress every 50ms
const step = (updateInterval / intervalTime) * 100;
const timer = setInterval(() => {
setProgress((prev) => {
if (prev >= 100) return 100;
return prev + step;
});
}, updateInterval);
return () => clearInterval(timer);
}, []);
useEffect(() => {
if (progress >= 100) {
setCurrentIndex((prevIndex) => (prevIndex + 1) % images.length);
setProgress(0);
}
}, [progress, images.length]);
return (
<div id="hero" data-webild-section="hero" className="relative w-full min-h-[80vh] flex items-center justify-center overflow-hidden">
<div id="hero" data-webild-section="hero" className="w-full pt-32 pb-16 px-4 md:px-8">
<SectionErrorBoundary name="hero">
<div className="absolute inset-0 z-0">
<ImageOrVideo
imageSrc="http://img.b2bpic.net/free-photo/modern-interior-design-interior_23-2151929575.jpg"
className="w-full h-full object-cover"
/>
<div className="absolute inset-0 bg-black/50" />
</div>
<div className="relative z-10 container mx-auto px-4 text-center flex flex-col items-center gap-6 py-24">
<Tag text="Welcome to Luxury" className="bg-background/20 text-white border-white/30 backdrop-blur-md" />
<h1 className="text-5xl md:text-7xl font-bold text-white max-w-4xl">
Experience Unparalleled Comfort & Elegance
</h1>
<p className="text-lg md:text-xl text-white/90 max-w-2xl">
Discover a world where impeccable service meets sophisticated design. Your unforgettable journey begins here.
</p>
<div className="flex flex-wrap items-center justify-center gap-4 mt-4">
<Button text="Book Your Stay" variant="primary" href="#contact" className="text-lg px-8 py-6" />
<Button text="Explore Rooms" variant="secondary" href="#accommodation" className="text-lg px-8 py-6 bg-white/10 text-white border-white/30 hover:bg-white/20" />
<div className="container mx-auto max-w-6xl flex flex-col items-center text-center">
<div className="flex flex-col items-center text-center gap-4 mb-16 max-w-3xl mx-auto">
<Tag text="Welcome to Luxury" />
<h1 className="text-5xl md:text-6xl lg:text-7xl font-bold tracking-tight text-balance bg-clip-text text-transparent bg-gradient-to-b from-foreground to-muted-foreground pb-2">
Experience Unparalleled Comfort & Elegance
</h1>
<p className="text-lg text-muted-foreground">
Discover a world where impeccable service meets sophisticated design. Your unforgettable journey begins here.
</p>
<div className="flex flex-wrap items-center justify-center gap-4">
<Button text="Book Your Stay" variant="primary" href="#contact" />
<Button text="Explore Rooms" variant="secondary" href="#accommodation" />
</div>
</div>
<div className="w-full rounded-3xl overflow-hidden shadow-2xl relative">
<div className="relative w-full h-[60vh]">
{images.map((src, index) => (
<div
key={src}
className={`absolute inset-0 transition-opacity duration-1000 ${index === currentIndex ? 'opacity-100 z-10' : 'opacity-0 z-0'}`}
>
<ImageOrVideo
imageSrc={src}
className="w-full h-full object-cover"
/>
</div>
))}
</div>
<div className="absolute bottom-6 left-1/2 -translate-x-1/2 flex gap-3 w-full max-w-md px-4 z-20">
{images.map((_, index) => (
<div key={index} className="h-1.5 flex-1 bg-white/30 rounded-full overflow-hidden cursor-pointer" onClick={() => { setCurrentIndex(index); setProgress(0); }}>
<div
className="h-full bg-white transition-all duration-75 ease-linear"
style={{
width: index === currentIndex ? `${progress}%` : (index < currentIndex ? '100%' : '0%')
}}
/>
</div>
))}
</div>
</div>
</div>
</SectionErrorBoundary>