Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f8a1bcf548 | |||
| 88fbef618d | |||
| a4aab2d910 | |||
| ce9baa4f4d |
@@ -1277,4 +1277,4 @@ export default function RootLayout({
|
|||||||
</ServiceWrapper>
|
</ServiceWrapper>
|
||||||
</html>
|
</html>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
114
src/app/page.tsx
114
src/app/page.tsx
@@ -4,13 +4,41 @@ import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
|||||||
import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay';
|
import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay';
|
||||||
import HeroSplitLarge from '@/components/sections/hero/HeroSplitLarge';
|
import HeroSplitLarge from '@/components/sections/hero/HeroSplitLarge';
|
||||||
import ParallaxAbout from '@/components/sections/about/ParallaxAbout';
|
import ParallaxAbout from '@/components/sections/about/ParallaxAbout';
|
||||||
import FeatureCardThirteen from '@/components/sections/feature/FeatureCardThirteen';
|
import ProductCardSeven from '@/components/sections/product/ProductCardSeven';
|
||||||
import ProductCardFive from '@/components/sections/product/ProductCardFive';
|
import ProductCardFive from '@/components/sections/product/ProductCardFive';
|
||||||
import TestimonialCardTwo from '@/components/sections/testimonial/TestimonialCardTwo';
|
import TestimonialCardTwo from '@/components/sections/testimonial/TestimonialCardTwo';
|
||||||
import ContactSplitForm from '@/components/sections/contact/ContactSplitForm';
|
import ContactSplitForm from '@/components/sections/contact/ContactSplitForm';
|
||||||
import FooterCard from '@/components/sections/footer/FooterCard';
|
import FooterCard from '@/components/sections/footer/FooterCard';
|
||||||
|
import { useState } from 'react';
|
||||||
|
|
||||||
export default function LandingPage() {
|
export default function LandingPage() {
|
||||||
|
const [selectedRoom, setSelectedRoom] = useState<string | null>(null);
|
||||||
|
|
||||||
|
const roomSpecifications: Record<string, { beds: string; sqft: string; amenities: string[]; price: string }> = {
|
||||||
|
"1": {
|
||||||
|
beds: "King Bed",
|
||||||
|
sqft: "450 sq ft",
|
||||||
|
amenities: ["Premium bedding", "City view", "Marble bathroom", "Premium toiletries", "In-room dining"],
|
||||||
|
price: "$250/night"
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
beds: "Two Queen Beds or King Bed",
|
||||||
|
sqft: "650 sq ft",
|
||||||
|
amenities: ["Premium bedding", "Panoramic city view", "Luxury spa bathroom", "Separate living area", "In-room dining", "Executive lounge access"],
|
||||||
|
price: "$450/night"
|
||||||
|
},
|
||||||
|
"3": {
|
||||||
|
beds: "King Bed + Sofa",
|
||||||
|
sqft: "850 sq ft",
|
||||||
|
amenities: ["Premium bedding", "Panoramic Tokyo view", "Full marble bathroom with soaking tub", "Separate living and dining areas", "In-room fine dining", "Executive concierge", "Premium entertainment system"],
|
||||||
|
price: "$650/night"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleViewDetails = (roomId: string) => {
|
||||||
|
setSelectedRoom(selectedRoom === roomId ? null : roomId);
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ThemeProvider
|
<ThemeProvider
|
||||||
defaultButtonVariant="elastic-effect"
|
defaultButtonVariant="elastic-effect"
|
||||||
@@ -69,35 +97,43 @@ export default function LandingPage() {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="features" data-section="features">
|
<div id="features" data-section="features">
|
||||||
<FeatureCardThirteen
|
<ProductCardSeven
|
||||||
title="World-Class Amenities"
|
title="World-Class Amenities"
|
||||||
description="Every detail crafted for your comfort and pleasure"
|
description="Every detail crafted for your comfort and pleasure"
|
||||||
tag="Amenities"
|
tag="Amenities"
|
||||||
features={[
|
products={[
|
||||||
{
|
{
|
||||||
id: "01",
|
id: "1",
|
||||||
title: "Spa & Wellness",
|
name: "Spa & Wellness",
|
||||||
description: "Rejuvenate with our signature treatments featuring traditional Japanese therapies and modern wellness techniques."
|
price: "Rejuvenate",
|
||||||
|
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/gallery/uploaded-1766184712312-lhl1h85w.jpg",
|
||||||
|
imageAlt: "Spa & Wellness"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: "02",
|
id: "2",
|
||||||
title: "Fine Dining",
|
name: "Fine Dining",
|
||||||
description: "Savor exquisite cuisine from award-winning chefs blending traditional and contemporary culinary arts."
|
price: "Experience",
|
||||||
|
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/gallery/uploaded-1766849442209-g2s3b84q.jpg",
|
||||||
|
imageAlt: "Fine Dining"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: "03",
|
id: "3",
|
||||||
title: "Fitness Center",
|
name: "Fitness Center",
|
||||||
description: "State-of-the-art equipment and expert trainers available 24/7 to support your wellness goals."
|
price: "Strengthen",
|
||||||
|
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/gallery/uploaded-1766184710583-yt05ru42.jpg",
|
||||||
|
imageAlt: "Fitness Center"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: "04",
|
id: "4",
|
||||||
title: "Sky Lounge",
|
name: "Sky Lounge",
|
||||||
description: "Unwind with panoramic views of Tokyo's skyline while enjoying premium cocktails and curated selections."
|
price: "Unwind",
|
||||||
|
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/gallery/uploaded-1766837634719-5otl8omu.jpg",
|
||||||
|
imageAlt: "Sky Lounge"
|
||||||
}
|
}
|
||||||
]}
|
]}
|
||||||
textboxLayout="default"
|
gridVariant="uniform-all-items-equal"
|
||||||
gridVariant="four-items-2x2-equal-grid"
|
|
||||||
animationType="slide-up"
|
animationType="slide-up"
|
||||||
|
textboxLayout="default"
|
||||||
useInvertedBackground="noInvert"
|
useInvertedBackground="noInvert"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@@ -112,19 +148,19 @@ export default function LandingPage() {
|
|||||||
id: "1",
|
id: "1",
|
||||||
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/gallery/uploaded-1766184712312-lhl1h85w.jpg",
|
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/gallery/uploaded-1766184712312-lhl1h85w.jpg",
|
||||||
imageAlt: "Deluxe Room",
|
imageAlt: "Deluxe Room",
|
||||||
button: { text: "View Details", href: "#" }
|
button: { text: "View Details", onClick: () => handleViewDetails("1") }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: "2",
|
id: "2",
|
||||||
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/gallery/uploaded-1766849442209-g2s3b84q.jpg",
|
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/gallery/uploaded-1766849442209-g2s3b84q.jpg",
|
||||||
imageAlt: "Executive Suite",
|
imageAlt: "Executive Suite",
|
||||||
button: { text: "View Details", href: "#" }
|
button: { text: "View Details", onClick: () => handleViewDetails("2") }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: "3",
|
id: "3",
|
||||||
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/gallery/uploaded-1766184710583-yt05ru42.jpg",
|
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/gallery/uploaded-1766184710583-yt05ru42.jpg",
|
||||||
imageAlt: "Premium Suite with View",
|
imageAlt: "Premium Suite with View",
|
||||||
button: { text: "View Details", href: "#" }
|
button: { text: "View Details", onClick: () => handleViewDetails("3") }
|
||||||
}
|
}
|
||||||
]}
|
]}
|
||||||
gridVariant="three-columns-all-equal-width"
|
gridVariant="three-columns-all-equal-width"
|
||||||
@@ -132,6 +168,42 @@ export default function LandingPage() {
|
|||||||
textboxLayout="default"
|
textboxLayout="default"
|
||||||
useInvertedBackground="noInvert"
|
useInvertedBackground="noInvert"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
{selectedRoom && roomSpecifications[selectedRoom] && (
|
||||||
|
<div className="w-full max-w-4xl mx-auto mt-8 p-6 bg-card rounded-lg border border-accent">
|
||||||
|
<div className="space-y-4">
|
||||||
|
<h3 className="text-2xl font-bold text-foreground">
|
||||||
|
{selectedRoom === "1" ? "Deluxe Room" : selectedRoom === "2" ? "Executive Suite" : "Premium Suite with View"} Specifications
|
||||||
|
</h3>
|
||||||
|
|
||||||
|
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
|
||||||
|
<div>
|
||||||
|
<p className="text-sm text-foreground/60 mb-2">Beds</p>
|
||||||
|
<p className="text-lg font-semibold text-foreground">{roomSpecifications[selectedRoom].beds}</p>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<p className="text-sm text-foreground/60 mb-2">Size</p>
|
||||||
|
<p className="text-lg font-semibold text-foreground">{roomSpecifications[selectedRoom].sqft}</p>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<p className="text-sm text-foreground/60 mb-2">Price</p>
|
||||||
|
<p className="text-lg font-semibold text-primary-cta">{roomSpecifications[selectedRoom].price}</p>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<p className="text-sm text-foreground/60 mb-2">Amenities</p>
|
||||||
|
<ul className="space-y-1">
|
||||||
|
{roomSpecifications[selectedRoom].amenities.map((amenity, idx) => (
|
||||||
|
<li key={idx} className="text-sm text-foreground flex items-start">
|
||||||
|
<span className="mr-2">•</span>
|
||||||
|
<span>{amenity}</span>
|
||||||
|
</li>
|
||||||
|
))}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="testimonials" data-section="testimonials">
|
<div id="testimonials" data-section="testimonials">
|
||||||
@@ -211,4 +283,4 @@ export default function LandingPage() {
|
|||||||
</div>
|
</div>
|
||||||
</ThemeProvider>
|
</ThemeProvider>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user