commit 3b9b738afb825ab55c0bdb72bf10a5783703f063
Author: root <root@hub.scroll.pub> Date: 2024-12-28 03:04:23 +0000 Subject: Initial commit diff --git a/body.html b/body.html new file mode 100644 index 0000000..f8eb94c --- /dev/null +++ b/body.html @@ -0,0 +1,95 @@ +<header> + <nav class="main-nav"> + <button class="menu-toggle" aria-label="Toggle menu"> + <span></span> + <span></span> + <span></span> + </button> + <ul> + <li><a href="#home">Home</a></li> + <li><a href="#menu">Menu</a></li> + <li><a href="#reservations">Reservations</a></li> + <li><a href="#contact">Contact</a></li> + </ul> + </nav> +</header> + +<main> + <section id="home" class="hero"> + <div class="hero-content"> + <h1>Bistro</h1> + <p>Traditional Belgian Cuisine</p> + </div> + </section> + + <section id="menu" class="menu-section"> + <h2>Our Menu</h2> + <div class="menu-grid"> + <div class="menu-category"> + <h3>Starters</h3> + <ul> + <li> + <span class="dish">Belgian Cheese Croquettes</span> + <span class="price">€12</span> + </li> + <li> + <span class="dish">Flemish Asparagus</span> + <span class="price">€14</span> + </li> + </ul> + </div> + <div class="menu-category"> + <h3>Main Courses</h3> + <ul> + <li> + <span class="dish">Beef Stew with Belgian Beer</span> + <span class="price">€24</span> + </li> + <li> + <span class="dish">Mussels & Frites</span> + <span class="price">€26</span> + </li> + </ul> + </div> + </div> + </section> + + <section id="reservations" class="reservations"> + <h2>Make a Reservation</h2> + <form id="reservation-form"> + <div class="form-group"> + <label for="name">Name</label> + <input type="text" id="name" required> + </div> + <div class="form-group"> + <label for="date">Date</label> + <input type="date" id="date" required> + </div> + <div class="form-group"> + <label for="time">Time</label> + <input type="time" id="time" required> + </div> + <div class="form-group"> + <label for="guests">Number of Guests</label> + <input type="number" id="guests" min="1" max="8" required> + </div> + <button type="submit">Reserve Table</button> + </form> + </section> + + <section id="contact" class="contact"> + <h2>Visit Us</h2> + <div class="contact-info"> + <p>123 Rue de la Bière</p> + <p>1000 Brussels, Belgium</p> + <p>Tel: +32 2 123 45 67</p> + <p>Open Tuesday to Sunday</p> + <p>18:00 - 22:30</p> + </div> + </section> +</main> + +<footer> + <p>Bistro - Traditional Belgian Restaurant</p> + <p>Established 2023</p> +</footer> \ No newline at end of file diff --git a/index.scroll b/index.scroll new file mode 100644 index 0000000..919efcc --- /dev/null +++ b/index.scroll @@ -0,0 +1,8 @@ +buildHtml +baseUrl https://bistro.scroll.pub +metaTags +editButton /edit.html +title Bistro - Authentic Belgian Restaurant +style.css +body.html +script.js \ No newline at end of file diff --git a/prompt.json b/prompt.json new file mode 100644 index 0000000..8c047a0 --- /dev/null +++ b/prompt.json @@ -0,0 +1,20 @@ +{ + "id": "msg_01AgB8bFFDJkbgqbtao1yzeQ", + "type": "message", + "role": "assistant", + "model": "claude-3-5-sonnet-20241022", + "content": [ + { + "type": "text", + "text": "I'll help create a replica of the Nuet'n Genoeg Belgian restaurant website with a similar cozy, rustic feel.\n\nFor the domain, I suggest: bistro.scroll.pub\n\n---domain---\nbistro.scroll.pub\n---index.scroll---\nbuildHtml\nbaseUrl https://bistro.scroll.pub\nmetaTags\neditButton /edit.html\ntitle Bistro - Authentic Belgian Restaurant\nstyle.css\nbody.html\nscript.js\n---body.html---\n<header>\n <nav class=\"main-nav\">\n <button class=\"menu-toggle\" aria-label=\"Toggle menu\">\n <span></span>\n <span></span>\n <span></span>\n </button>\n <ul>\n <li><a href=\"#home\">Home</a></li>\n <li><a href=\"#menu\">Menu</a></li>\n <li><a href=\"#reservations\">Reservations</a></li>\n <li><a href=\"#contact\">Contact</a></li>\n </ul>\n </nav>\n</header>\n\n<main>\n <section id=\"home\" class=\"hero\">\n <div class=\"hero-content\">\n <h1>Bistro</h1>\n <p>Traditional Belgian Cuisine</p>\n </div>\n </section>\n\n <section id=\"menu\" class=\"menu-section\">\n <h2>Our Menu</h2>\n <div class=\"menu-grid\">\n <div class=\"menu-category\">\n <h3>Starters</h3>\n <ul>\n <li>\n <span class=\"dish\">Belgian Cheese Croquettes</span>\n <span class=\"price\">€12</span>\n </li>\n <li>\n <span class=\"dish\">Flemish Asparagus</span>\n <span class=\"price\">€14</span>\n </li>\n </ul>\n </div>\n <div class=\"menu-category\">\n <h3>Main Courses</h3>\n <ul>\n <li>\n <span class=\"dish\">Beef Stew with Belgian Beer</span>\n <span class=\"price\">€24</span>\n </li>\n <li>\n <span class=\"dish\">Mussels & Frites</span>\n <span class=\"price\">€26</span>\n </li>\n </ul>\n </div>\n </div>\n </section>\n\n <section id=\"reservations\" class=\"reservations\">\n <h2>Make a Reservation</h2>\n <form id=\"reservation-form\">\n <div class=\"form-group\">\n <label for=\"name\">Name</label>\n <input type=\"text\" id=\"name\" required>\n </div>\n <div class=\"form-group\">\n <label for=\"date\">Date</label>\n <input type=\"date\" id=\"date\" required>\n </div>\n <div class=\"form-group\">\n <label for=\"time\">Time</label>\n <input type=\"time\" id=\"time\" required>\n </div>\n <div class=\"form-group\">\n <label for=\"guests\">Number of Guests</label>\n <input type=\"number\" id=\"guests\" min=\"1\" max=\"8\" required>\n </div>\n <button type=\"submit\">Reserve Table</button>\n </form>\n </section>\n\n <section id=\"contact\" class=\"contact\">\n <h2>Visit Us</h2>\n <div class=\"contact-info\">\n <p>123 Rue de la Bière</p>\n <p>1000 Brussels, Belgium</p>\n <p>Tel: +32 2 123 45 67</p>\n <p>Open Tuesday to Sunday</p>\n <p>18:00 - 22:30</p>\n </div>\n </section>\n</main>\n\n<footer>\n <p>Bistro - Traditional Belgian Restaurant</p>\n <p>Established 2023</p>\n</footer>\n---style.css---\n:root {\n --primary-color: #2c1810;\n --secondary-color: #d4b396;\n --text-color: #333;\n --background-color: #faf6f1;\n --accent-color: #8b4513;\n}\n\n* {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n}\n\nbody {\n font-family: 'Garamond', serif;\n line-height: 1.6;\n color: var(--text-color);\n background-color: var(--background-color);\n}\n\n/* Header & Navigation */\nheader {\n position: fixed;\n width: 100%;\n z-index: 1000;\n background: rgba(44, 24, 16, 0.95);\n backdrop-filter: blur(5px);\n}\n\n.main-nav ul {\n display: flex;\n justify-content: center;\n list-style: none;\n padding: 1.5rem;\n}\n\n.main-nav a {\n color: var(--secondary-color);\n text-decoration: none;\n padding: 0.5rem 2rem;\n font-size: 1.2rem;\n transition: color 0.3s ease;\n}\n\n.main-nav a:hover {\n color: #fff;\n}\n\n.menu-toggle {\n display: none;\n}\n\n/* Hero Section */\n.hero {\n height: 100vh;\n background: linear-gradient(rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)),\n url('/images/hero.jpg') center/cover;\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n color: white;\n}\n\n.hero-content h1 {\n font-size: 4rem;\n margin-bottom: 1rem;\n animation: fadeIn 1.5s ease-out;\n}\n\n.hero-content p {\n font-size: 1.5rem;\n animation: fadeIn 2s ease-out;\n}\n\n/* Menu Section */\n.menu-section {\n padding: 5rem 2rem;\n background-color: white;\n}\n\n.menu-grid {\n max-width: 1200px;\n margin: 0 auto;\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 2rem;\n}\n\n.menu-category h3 {\n color: var(--accent-color);\n margin-bottom: 1.5rem;\n font-size: 1.8rem;\n}\n\n.menu-category ul {\n list-style: none;\n}\n\n.menu-category li {\n display: flex;\n justify-content: space-between;\n margin-bottom: 1rem;\n padding-bottom: 0.5rem;\n border-bottom: 1px dotted var(--secondary-color);\n}\n\n/* Reservations Section */\n.reservations {\n padding: 5rem 2rem;\n background-color: var(--secondary-color);\n}\n\n#reservation-form {\n max-width: 600px;\n margin: 0 auto;\n}\n\n.form-group {\n margin-bottom: 1.5rem;\n}\n\nlabel {\n display: block;\n margin-bottom: 0.5rem;\n color: var(--primary-color);\n}\n\ninput {\n width: 100%;\n padding: 0.8rem;\n border: 1px solid var(--primary-color);\n border-radius: 4px;\n}\n\nbutton {\n background-color: var(--primary-color);\n color: white;\n padding: 1rem 2rem;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n transition: background-color 0.3s ease;\n}\n\nbutton:hover {\n background-color: var(--accent-color);\n}\n\n/* Contact Section */\n.contact {\n padding: 5rem 2rem;\n text-align: center;\n background-color: var(--primary-color);\n color: var(--secondary-color);\n}\n\n.contact-info {\n margin-top: 2rem;\n}\n\n/* Footer */\nfooter {\n background-color: var(--primary-color);\n color: var(--secondary-color);\n text-align: center;\n padding: 2rem;\n}\n\n/* Animations */\n@keyframes fadeIn {\n from { opacity: 0; transform: translateY(20px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n/* Mobile Responsive */\n@media (max-width: 768px) {\n .menu-toggle {\n display: block;\n position: absolute;\n top: 1rem;\n right: 1rem;\n background: none;\n border: none;\n cursor: pointer;\n padding: 0.5rem;\n }\n\n .menu-toggle span {\n display: block;\n width: 25px;\n height: 3px;\n background-color: var(--secondary-color);\n margin: 5px 0;\n transition: 0.3s;\n }\n\n .main-nav ul {\n display: none;\n flex-direction: column;\n padding: 1rem;\n }\n\n .main-nav.active ul {\n display: flex;\n }\n\n .main-nav a {\n padding: 1rem;\n display: block;\n }\n\n .hero-content h1 {\n font-size: 2.5rem;\n }\n\n .menu-grid {\n grid-template-columns: 1fr;\n }\n}\n---script.js---\ndocument.addEventListener('DOMContentLoaded', () => {\n // Mobile menu toggle\n const menuToggle = document.querySelector('.menu-toggle');\n const mainNav = document.querySelector('.main-nav');\n \n menuToggle.addEventListener('click', () => {\n mainNav.classList.toggle('active');\n });\n\n // Smooth scroll for navigation links\n document.querySelectorAll('a[href^=\"#\"]').forEach(anchor => {\n anchor.addEventListener('click', function (e) {\n e.preventDefault();\n const target = document.querySelector(this.getAttribute('href'));\n \n if (target) {\n target.scrollIntoView({\n behavior: 'smooth'\n });\n \n // Close mobile menu after clicking\n mainNav.classList.remove('active');\n }\n });\n });\n\n // Form submission handling\n const reservationForm = document.getElementById('reservation-form');\n \n if (reservationForm) {\n reservationForm.addEventListener('submit', (e) => {\n e.preventDefault();\n \n // Simple form validation\n const name = document.getElementById('name').value;\n const date = document.getElementById('date').value;\n const time = document.getElementById('time').value;\n const guests = document.getElementById('guests').value;\n\n if (name && date && time && guests) {\n alert('Thank you for your reservation request. We will contact you shortly to confirm.');\n reservationForm.reset();\n }\n });\n }\n\n // Parallax effect for hero section\n const hero = document.querySelector('.hero');\n \n window.addEventListener('scroll', () => {\n if (hero) {\n const scrolled = window.pageYOffset;\n hero.style.backgroundPositionY = `${scrolled * 0.5}px`;\n }\n });\n});\n---end---\n\nThis implementation features:\n1. A clean, responsive design\n2. Smooth scrolling navigation\n3. Mobile-friendly hamburger menu\n4. Form validation\n5. Parallax scrolling effect\n6. Semantic HTML5 structure\n7. Accessible navigation and form elements\n8. CSS animations and transitions\n9. Modern CSS variables\n10. Optimized performance\n\nNote: You'll need to add your own hero.jpg image to the /images directory for the hero section background." + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 285, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "output_tokens": 3052 + } +} \ No newline at end of file diff --git a/readme.scroll b/readme.scroll new file mode 100644 index 0000000..3b1c1cd --- /dev/null +++ b/readme.scroll @@ -0,0 +1,2 @@ +# bistro.scroll.pub +Website generated by Claude from prompt: I want to replicate http://www.nuetnigenough.be \ No newline at end of file diff --git a/script.js b/script.js new file mode 100644 index 0000000..a74370f --- /dev/null +++ b/script.js @@ -0,0 +1,56 @@ +document.addEventListener('DOMContentLoaded', () => { + // Mobile menu toggle + const menuToggle = document.querySelector('.menu-toggle'); + const mainNav = document.querySelector('.main-nav'); + + menuToggle.addEventListener('click', () => { + mainNav.classList.toggle('active'); + }); + + // Smooth scroll for navigation links + document.querySelectorAll('a[href^="#"]').forEach(anchor => { + anchor.addEventListener('click', function (e) { + e.preventDefault(); + const target = document.querySelector(this.getAttribute('href')); + + if (target) { + target.scrollIntoView({ + behavior: 'smooth' + }); + + // Close mobile menu after clicking + mainNav.classList.remove('active'); + } + }); + }); + + // Form submission handling + const reservationForm = document.getElementById('reservation-form'); + + if (reservationForm) { + reservationForm.addEventListener('submit', (e) => { + e.preventDefault(); + + // Simple form validation + const name = document.getElementById('name').value; + const date = document.getElementById('date').value; + const time = document.getElementById('time').value; + const guests = document.getElementById('guests').value; + + if (name && date && time && guests) { + alert('Thank you for your reservation request. We will contact you shortly to confirm.'); + reservationForm.reset(); + } + }); + } + + // Parallax effect for hero section + const hero = document.querySelector('.hero'); + + window.addEventListener('scroll', () => { + if (hero) { + const scrolled = window.pageYOffset; + hero.style.backgroundPositionY = `${scrolled * 0.5}px`; + } + }); +}); \ No newline at end of file diff --git a/style.css b/style.css new file mode 100644 index 0000000..25401d4 --- /dev/null +++ b/style.css @@ -0,0 +1,221 @@ +:root { + --primary-color: #2c1810; + --secondary-color: #d4b396; + --text-color: #333; + --background-color: #faf6f1; + --accent-color: #8b4513; +} + +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: 'Garamond', serif; + line-height: 1.6; + color: var(--text-color); + background-color: var(--background-color); +} + +/* Header & Navigation */ +header { + position: fixed; + width: 100%; + z-index: 1000; + background: rgba(44, 24, 16, 0.95); + backdrop-filter: blur(5px); +} + +.main-nav ul { + display: flex; + justify-content: center; + list-style: none; + padding: 1.5rem; +} + +.main-nav a { + color: var(--secondary-color); + text-decoration: none; + padding: 0.5rem 2rem; + font-size: 1.2rem; + transition: color 0.3s ease; +} + +.main-nav a:hover { + color: #fff; +} + +.menu-toggle { + display: none; +} + +/* Hero Section */ +.hero { + height: 100vh; + background: linear-gradient(rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)), + url('/images/hero.jpg') center/cover; + display: flex; + align-items: center; + justify-content: center; + text-align: center; + color: white; +} + +.hero-content h1 { + font-size: 4rem; + margin-bottom: 1rem; + animation: fadeIn 1.5s ease-out; +} + +.hero-content p { + font-size: 1.5rem; + animation: fadeIn 2s ease-out; +} + +/* Menu Section */ +.menu-section { + padding: 5rem 2rem; + background-color: white; +} + +.menu-grid { + max-width: 1200px; + margin: 0 auto; + display: grid; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + gap: 2rem; +} + +.menu-category h3 { + color: var(--accent-color); + margin-bottom: 1.5rem; + font-size: 1.8rem; +} + +.menu-category ul { + list-style: none; +} + +.menu-category li { + display: flex; + justify-content: space-between; + margin-bottom: 1rem; + padding-bottom: 0.5rem; + border-bottom: 1px dotted var(--secondary-color); +} + +/* Reservations Section */ +.reservations { + padding: 5rem 2rem; + background-color: var(--secondary-color); +} + +#reservation-form { + max-width: 600px; + margin: 0 auto; +} + +.form-group { + margin-bottom: 1.5rem; +} + +label { + display: block; + margin-bottom: 0.5rem; + color: var(--primary-color); +} + +input { + width: 100%; + padding: 0.8rem; + border: 1px solid var(--primary-color); + border-radius: 4px; +} + +button { + background-color: var(--primary-color); + color: white; + padding: 1rem 2rem; + border: none; + border-radius: 4px; + cursor: pointer; + transition: background-color 0.3s ease; +} + +button:hover { + background-color: var(--accent-color); +} + +/* Contact Section */ +.contact { + padding: 5rem 2rem; + text-align: center; + background-color: var(--primary-color); + color: var(--secondary-color); +} + +.contact-info { + margin-top: 2rem; +} + +/* Footer */ +footer { + background-color: var(--primary-color); + color: var(--secondary-color); + text-align: center; + padding: 2rem; +} + +/* Animations */ +@keyframes fadeIn { + from { opacity: 0; transform: translateY(20px); } + to { opacity: 1; transform: translateY(0); } +} + +/* Mobile Responsive */ +@media (max-width: 768px) { + .menu-toggle { + display: block; + position: absolute; + top: 1rem; + right: 1rem; + background: none; + border: none; + cursor: pointer; + padding: 0.5rem; + } + + .menu-toggle span { + display: block; + width: 25px; + height: 3px; + background-color: var(--secondary-color); + margin: 5px 0; + transition: 0.3s; + } + + .main-nav ul { + display: none; + flex-direction: column; + padding: 1rem; + } + + .main-nav.active ul { + display: flex; + } + + .main-nav a { + padding: 1rem; + display: block; + } + + .hero-content h1 { + font-size: 2.5rem; + } + + .menu-grid { + grid-template-columns: 1fr; + } +} \ No newline at end of file