'use client' import { useEffect } from 'react' import { Dialog, Modal, ModalOverlay } from 'react-aria-components' import { useIntl } from 'react-intl' import usePopStateHandler from '@scandic-hotels/common/hooks/usePopStateHandler' import { IconButton } from '../IconButton' import { MaterialIcon } from '../Icons/MaterialIcon' import { Typography } from '../Typography' import SidePeekSEO from './SidePeekSEO' import { KeepBodyVisible } from './KeepBodyVisible' import styles from './sidePeek.module.css' interface SidePeekSelfControlledProps extends React.PropsWithChildren { title: string isOpen: boolean onClose: () => void } export default function SidePeekSelfControlled({ children, isOpen, onClose, title, }: SidePeekSelfControlledProps) { const intl = useIntl() function handleClose(moveBack = false) { if (moveBack) { window.history.back() } else { onClose() } } // Only register popstate handler when open usePopStateHandler(() => handleClose(), isOpen) useEffect(() => { if (isOpen) { window.history.pushState(null, '', window.location.href) } }, [isOpen]) return ( <> handleClose(true)} isOpen={isOpen} > {children} ) }