| class CustomHero extends HTMLElement { | |
| connectedCallback() { | |
| this.attachShadow({ mode: 'open' }); | |
| this.shadowRoot.innerHTML = ` | |
| <style> | |
| :host { | |
| display: block; | |
| background: linear-gradient(135deg, #ff6b6b 0%, #4ecdc4 50%, #45b7d1 100%); | |
| background-size: 200% 200%; | |
| animation: gradient-shift 3s ease infinite; | |
| color: white; | |
| padding: 6rem 2rem; | |
| text-align: center; | |
| } | |
| @keyframes gradient-shift { | |
| 0% { background-position: 0% 50%; } | |
| 50% { background-position: 100% 50%; } | |
| 100% { background-position: 0% 50%; } | |
| } | |
| .hero-container { | |
| max-width: 1280px; | |
| margin: 0 auto; | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| gap: 2rem; | |
| } | |
| h1 { | |
| font-size: 4rem; | |
| font-weight: 800; | |
| line-height: 1; | |
| margin-bottom: 1rem; | |
| } | |
| .subtitle { | |
| font-size: 1.25rem; | |
| max-width: 600px; | |
| margin-bottom: 2rem; | |
| opacity: 0.9; | |
| } | |
| .typewriter { | |
| color: #fbbf24; | |
| font-weight: 700; | |
| } | |
| .buttons { | |
| display: flex; | |
| gap: 1rem; | |
| margin-top: 2rem; | |
| } | |
| .primary-button { | |
| background-color: white; | |
| color: #6366f1; | |
| padding: 0.75rem 2rem; | |
| border-radius: 0.5rem; | |
| font-weight: 600; | |
| transition: all 0.2s; | |
| } | |
| .primary-button:hover { | |
| transform: translateY(-2px); | |
| box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1); | |
| } | |
| .secondary-button { | |
| background-color: transparent; | |
| color: white; | |
| padding: 0.75rem 2rem; | |
| border-radius: 0.5rem; | |
| font-weight: 600; | |
| border: 2px solid rgba(255, 255, 255, 0.3); | |
| transition: all 0.2s; | |
| } | |
| .secondary-button:hover { | |
| background-color: rgba(255, 255, 255, 0.1); | |
| transform: translateY(-2px); | |
| } | |
| @media (max-width: 768px) { | |
| h1 { | |
| font-size: 3rem; | |
| } | |
| } | |
| </style> | |
| <div class="hero-container"> | |
| <h1> | |
| <span class="gradient-text">CodeVibes</span> - Where Devs Groove | |
| </h1> | |
| <p class="subtitle"> | |
| Drop the beat, code the heat. Where every line of code is a verse and every commit is a chorus. 🎶 | |
| </p> | |
| <div class="buttons"> | |
| <a href="#" class="primary-button"> | |
| 🎵 Start Vibe Coding | |
| </a> | |
| <a href="#" class="secondary-button"> | |
| 🎸 Jam Session Demo | |
| </a> | |
| </div> | |
| </div> | |
| `; | |
| } | |
| } | |
| customElements.define('custom-hero', CustomHero); |