"use client"; import { AnimatePresence, motion } from "motion/react"; import { useEffect, useState } from "react"; const cmsDetails = [ ["Edition", "EpicNext"], ["Interface", "Modern CMS"], ["Runtime", "Next.js App Router"], ]; const credits = [ ["Remco", "EpicNext direction and development"], ["Life", "Next.js architecture and CMS refinements"], ]; export function CmsInfoPopup() { const [open, setOpen] = useState(false); useEffect(() => { if (window.location.hash === "#cms-info") setOpen(true); }, []); useEffect(() => { if (!open) return; const onKeyDown = (event: KeyboardEvent) => { if (event.key === "Escape") setOpen(false); }; document.addEventListener("keydown", onKeyDown); return () => document.removeEventListener("keydown", onKeyDown); }, [open]); return ( <> {open ? ( setOpen(false)} initial={{ opacity: 0 }} animate={{ opacity: 1 }} exit={{ opacity: 0 }} transition={{ duration: 0.2 }} > event.stopPropagation()} initial={{ opacity: 0, scale: 0.95, y: 10 }} animate={{ opacity: 1, scale: 1, y: 0 }} exit={{ opacity: 0, scale: 0.95, y: 10 }} transition={{ duration: 0.2 }} >
CMS information

EpicNext

Modern Next.js CMS

A modern web layer for the hotel community, focused on fast navigation, clean administration, and a coherent EpicNext experience.

{cmsDetails.map(([label, value]) => (
{label}
{value}
))}
{credits.map(([name, role]) => (
{name} {role}
))}
) : null}
); }