Done — one self-contained index.html, no build step. Just double-click it, or drop it on any static host (Netlify, Vercel, GitHub Pages, S3) and it works as-is.
What changed under the hood to make it a single file:
- React, ReactDOM, Babel, and Tailwind load from CDN
<script>tags; JSX is transpiled live in the browser - Framer Motion → replaced with a small
IntersectionObserver-basedRevealcomponent and plain CSS keyframes (fadeUp,kenBurns,floatDown) for the entrance/hover motion lucide-react→ replaced with a hand-writtenIconcomponent (inline stroke SVGs), so there’s no external icon package dependency- Everything else — theme toggle, filterable menu, masonry gallery + lightbox, reservation form validation and success modal, all copy and images — is unchanged
Same swap-outs apply as before: paste an .mp4 URL into IMAGES.heroVideo near the top of the script, and replace the Unsplash/pravatar URLs with your own photography when ready.