Contact: Retro Y2K Guestbook Form with Submit Button
The Contact page renders a classic Web 1.0 guestbook form with name, email, URL, and message fields, plus a hot-pink SUBMIT!! button and success state.
Use this file to discover all available pages before exploring further.
The Contact page (/contact) is a faithful recreation of the classic 2000s personal website guestbook. Visitors fill out their handle, optional email, website URL, and a free-text message before hitting the enormous hot-pink SUBMIT!! button. On submission the form is replaced by a bouncing green success message. The page title Sign My Guestbook! is rendered in Pacifico font with a slight anti-clockwise rotation (-rotate-3).
Form submission state is managed with a single useState(false) boolean. The onSubmit handler calls event.preventDefault(), sets the flag to true, and resets it after 3 seconds via setTimeout:
When s is true, the form is replaced by a success panel:
<div className="text-center py-12"> <h3 className="text-3xl text-green-600 font-comic font-bold animate-bounce mb-4"> Thanks for signing! </h3> <p className="font-pixel text-lg">Your entry has been added to the database.</p></div>
The success state resets after 3 seconds, returning the empty form. No data is actually persisted — this is a static portfolio SPA with no backend.
The form is centred at max-w-2xl mx-auto. The title sits in a text-center mb-8 div, and the form itself is nested inside bevel-container bg-silver p-6 → bg-yellow-100 p-6 retro-dashed.
All fields use the shared input style w-full border-2 border-gray-400 p-2 shadow-inner focus:border-hotpink focus:outline-none. Labels are font-bold text-blue-800 mb-1.
// In he() — edit the success panel strings<h3 className="text-3xl text-green-600 font-comic font-bold animate-bounce mb-4"> Thanks for signing!</h3><p className="font-pixel text-lg">Your entry has been added to the database.</p>
To wire up a real backend, replace the t submit handler in he() with a fetch() or axios call posting the form data to an API endpoint. Keep the r(true) call after a successful response to trigger the success state.