71 lines
2.3 KiB
TypeScript
71 lines
2.3 KiB
TypeScript
"use client";
|
|
|
|
import { useEffect, useState } from "react";
|
|
import SmoothScroll from "@/components/SmoothScroll";
|
|
import EntranceExperience from "@/components/EntranceExperience";
|
|
import RestaurantStory from "@/components/RestaurantStory";
|
|
import ChefShowcase from "@/components/ChefShowcase";
|
|
import InteriorGallery from "@/components/InteriorGallery";
|
|
import Testimonials from "@/components/Testimonials";
|
|
import EventsAccordion from "@/components/EventsAccordion";
|
|
import MenuPreview from "@/components/MenuPreview";
|
|
import ReservationForm from "@/components/ReservationForm";
|
|
import RouteMap from "@/components/RouteMap";
|
|
import Footer from "@/components/Footer";
|
|
|
|
import CustomCursor from "@/components/CustomCursor";
|
|
import SoundManager from "@/components/SoundManager";
|
|
|
|
export default function Home() {
|
|
const [mounted, setMounted] = useState(false);
|
|
|
|
useEffect(() => {
|
|
setMounted(true);
|
|
}, []);
|
|
|
|
return (
|
|
<main className="w-full relative bg-darkbg text-foreground overflow-hidden select-none">
|
|
{/* Isolated wrapper for client-only widgets to prevent hydration insertion conflicts */}
|
|
<div id="client-only-widgets">
|
|
{mounted && <SoundManager />}
|
|
{mounted && <CustomCursor />}
|
|
</div>
|
|
|
|
{/* Lenis Scroll syncing with GSAP triggers */}
|
|
<SmoothScroll>
|
|
|
|
{/* Sections 1 & 2: Landing Exterior Zoom & Door opening into Welcome reception */}
|
|
<EntranceExperience />
|
|
|
|
{/* Section 3: Heritage Story timeline */}
|
|
<RestaurantStory />
|
|
|
|
{/* Section 4: Premium Breakfast Menu Card Section */}
|
|
<MenuPreview />
|
|
|
|
{/* Section 5: Chef Sundaram showcase with canvas heat waves */}
|
|
<ChefShowcase />
|
|
|
|
{/* Section 6: GSAP Horizontal space gallery */}
|
|
<InteriorGallery />
|
|
|
|
{/* Section 7: 3D-tilting Testimonials diaries */}
|
|
<Testimonials />
|
|
|
|
{/* Section 8: Expanding Special Events Accordion */}
|
|
<EventsAccordion />
|
|
|
|
{/* Section 9: Reservation Form with canvas sparks */}
|
|
<ReservationForm />
|
|
|
|
{/* Section 11: Cartographic Route SVG Map with animated Chariot */}
|
|
<RouteMap />
|
|
|
|
{/* Section 12: Footer with hanging Toran, contact logs and floating diyas */}
|
|
<Footer />
|
|
|
|
</SmoothScroll>
|
|
</main>
|
|
);
|
|
}
|