diff --git a/components/ContentType/HotelPage/HotelPage.tsx b/components/ContentType/HotelPage/HotelPage.tsx
index af170493f..f6f011c0c 100644
--- a/components/ContentType/HotelPage/HotelPage.tsx
+++ b/components/ContentType/HotelPage/HotelPage.tsx
@@ -6,6 +6,8 @@ import AmenitiesList from "./AmenitiesList"
import IntroSection from "./IntroSection"
import { Rooms } from "./Rooms"
import SidePeek from "@/components/TempDesignSystem/SidePeek"
+import SidePeekContent from "@/components/TempDesignSystem/SidePeek/Content"
+import SidePeekContainer from "./SidePeekContainer"
import styles from "./hotelPage.module.css"
@@ -38,6 +40,7 @@ export default async function HotelPage({ lang }: LangParams) {
+
Restaurant and bar
@@ -47,6 +50,25 @@ export default async function HotelPage({ lang }: LangParams) {
Meetings
+
+
+ Food
+
+
+
+ - Some
+ - JSX
+ - Conent
+ - here
+
+
+
+ Meetings
+
+
)
}
diff --git a/components/ContentType/HotelPage/SidePeekContainer.tsx b/components/ContentType/HotelPage/SidePeekContainer.tsx
new file mode 100644
index 000000000..9517a9fd1
--- /dev/null
+++ b/components/ContentType/HotelPage/SidePeekContainer.tsx
@@ -0,0 +1,51 @@
+"use client"
+
+import { usePathname, useRouter, useSearchParams } from "next/navigation"
+import React, { Children, cloneElement, useEffect, useState } from "react"
+
+import SidePeek from "@/components/TempDesignSystem/SidePeek"
+
+export default function SidePeekContainer({
+ children,
+}: React.PropsWithChildren) {
+ const router = useRouter()
+ const pathname = usePathname()
+ const searchParams = useSearchParams()
+ const [activeSidePeek, setActiveSidePeek] = useState(() => {
+ const sidePeekParam = searchParams.get("sidepeek")
+
+ return sidePeekParam || null
+ })
+
+ useEffect(() => {
+ const sidePeekParam = searchParams.get("sidepeek")
+ if (sidePeekParam !== activeSidePeek) {
+ setActiveSidePeek(sidePeekParam)
+ }
+ }, [searchParams, activeSidePeek])
+
+ function handleClose(isOpen: boolean) {
+ if (!isOpen) {
+ setActiveSidePeek(null)
+
+ const nextSearchParams = new URLSearchParams(searchParams.toString())
+ nextSearchParams.delete("sidepeek")
+
+ router.push(`${pathname}?${nextSearchParams}`, { scroll: false })
+ }
+ }
+ const childrenWithIsActive = Children.map(children, (child) => {
+ if (!React.isValidElement(child)) {
+ return child
+ }
+ return cloneElement(child as React.ReactElement, {
+ isActive: child.props.contentKey === activeSidePeek,
+ })
+ })
+
+ return (
+
+ {childrenWithIsActive}
+
+ )
+}
diff --git a/components/TempDesignSystem/SidePeek/Content.tsx b/components/TempDesignSystem/SidePeek/Content.tsx
new file mode 100644
index 000000000..74f4255cc
--- /dev/null
+++ b/components/TempDesignSystem/SidePeek/Content.tsx
@@ -0,0 +1,42 @@
+"use client"
+
+import { Children, PropsWithChildren } from "react"
+import { X } from "react-feather"
+
+import Title from "../Text/Title"
+
+import styles from "./sidePeek.module.css"
+
+export default function Content({
+ title,
+ children,
+ contentKey,
+ isActive = false,
+ onClose,
+}: PropsWithChildren<{
+ title?: string
+ contentKey: string
+ isActive?: boolean
+ onClose?: () => void
+}>) {
+ return isActive ? (
+
+ ) : null
+}
diff --git a/components/TempDesignSystem/SidePeek/index.tsx b/components/TempDesignSystem/SidePeek/index.tsx
index 0b03ed53a..1a6628a16 100644
--- a/components/TempDesignSystem/SidePeek/index.tsx
+++ b/components/TempDesignSystem/SidePeek/index.tsx
@@ -1,67 +1,37 @@
"use client"
-import { usePathname, useRouter, useSearchParams } from "next/navigation"
-import { ReactNode, useEffect, useState } from "react"
-import { Button, Dialog, DialogTrigger, Modal } from "react-aria-components"
-import { X } from "react-feather"
+import { Children, cloneElement, PropsWithChildren } from "react"
+import { Dialog, DialogTrigger, Modal } from "react-aria-components"
import Title from "@/components/TempDesignSystem/Text/Title"
import styles from "./sidePeek.module.css"
type SidePeekProps = {
- content: Record
+ activeContent: string | null
+ onClose: (isOpen: boolean) => void
}
-export default function SidePeek({ content }: SidePeekProps) {
- const [sidePeekContent, setSidePeekContent] = useState(null)
-
- const searchParams = useSearchParams()
- const activeSidePeek = searchParams.get("sidepeek")
- const router = useRouter()
- const pathname = usePathname()
-
- useEffect(() => {
- if (activeSidePeek) {
- setSidePeekContent(activeSidePeek)
- }
- }, [activeSidePeek])
-
- const activeContent = sidePeekContent && content[sidePeekContent]
-
- function handleClose(isOpen: boolean) {
- if (!isOpen) {
- console.log("closing the modal now")
- setSidePeekContent(null)
-
- const nextSearchParams = new URLSearchParams(searchParams.toString())
- nextSearchParams.delete("sidepeek")
-
- router.push(`${pathname}?${nextSearchParams}`, { scroll: false })
- }
- }
-
+export default function SidePeek({
+ children,
+ onClose,
+ activeContent,
+}: PropsWithChildren) {
return (