Spaces:
Running
Running
| class CustomFooter extends HTMLElement { | |
| connectedCallback() { | |
| this.attachShadow({ mode: 'open' }); | |
| this.shadowRoot.innerHTML = ` | |
| <style> | |
| * { | |
| margin: 0; | |
| padding: 0; | |
| box-sizing: border-box; | |
| } | |
| footer { | |
| background: #0f172a; | |
| border-top: 1px solid #1e293b; | |
| padding: 4rem 0 2rem; | |
| } | |
| .footer-container { | |
| max-width: 1280px; | |
| margin: 0 auto; | |
| padding: 0 1.5rem; | |
| } | |
| .footer-grid { | |
| display: grid; | |
| grid-template-columns: 2fr 1fr 1fr 1fr 2fr; | |
| gap: 3rem; | |
| margin-bottom: 3rem; | |
| } | |
| .footer-brand h3 { | |
| font-size: 1.5rem; | |
| font-weight: 800; | |
| background: linear-gradient(135deg, #2563eb, #06b6d4); | |
| -webkit-background-clip: text; | |
| -webkit-text-fill-color: transparent; | |
| background-clip: text; | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| margin-bottom: 1rem; | |
| } | |
| .footer-brand p { | |
| color: #94a3b8; | |
| line-height: 1.6; | |
| margin-bottom: 1.5rem; | |
| } | |
| .social-links { | |
| display: flex; | |
| gap: 1rem; | |
| } | |
| .social-link { | |
| width: 40px; | |
| height: 40px; | |
| background: rgba(255, 255, 255, 0.05); | |
| border: 1px solid rgba(255, 255, 255, 0.1); | |
| border-radius: 50%; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| color: #94a3b8; | |
| text-decoration: none; | |
| transition: all 0.3s ease; | |
| } | |
| .social-link:hover { | |
| background: linear-gradient(135deg, #2563eb, #06b6d4); | |
| color: white; | |
| transform: translateY(-3px); | |
| } | |
| .footer-column h4 { | |
| color: white; | |
| font-size: 1rem; | |
| font-weight: 600; | |
| margin-bottom: 1rem; | |
| } | |
| .footer-links { | |
| list-style: none; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 0.75rem; | |
| } | |
| .footer-links a { | |
| color: #94a3b8; | |
| text-decoration: none; | |
| transition: color 0.3s ease; | |
| } | |
| .footer-links a:hover { | |
| color: #06b6d4; | |
| } | |
| .newsletter-form { | |
| display: flex; | |
| gap: 0.5rem; | |
| margin-top: 1rem; | |
| } | |
| .newsletter-input { | |
| flex: 1; | |
| background: rgba(255, 255, 255, 0.05); | |
| border: 1px solid rgba(255, 255, 255, 0.1); | |
| border-radius: 0.5rem; | |
| padding: 0.75rem; | |
| color: white; | |
| font-size: 0.875rem; | |
| } | |
| .newsletter-input::placeholder { | |
| color: #64748b; | |
| } | |
| .newsletter-input:focus { | |
| outline: none; | |
| border-color: #06b6d4; | |
| box-shadow: 0 0 0 3px rgba(6, 182, 212, 0.1); | |
| } | |
| .newsletter-btn { | |
| background: linear-gradient(135deg, #2563eb, #06b6d4); | |
| color: white; | |
| border: none; | |
| border-radius: 0.5rem; | |
| padding: 0.75rem 1.5rem; | |
| font-weight: 600; | |
| cursor: pointer; | |
| transition: all 0.3s ease; | |
| } | |
| .newsletter-btn:hover { | |
| transform: translateY(-2px); | |
| box-shadow: 0 4px 12px rgba(6, 182, 212, 0.3); | |
| } | |
| .footer-bottom { | |
| padding-top: 2rem; | |
| border-top: 1px solid #1e293b; | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| flex-wrap: wrap; | |
| gap: 1rem; | |
| } | |
| .copyright { | |
| color: #64748b; | |
| font-size: 0.875rem; | |
| } | |
| .legal-links { | |
| display: flex; | |
| gap: 1.5rem; | |
| list-style: none; | |
| } | |
| .legal-links a { | |
| color: #64748b; | |
| text-decoration: none; | |
| font-size: 0.875rem; | |
| transition: color 0.3s ease; | |
| } | |
| .legal-links a:hover { | |
| color: #06b6d4; | |
| } | |
| @media (max-width: 1024px) { | |
| .footer-grid { | |
| grid-template-columns: 1fr 1fr; | |
| gap: 2rem; | |
| } | |
| .footer-brand, | |
| .footer-column:nth-child(5) { | |
| grid-column: span 2; | |
| } | |
| } | |
| @media (max-width: 640px) { | |
| .footer-grid { | |
| grid-template-columns: 1fr; | |
| } | |
| .footer-brand, | |
| .footer-column { | |
| grid-column: span 1; | |
| } | |
| .footer-bottom { | |
| flex-direction: column; | |
| text-align: center; | |
| } | |
| .legal-links { | |
| justify-content: center; | |
| } | |
| } | |
| </style> | |
| <footer> | |
| <div class="footer-container"> | |
| <div class="footer-grid"> | |
| <div class="footer-brand"> | |
| <h3>🚀 Deployr</h3> | |
| <p>Transforming businesses with cutting-edge AI and data solutions. Your trusted partner in digital innovation.</p> | |
| <div class="social-links"> | |
| <a href="#" class="social-link" aria-label="Twitter"> | |
| <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"> | |
| <path d="M23 3a10.9 10.9 0 01-3.14 1.53 4.48 4.48 0 00-7.86 3v1A10.66 10.66 0 013 4s-4 9 5 13a11.64 11.64 0 01-7 2c9 5 20 0 20-11.5a4.5 4.5 0 00-.08-.83A7.72 7.72 0 0023 3z"></path> | |
| </svg> | |
| </a> | |
| <a href="#" class="social-link" aria-label="LinkedIn"> | |
| <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"> | |
| <path d="M16 8a6 6 0 016 6v7h-4v-7a2 2 0 00-2-2 2 2 0 00-2 2v7h-4v-7a6 6 0 016-6zM2 9h4v12H2z"></path> | |
| <circle cx="4" cy="4" r="2"></circle> | |
| </svg> | |
| </a> | |
| <a href="#" class="social-link" aria-label="GitHub"> | |
| <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"> | |
| <path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"/> | |
| </svg> | |
| </a> | |
| </div> | |
| </div> | |
| <div class="footer-column"> | |
| <h4>Services</h4> | |
| <ul class="footer-links"> | |
| <li><a href="#">Machine Learning</a></li> | |
| <li><a href="#">Data Engineering</a></li> | |
| <li><a href="#">AI Strategy</a></li> | |
| <li><a href="#">Computer Vision</a></li> | |
| <li><a href="#">NLP Solutions</a></li> | |
| </ul> | |
| </div> | |
| <div class="footer-column"> | |
| <h4>Company</h4> | |
| <ul class="footer-links"> | |
| <li><a href="#">About Us</a></li> | |
| <li><a href="#">Our Team</a></li> | |
| <li><a href="#">Careers</a></li> | |
| <li><a href="#">Partners</a></li> | |
| <li><a href="#">Press</a></li> | |
| </ul> | |
| </div> | |
| <div class="footer-column"> | |
| <h4>Resources</h4> | |
| <ul class="footer-links"> | |
| <li><a href="#">Blog</a></li> | |
| <li><a href="#">Case Studies</a></li> | |
| <li><a href="#">Whitepapers</a></li> | |
| <li><a href="#">Documentation</a></li> | |
| <li><a href="#">API Reference</a></li> | |
| </ul> | |
| </div> | |
| <div class="footer-column"> | |
| <h4>Newsletter</h4> | |
| <p style="color: #94a3b8; font-size: 0.875rem; margin-bottom: 0.5rem;"> | |
| Stay updated with the latest AI trends and insights | |
| </p> | |
| <form class="newsletter-form" onsubmit="handleNewsletter(event)"> | |
| <input type="email" placeholder="Enter your email" class="newsletter-input" required> | |
| <button type="submit" class="newsletter-btn">Subscribe</button> | |
| </form> | |
| </div> | |
| </div> | |
| <div class="footer-bottom"> | |
| <div class="copyright"> | |
| © 2024 Deployr. All rights reserved. | |
| </div> | |
| <ul class="legal-links"> | |
| <li><a href="#">Privacy Policy</a></li> | |
| <li><a href="#">Terms of Service</a></li> | |
| <li><a href="#">Cookie Policy</a></li> | |
| </ul> | |
| </div> | |
| </div> | |
| </footer> | |
| `; | |
| } | |
| } | |
| customElements.define('custom-footer', CustomFooter); | |
| // Newsletter handler (global function) | |
| function handleNewsletter(event) { | |
| event.preventDefault(); | |
| const form = event.target; | |
| const email = form.querySelector('input[type="email"]').value; | |
| // Here you would typically send the email to your backend | |
| console.log('Newsletter subscription:', email); | |
| // Show success feedback | |
| const button = form.querySelector('button'); | |
| const originalText = button.textContent; | |
| button.textContent = 'Subscribed!'; | |
| button.style.background = '#10b981'; | |
| setTimeout(() => { | |
| button.textContent = originalText; | |
| button.style.background = ''; | |
| form.reset(); | |
| }, 2000); | |
| } |