| class CustomFooter extends HTMLElement { | |
| connectedCallback() { | |
| this.attachShadow({ mode: 'open' }); | |
| this.shadowRoot.innerHTML = ` | |
| <style> | |
| .footer-link:hover { | |
| @apply text-primary-500 dark:text-primary-400; | |
| } | |
| </style> | |
| <footer class="bg-white dark:bg-gray-800 border-t border-gray-200 dark:border-gray-700 py-8 mt-12"> | |
| <div class="container mx-auto px-4"> | |
| <div class="grid grid-cols-1 md:grid-cols-4 gap-8"> | |
| <div> | |
| <h3 class="text-lg font-semibold text-gray-800 dark:text-white mb-4">NodeNest</h3> | |
| <p class="text-gray-600 dark:text-gray-400 mb-4">Simple yet powerful Node.js hosting control panel.</p> | |
| <div class="flex space-x-4"> | |
| <a href="#" class="text-gray-500 hover:text-primary-500 dark:hover:text-primary-400"> | |
| <i data-feather="github" class="w-5 h-5"></i> | |
| </a> | |
| <a href="#" class="text-gray-500 hover:text-primary-500 dark:hover:text-primary-400"> | |
| <i data-feather="twitter" class="w-5 h-5"></i> | |
| </a> | |
| <a href="#" class="text-gray-500 hover:text-primary-500 dark:hover:text-primary-400"> | |
| <i data-feather="discord" class="w-5 h-5"></i> | |
| </a> | |
| </div> | |
| </div> | |
| <div> | |
| <h3 class="text-lg font-semibold text-gray-800 dark:text-white mb-4">Product</h3> | |
| <ul class="space-y-2"> | |
| <li><a href="#" class="footer-link text-gray-600 dark:text-gray-400 hover:underline">Features</a></li> | |
| <li><a href="#" class="footer-link text-gray-600 dark:text-gray-400 hover:underline">Pricing</a></li> | |
| <li><a href="#" class="footer-link text-gray-600 dark:text-gray-400 hover:underline">Documentation</a></li> | |
| <li><a href="#" class="footer-link text-gray-600 dark:text-gray-400 hover:underline">Changelog</a></li> | |
| </ul> | |
| </div> | |
| <div> | |
| <h3 class="text-lg font-semibold text-gray-800 dark:text-white mb-4">Support</h3> | |
| <ul class="space-y-2"> | |
| <li><a href="#" class="footer-link text-gray-600 dark:text-gray-400 hover:underline">Help Center</a></li> | |
| <li><a href="#" class="footer-link text-gray-600 dark:text-gray-400 hover:underline">Community</a></li> | |
| <li><a href="#" class="footer-link text-gray-600 dark:text-gray-400 hover:underline">Status</a></li> | |
| <li><a href="#" class="footer-link text-gray-600 dark:text-gray-400 hover:underline">Contact Us</a></li> | |
| </ul> | |
| </div> | |
| <div> | |
| <h3 class="text-lg font-semibold text-gray-800 dark:text-white mb-4">Legal</h3> | |
| <ul class="space-y-2"> | |
| <li><a href="#" class="footer-link text-gray-600 dark:text-gray-400 hover:underline">Privacy Policy</a></li> | |
| <li><a href="#" class="footer-link text-gray-600 dark:text-gray-400 hover:underline">Terms of Service</a></li> | |
| <li><a href="#" class="footer-link text-gray-600 dark:text-gray-400 hover:underline">Security</a></li> | |
| <li><a href="#" class="footer-link text-gray-600 dark:text-gray-400 hover:underline">Cookies</a></li> | |
| </ul> | |
| </div> | |
| </div> | |
| <div class="mt-8 pt-6 border-t border-gray-200 dark:border-gray-700 text-center text-gray-500 dark:text-gray-400 text-sm"> | |
| <p>© ${new Date().getFullYear()} NodeNest. All rights reserved.</p> | |
| </div> | |
| </div> | |
| </footer> | |
| `; | |
| } | |
| } | |
| customElements.define('custom-footer', CustomFooter); |