Compare commits

...

13 Commits

Author SHA1 Message Date
kudinDmitriyUp
53a2536434 Bob AI: Update navbar links to point to home page 2026-06-03 15:00:47 +00:00
1a31233b8d Merge version_32_1780498705920 into main
Merge version_32_1780498705920 into main
2026-06-03 14:59:38 +00:00
kudinDmitriyUp
944faba57e Bob AI: Update Book Now button link to point to /booking page 2026-06-03 14:58:58 +00:00
7814a0a2da Merge version_31_1780498619863 into main
Merge version_31_1780498619863 into main
2026-06-03 14:57:58 +00:00
kudinDmitriyUp
83b2e130d8 Bob AI: Populate src/pages/BookingPage.tsx (snippet builder, 1 sections) 2026-06-03 14:57:54 +00:00
kudinDmitriyUp
93a02c1e80 Bob AI: Add booking page 2026-06-03 14:57:42 +00:00
e238609130 Merge version_30_1780498473353 into main
Merge version_30_1780498473353 into main
2026-06-03 14:56:19 +00:00
kudinDmitriyUp
0e7bd853f3 Bob AI: Put textbox in a box and aligned content to top 2026-06-03 14:55:40 +00:00
d30606b170 Merge version_29_1780498347738 into main
Merge version_29_1780498347738 into main
2026-06-03 14:53:54 +00:00
kudinDmitriyUp
9b3c370252 Bob AI: Fix grid columns in about section to show image on the right 2026-06-03 14:53:14 +00:00
9bada32657 Merge version_28_1780498219714 into main
Merge version_28_1780498219714 into main
2026-06-03 14:52:00 +00:00
kudinDmitriyUp
1271ebce90 Bob AI: Update about section layout with top text, left list, right 2026-06-03 14:51:24 +00:00
d74637374f Merge version_27_1780497940774 into main
Merge version_27_1780497940774 into main
2026-06-03 14:47:56 +00:00
5 changed files with 58 additions and 17 deletions

View File

@@ -2,11 +2,13 @@ import { Routes, Route } from 'react-router-dom';
import Layout from './components/Layout';
import HomePage from './pages/HomePage';
import BookingPage from "@/pages/BookingPage";
export default function App() {
return (
<Routes>
<Route element={<Layout />}>
<Route path="/" element={<HomePage />} />
<Route path="/booking" element={<BookingPage />} />
</Route>
</Routes>
);

View File

@@ -19,7 +19,7 @@ export default function Layout() {
const navItems = [
{
"name": "Home", "href": "#hero"
"name": "Home", "href": "/"
},
{
"name": "About", "href": "#about"
@@ -41,7 +41,9 @@ export default function Layout() {
},
{
"name": "Contact", "href": "#contact"
}
},
{ name: "Booking", href: "/booking" },
];
return (
@@ -50,7 +52,7 @@ export default function Layout() {
<SectionErrorBoundary name="navbar">
<nav className={`fixed top-0 z-50 w-full transition-colors duration-300 ${isScrolled ? 'bg-background/95 backdrop-blur-sm border-b border-foreground/10' : 'bg-transparent'} py-4`}>
<div className="mx-auto flex w-content-width items-center justify-between">
<a href="#" className="text-xl md:text-2xl font-bold text-foreground tracking-tight">
<a href="/" className="text-xl md:text-2xl font-bold text-foreground tracking-tight">
The Grand Hotel
</a>
<div className="hidden lg:flex items-center gap-6">
@@ -60,7 +62,7 @@ export default function Layout() {
</a>
))}
</div>
<Button text="Book Now" href="#contact" variant="primary" />
<Button text="Book Now" href="/booking" variant="primary" />
</div>
</nav>
</SectionErrorBoundary>

17
src/pages/BookingPage.tsx Normal file
View File

@@ -0,0 +1,17 @@
import ContactSplitForm from "@/components/sections/contact/ContactSplitForm";
export default function BookingPage() {
return (
<>
<div data-webild-section="ContactSplitForm"><ContactSplitForm
tag="Book Your Session"
title="Schedule Your Appointment"
description="Easily book your preferred service or consultation with us. Fill out the form below, and we'll confirm your slot shortly."
inputs={[{"name":"name","type":"text","placeholder":"Your Full Name","required":true},{"name":"email","type":"email","placeholder":"Your Email Address","required":true},{"name":"phone","type":"tel","placeholder":"Your Phone Number (Optional)"},{"name":"service","type":"text","placeholder":"Desired Service (e.g., Consultation)"},{"name":"date","type":"date","placeholder":"Preferred Date"}]}
textarea={{"name":"message","placeholder":"Tell us more about your needs or questions...","rows":4}}
buttonText="Confirm Booking"
imageSrc="https://img.freepik.com/free-photo/young-woman-making-appointment-online_23-2149154371.jpg"
/></div>
</>
);
}

View File

@@ -3,30 +3,49 @@ import Tag from "@/components/ui/Tag";
import ScrollReveal from "@/components/ui/ScrollReveal";
import ImageOrVideo from "@/components/ui/ImageOrVideo";
import Button from "@/components/ui/Button";
import { Check } from "lucide-react";
export default function AboutSection() {
return (
<section data-webild-section="about" id="about" className="bg-background">
<section data-webild-section="about" id="about" className="bg-background py-24">
<div className="max-w-content-width mx-auto px-6">
<div className="grid grid-cols-1 lg:grid-cols-2 items-center">
<ScrollReveal variant="slide-up">
<div className="bg-card border border-border rounded-theme p-8 md:p-12 mb-16 space-y-6 max-w-4xl mx-auto text-left">
<Tag text="About Us" />
<h2 className="text-4xl md:text-5xl font-bold text-foreground tracking-tight">
A Legacy of Unparalleled Hospitality
</h2>
<p className="text-lg text-muted-foreground leading-relaxed">
Nestled in the heart of the city, The Grand Hotel has been a beacon of luxury and comfort for over a century. Our commitment to excellence is reflected in every detail, from our meticulously designed rooms to our world-class dining experiences.
</p>
</div>
</ScrollReveal>
<div className="grid grid-cols-1 md:grid-cols-2 gap-12 items-start">
<ScrollReveal variant="slide-up">
<div className="space-y-8">
<Tag text="About Us" />
<h2 className="text-4xl md:text-5xl font-bold text-foreground tracking-tight">
A Legacy of Unparalleled Hospitality
</h2>
<p className="text-lg text-muted-foreground leading-relaxed">
Nestled in the heart of the city, The Grand Hotel has been a beacon of luxury and comfort for over a century. Our commitment to excellence is reflected in every detail, from our meticulously designed rooms to our world-class dining experiences.
</p>
<p className="text-lg text-muted-foreground leading-relaxed">
We believe that true luxury lies in the experience. Our dedicated staff is here to ensure that your stay is nothing short of extraordinary, anticipating your every need and exceeding your expectations.
</p>
<ul className="space-y-4">
{[
"Award-winning fine dining restaurants",
"World-class spa and wellness center",
"24/7 personalized concierge service",
"Breathtaking panoramic city views",
"State-of-the-art fitness facilities"
].map((item, index) => (
<li key={index} className="flex items-center gap-3">
<div className="flex-shrink-0 w-6 h-6 rounded-full bg-primary/10 flex items-center justify-center">
<Check className="w-4 h-4 text-primary" />
</div>
<span className="text-foreground">{item}</span>
</li>
))}
</ul>
<Button text="Discover Our Story" variant="primary" />
</div>
</ScrollReveal>
<ScrollReveal variant="fade">
<div className="relative h-[600px] rounded-theme overflow-hidden">
<div className="relative h-[500px] rounded-theme overflow-hidden">
<ImageOrVideo
imageSrc="https://images.unsplash.com/photo-1542314831-c6a4d14d837e?q=80&w=2000&auto=format&fit=crop"
className="w-full h-full object-cover"

View File

@@ -6,4 +6,5 @@ export interface Route {
export const routes: Route[] = [
{ path: '/', label: 'Home', pageFile: 'HomePage' },
{ path: '/booking', label: 'Booking', pageFile: 'BookingPage' },
];