Compare commits
13 Commits
version_27
...
version_33
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
53a2536434 | ||
| 1a31233b8d | |||
|
|
944faba57e | ||
| 7814a0a2da | |||
|
|
83b2e130d8 | ||
|
|
93a02c1e80 | ||
| e238609130 | |||
|
|
0e7bd853f3 | ||
| d30606b170 | |||
|
|
9b3c370252 | ||
| 9bada32657 | |||
|
|
1271ebce90 | ||
| d74637374f |
@@ -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>
|
||||
);
|
||||
|
||||
@@ -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
17
src/pages/BookingPage.tsx
Normal 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>
|
||||
</>
|
||||
);
|
||||
}
|
||||
@@ -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"
|
||||
|
||||
@@ -6,4 +6,5 @@ export interface Route {
|
||||
|
||||
export const routes: Route[] = [
|
||||
{ path: '/', label: 'Home', pageFile: 'HomePage' },
|
||||
{ path: '/booking', label: 'Booking', pageFile: 'BookingPage' },
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user