"use client"; import Link from "next/link"; import Image from "next/image"; import { useRouter } from "next/navigation"; import { ArrowLeft, Home } from "lucide-react"; import { useEffect, useState } from "react"; const TITLE = "404 - Page not found"; const MESSAGE = "I couldn't find the page you're looking for. It might have been moved or doesn't exist."; export default function NotFound() { const router = useRouter(); const [url, setUrl] = useState(""); const [canGoBack, setCanGoBack] = useState(false); const [showAssistant, setShowAssistant] = useState(false); const [displayedTitle, setDisplayedTitle] = useState(""); const [displayedMessage, setDisplayedMessage] = useState(""); const [showActions, setShowActions] = useState(false); useEffect(() => { setUrl(window.location.href); setCanGoBack( window.history.length > 1 && document.referrer.startsWith(window.location.origin), ); const assistantTimer = setTimeout(() => setShowAssistant(true), 600); return () => clearTimeout(assistantTimer); }, []); useEffect(() => { if (!showAssistant) return; let titleIndex = 0; const titleInterval = setInterval(() => { if (titleIndex <= TITLE.length) { setDisplayedTitle(TITLE.slice(0, titleIndex)); titleIndex++; } else { clearInterval(titleInterval); let messageIndex = 0; const messageInterval = setInterval(() => { if (messageIndex <= MESSAGE.length) { setDisplayedMessage(MESSAGE.slice(0, messageIndex)); messageIndex++; } else { clearInterval(messageInterval); setTimeout(() => setShowActions(true), 300); } }, 15); } }, 25); return () => clearInterval(titleInterval); }, [showAssistant]); return (

Take me to {url}

{showAssistant && (
assistant-ui
assistant-ui

{displayedTitle} {displayedTitle.length < TITLE.length && ( )}

{displayedTitle.length === TITLE.length && (

{displayedMessage} {displayedMessage.length < MESSAGE.length && ( )}

)}
)} {showActions && (
{canGoBack && ( )}
Home Go to homepage
)}
); }