commit 197770ac8c41fe8bf75fdee81cb036db13b5371b
Author: root <root@hub.scroll.pub> Date: 2025-01-01 18:53:03 +0000 Subject: Initial commit diff --git a/body.html b/body.html new file mode 100644 index 0000000..1fe4298 --- /dev/null +++ b/body.html @@ -0,0 +1,65 @@ +<header> + <nav> + <div class="container"> + <h1>AS214847</h1> + <button class="menu-toggle" aria-label="Toggle menu"> + <span></span> + <span></span> + <span></span> + </button> + </div> + </nav> +</header> + +<main> + <section class="hero"> + <div class="container"> + <h2>Network Information</h2> + <p>Complete details about AS214847 network prefixes and contact information</p> + </div> + </section> + + <section class="prefixes"> + <div class="container"> + <h2>IP Prefixes</h2> + <div class="prefix-cards"> + <div class="card"> + <h3>IPv6 Prefix 1</h3> + <p class="prefix-value">2a12:bec4:12a0::/44</p> + <button class="copy-btn" data-prefix="2a12:bec4:12a0::/44">Copy</button> + </div> + <div class="card"> + <h3>IPv6 Prefix 2</h3> + <p class="prefix-value">2a06:9f81:4300::/40</p> + <button class="copy-btn" data-prefix="2a06:9f81:4300::/40">Copy</button> + </div> + </div> + </div> + </section> + + <section class="contact"> + <div class="container"> + <h2>Contact Information</h2> + <div class="contact-cards"> + <div class="card"> + <h3>General Inquiries</h3> + <p><a href="mailto:inq@ipvi.net">inq@ipvi.net</a></p> + </div> + <div class="card"> + <h3>Abuse Reports</h3> + <p><a href="mailto:abuse@ipvi.net">abuse@ipvi.net</a></p> + </div> + <div class="card"> + <h3>Phone</h3> + <p><a href="tel:+12136972698">+1 (213) 697-2698</a></p> + </div> + </div> + </div> + </section> +</main> + +<footer> + <div class="container"> + <p>AS214847 Network Information</p> + </div> +</footer> \ No newline at end of file diff --git a/index.scroll b/index.scroll new file mode 100644 index 0000000..a15e7b1 --- /dev/null +++ b/index.scroll @@ -0,0 +1,8 @@ +buildHtml +baseUrl https://asinfo.scroll.pub +metaTags +editButton /edit.html +title AS214847 Network Information +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..6257fdb --- /dev/null +++ b/prompt.json @@ -0,0 +1,20 @@ +{ + "id": "msg_01GSUbi7Wnt6iPcgPKGngZvt", + "type": "message", + "role": "assistant", + "model": "claude-3-5-sonnet-20241022", + "content": [ + { + "type": "text", + "text": "I'll create a clean, professional website for AS214847 information.\n\nSuggested domain: asinfo.scroll.pub\n\n---domain---\nasinfo.scroll.pub\n---index.scroll---\nbuildHtml\nbaseUrl https://asinfo.scroll.pub\nmetaTags\neditButton /edit.html\ntitle AS214847 Network Information\nstyle.css\nbody.html\nscript.js\n---body.html---\n<header>\n <nav>\n <div class=\"container\">\n <h1>AS214847</h1>\n <button class=\"menu-toggle\" aria-label=\"Toggle menu\">\n <span></span>\n <span></span>\n <span></span>\n </button>\n </div>\n </nav>\n</header>\n\n<main>\n <section class=\"hero\">\n <div class=\"container\">\n <h2>Network Information</h2>\n <p>Complete details about AS214847 network prefixes and contact information</p>\n </div>\n </section>\n\n <section class=\"prefixes\">\n <div class=\"container\">\n <h2>IP Prefixes</h2>\n <div class=\"prefix-cards\">\n <div class=\"card\">\n <h3>IPv6 Prefix 1</h3>\n <p class=\"prefix-value\">2a12:bec4:12a0::/44</p>\n <button class=\"copy-btn\" data-prefix=\"2a12:bec4:12a0::/44\">Copy</button>\n </div>\n <div class=\"card\">\n <h3>IPv6 Prefix 2</h3>\n <p class=\"prefix-value\">2a06:9f81:4300::/40</p>\n <button class=\"copy-btn\" data-prefix=\"2a06:9f81:4300::/40\">Copy</button>\n </div>\n </div>\n </div>\n </section>\n\n <section class=\"contact\">\n <div class=\"container\">\n <h2>Contact Information</h2>\n <div class=\"contact-cards\">\n <div class=\"card\">\n <h3>General Inquiries</h3>\n <p><a href=\"mailto:inq@ipvi.net\">inq@ipvi.net</a></p>\n </div>\n <div class=\"card\">\n <h3>Abuse Reports</h3>\n <p><a href=\"mailto:abuse@ipvi.net\">abuse@ipvi.net</a></p>\n </div>\n <div class=\"card\">\n <h3>Phone</h3>\n <p><a href=\"tel:+12136972698\">+1 (213) 697-2698</a></p>\n </div>\n </div>\n </div>\n </section>\n</main>\n\n<footer>\n <div class=\"container\">\n <p>AS214847 Network Information</p>\n </div>\n</footer>\n---style.css---\n:root {\n --primary-color: #2c3e50;\n --secondary-color: #3498db;\n --accent-color: #e74c3c;\n --background-color: #f5f6fa;\n --text-color: #2c3e50;\n --card-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n}\n\n* {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n}\n\nbody {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;\n line-height: 1.6;\n color: var(--text-color);\n background-color: var(--background-color);\n}\n\n.container {\n max-width: 1200px;\n margin: 0 auto;\n padding: 0 20px;\n}\n\nheader {\n background-color: var(--primary-color);\n color: white;\n padding: 1rem 0;\n position: fixed;\n width: 100%;\n top: 0;\n z-index: 1000;\n box-shadow: var(--card-shadow);\n}\n\nnav .container {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.menu-toggle {\n display: none;\n}\n\nmain {\n margin-top: 80px;\n}\n\n.hero {\n background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));\n color: white;\n padding: 4rem 0;\n text-align: center;\n}\n\n.hero h2 {\n font-size: 2.5rem;\n margin-bottom: 1rem;\n}\n\nsection {\n padding: 4rem 0;\n}\n\n.prefix-cards, .contact-cards {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 2rem;\n margin-top: 2rem;\n}\n\n.card {\n background: white;\n padding: 2rem;\n border-radius: 10px;\n box-shadow: var(--card-shadow);\n transition: transform 0.3s ease;\n}\n\n.card:hover {\n transform: translateY(-5px);\n}\n\n.card h3 {\n color: var(--primary-color);\n margin-bottom: 1rem;\n}\n\n.prefix-value {\n font-family: monospace;\n background: var(--background-color);\n padding: 0.5rem;\n border-radius: 5px;\n margin: 1rem 0;\n}\n\n.copy-btn {\n background: var(--secondary-color);\n color: white;\n border: none;\n padding: 0.5rem 1rem;\n border-radius: 5px;\n cursor: pointer;\n transition: background-color 0.3s ease;\n}\n\n.copy-btn:hover {\n background: var(--primary-color);\n}\n\nfooter {\n background: var(--primary-color);\n color: white;\n padding: 2rem 0;\n text-align: center;\n margin-top: 4rem;\n}\n\n@media (max-width: 768px) {\n .menu-toggle {\n display: block;\n background: none;\n border: none;\n cursor: pointer;\n }\n\n .menu-toggle span {\n display: block;\n width: 25px;\n height: 3px;\n background: white;\n margin: 5px 0;\n transition: 0.3s;\n }\n\n .hero h2 {\n font-size: 2rem;\n }\n\n .prefix-cards, .contact-cards {\n grid-template-columns: 1fr;\n }\n}\n---script.js---\ndocument.addEventListener('DOMContentLoaded', () => {\n // Copy button functionality\n const copyButtons = document.querySelectorAll('.copy-btn');\n \n copyButtons.forEach(button => {\n button.addEventListener('click', async () => {\n const prefix = button.getAttribute('data-prefix');\n \n try {\n await navigator.clipboard.writeText(prefix);\n const originalText = button.textContent;\n button.textContent = 'Copied!';\n button.style.backgroundColor = '#27ae60';\n \n setTimeout(() => {\n button.textContent = originalText;\n button.style.backgroundColor = '';\n }, 2000);\n } catch (err) {\n console.error('Failed to copy text: ', err);\n }\n });\n });\n\n // Mobile menu toggle\n const menuToggle = document.querySelector('.menu-toggle');\n \n if (menuToggle) {\n menuToggle.addEventListener('click', () => {\n menuToggle.classList.toggle('active');\n // Add mobile menu functionality here if needed\n });\n }\n\n // Smooth scroll for anchor links\n document.querySelectorAll('a[href^=\"#\"]').forEach(anchor => {\n anchor.addEventListener('click', function (e) {\n e.preventDefault();\n document.querySelector(this.getAttribute('href')).scrollIntoView({\n behavior: 'smooth'\n });\n });\n });\n\n // Add animation on scroll\n const cards = document.querySelectorAll('.card');\n \n const observerOptions = {\n threshold: 0.1,\n rootMargin: '0px 0px -50px 0px'\n };\n\n const observer = new IntersectionObserver((entries) => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n entry.target.style.opacity = '1';\n entry.target.style.transform = 'translateY(0)';\n }\n });\n }, observerOptions);\n\n cards.forEach(card => {\n card.style.opacity = '0';\n card.style.transform = 'translateY(20px)';\n card.style.transition = 'opacity 0.5s ease, transform 0.5s ease';\n observer.observe(card);\n });\n});\n---end---\n\nThis implementation features:\n- Clean, semantic HTML5 structure\n- Beautiful gradient hero section\n- Smooth animations and transitions\n- Copy-to-clipboard functionality for IP prefixes\n- Responsive card layout\n- Mobile-friendly design\n- Intersection Observer for scroll animations\n- Accessible navigation and buttons\n- Modern color scheme with CSS variables\n- Hover effects and visual feedback\n- Performance optimized with vanilla JS\n- Clean typography and spacing\n\nThe website is both functional and visually appealing while maintaining simplicity and professionalism." + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 350, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "output_tokens": 2456 + } +} \ No newline at end of file diff --git a/readme.scroll b/readme.scroll new file mode 100644 index 0000000..cab6508 --- /dev/null +++ b/readme.scroll @@ -0,0 +1,2 @@ +# asinfo.scroll.pub +Website generated by Claude from prompt: AS214847 imfo page, with ip prefixes listed 2a12:bec4:12a0::/44 & 2a06:9f81:4300::/40 also contact info being inq@ipvi.net and abuse info is abuse@ipvi.net and phone is +1 (213) 697-2698 \ No newline at end of file diff --git a/script.js b/script.js new file mode 100644 index 0000000..4406669 --- /dev/null +++ b/script.js @@ -0,0 +1,68 @@ +document.addEventListener('DOMContentLoaded', () => { + // Copy button functionality + const copyButtons = document.querySelectorAll('.copy-btn'); + + copyButtons.forEach(button => { + button.addEventListener('click', async () => { + const prefix = button.getAttribute('data-prefix'); + + try { + await navigator.clipboard.writeText(prefix); + const originalText = button.textContent; + button.textContent = 'Copied!'; + button.style.backgroundColor = '#27ae60'; + + setTimeout(() => { + button.textContent = originalText; + button.style.backgroundColor = ''; + }, 2000); + } catch (err) { + console.error('Failed to copy text: ', err); + } + }); + }); + + // Mobile menu toggle + const menuToggle = document.querySelector('.menu-toggle'); + + if (menuToggle) { + menuToggle.addEventListener('click', () => { + menuToggle.classList.toggle('active'); + // Add mobile menu functionality here if needed + }); + } + + // Smooth scroll for anchor links + document.querySelectorAll('a[href^="#"]').forEach(anchor => { + anchor.addEventListener('click', function (e) { + e.preventDefault(); + document.querySelector(this.getAttribute('href')).scrollIntoView({ + behavior: 'smooth' + }); + }); + }); + + // Add animation on scroll + const cards = document.querySelectorAll('.card'); + + const observerOptions = { + threshold: 0.1, + rootMargin: '0px 0px -50px 0px' + }; + + const observer = new IntersectionObserver((entries) => { + entries.forEach(entry => { + if (entry.isIntersecting) { + entry.target.style.opacity = '1'; + entry.target.style.transform = 'translateY(0)'; + } + }); + }, observerOptions); + + cards.forEach(card => { + card.style.opacity = '0'; + card.style.transform = 'translateY(20px)'; + card.style.transition = 'opacity 0.5s ease, transform 0.5s ease'; + observer.observe(card); + }); +}); \ No newline at end of file diff --git a/style.css b/style.css new file mode 100644 index 0000000..c765791 --- /dev/null +++ b/style.css @@ -0,0 +1,148 @@ +:root { + --primary-color: #2c3e50; + --secondary-color: #3498db; + --accent-color: #e74c3c; + --background-color: #f5f6fa; + --text-color: #2c3e50; + --card-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); +} + +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif; + line-height: 1.6; + color: var(--text-color); + background-color: var(--background-color); +} + +.container { + max-width: 1200px; + margin: 0 auto; + padding: 0 20px; +} + +header { + background-color: var(--primary-color); + color: white; + padding: 1rem 0; + position: fixed; + width: 100%; + top: 0; + z-index: 1000; + box-shadow: var(--card-shadow); +} + +nav .container { + display: flex; + justify-content: space-between; + align-items: center; +} + +.menu-toggle { + display: none; +} + +main { + margin-top: 80px; +} + +.hero { + background: linear-gradient(135deg, var(--primary-color), var(--secondary-color)); + color: white; + padding: 4rem 0; + text-align: center; +} + +.hero h2 { + font-size: 2.5rem; + margin-bottom: 1rem; +} + +section { + padding: 4rem 0; +} + +.prefix-cards, .contact-cards { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + gap: 2rem; + margin-top: 2rem; +} + +.card { + background: white; + padding: 2rem; + border-radius: 10px; + box-shadow: var(--card-shadow); + transition: transform 0.3s ease; +} + +.card:hover { + transform: translateY(-5px); +} + +.card h3 { + color: var(--primary-color); + margin-bottom: 1rem; +} + +.prefix-value { + font-family: monospace; + background: var(--background-color); + padding: 0.5rem; + border-radius: 5px; + margin: 1rem 0; +} + +.copy-btn { + background: var(--secondary-color); + color: white; + border: none; + padding: 0.5rem 1rem; + border-radius: 5px; + cursor: pointer; + transition: background-color 0.3s ease; +} + +.copy-btn:hover { + background: var(--primary-color); +} + +footer { + background: var(--primary-color); + color: white; + padding: 2rem 0; + text-align: center; + margin-top: 4rem; +} + +@media (max-width: 768px) { + .menu-toggle { + display: block; + background: none; + border: none; + cursor: pointer; + } + + .menu-toggle span { + display: block; + width: 25px; + height: 3px; + background: white; + margin: 5px 0; + transition: 0.3s; + } + + .hero h2 { + font-size: 2rem; + } + + .prefix-cards, .contact-cards { + grid-template-columns: 1fr; + } +} \ No newline at end of file