saeidmp's picture
fully vibe coder
a866b8e verified
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);