Spaces:
Running
Running
| class CustomFooter extends HTMLElement { | |
| connectedCallback() { | |
| this.attachShadow({ mode: 'open' }); | |
| this.shadowRoot.innerHTML = ` | |
| <style> | |
| footer { | |
| background-color: rgba(17, 24, 39, 0.9); | |
| backdrop-filter: blur(8px); | |
| border-top: 1px solid rgba(255, 255, 255, 0.1); | |
| } | |
| .footer-container { | |
| max-width: 1280px; | |
| margin: 0 auto; | |
| padding: 2rem 1rem; | |
| } | |
| .social-link { | |
| color: rgba(156, 163, 175, 0.9); | |
| transition: color 0.2s ease, transform 0.2s ease; | |
| } | |
| .social-link:hover { | |
| color: white; | |
| transform: translateY(-2px); | |
| } | |
| </style> | |
| <footer class="text-gray-400 py-8"> | |
| <div class="footer-container"> | |
| <div class="flex flex-col md:flex-row justify-between items-center"> | |
| <div class="mb-6 md:mb-0"> | |
| <div class="flex items-center space-x-2 mb-4"> | |
| <i data-feather="mountain" class="text-blue-400"></i> | |
| <span class="text-xl font-bold text-white">TerrainGen Explorer</span> | |
| </div> | |
| <p class="text-sm max-w-md"> | |
| A visual playground for exploring procedural terrain generation algorithms. | |
| </p> | |
| </div> | |
| <div class="flex space-x-6"> | |
| <a href="#" class="social-link"> | |
| <i data-feather="github" class="w-5 h-5"></i> | |
| </a> | |
| <a href="#" class="social-link"> | |
| <i data-feather="twitter" class="w-5 h-5"></i> | |
| </a> | |
| <a href="#" class="social-link"> | |
| <i data-feather="linkedin" class="w-5 h-5"></i> | |
| </a> | |
| <a href="#" class="social-link"> | |
| <i data-feather="mail" class="w-5 h-5"></i> | |
| </a> | |
| </div> | |
| </div> | |
| <div class="mt-8 pt-8 border-t border-gray-800 text-sm text-center"> | |
| <p>© ${new Date().getFullYear()} TerrainGen Explorer. All rights reserved.</p> | |
| </div> | |
| </div> | |
| </footer> | |
| `; | |
| } | |
| } | |
| customElements.define('custom-footer', CustomFooter); |