docvortex / components /navbar.js
Gamehak's picture
juste c'est une documentation arduino pas documentation personnele pour le code donc refait et une narbard en haux pour aller dans le code
df8502b verified
class DocNavbar extends HTMLElement {
connectedCallback() {
this.attachShadow({ mode: 'open' });
this.shadowRoot.innerHTML = `
<style>
:host {
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 1000;
}
nav {
background: rgba(17, 24, 39, 0.8);
backdrop-filter: blur(10px);
-webkit-backdrop-filter: blur(10px);
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
transition: all 0.3s ease;
}
.nav-wrapper {
max-width: 7xl;
margin: 0 auto;
padding: 1rem 2rem;
display: flex;
justify-content: space-between;
align-items: center;
}
.logo {
display: flex;
align-items: center;
gap: 0.75rem;
font-size: 1.5rem;
font-weight: bold;
background: linear-gradient(to right, #06b6d4, #8b5cf6);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
text-decoration: none;
transition: all 0.3s ease;
}
.logo:hover {
transform: scale(1.05);
}
.nav-links {
display: flex;
gap: 2rem;
align-items: center;
}
.nav-link {
color: #d1d5db;
text-decoration: none;
transition: all 0.3s ease;
position: relative;
}
.nav-link:hover {
color: #06b6d4;
}
.nav-link::after {
content: '';
position: absolute;
bottom: -4px;
left: 0;
width: 0;
height: 2px;
background: linear-gradient(to right, #06b6d4, #8b5cf6);
transition: width 0.3s ease;
}
.nav-link:hover::after {
width: 100%;
}
.cta-button {
background: linear-gradient(to right, #06b6d4, #8b5cf6);
color: white;
padding: 0.75rem 1.5rem;
border-radius: 9999px;
text-decoration: none;
font-weight: 600;
transition: all 0.3s ease;
}
.cta-button:hover {
transform: translateY(-2px);
box-shadow: 0 10px 20px rgba(6, 182, 212, 0.3);
}
.mobile-menu-toggle {
display: none;
background: none;
border: none;
color: white;
cursor: pointer;
padding: 0.5rem;
}
.mobile-menu {
display: none;
position: absolute;
top: 100%;
left: 0;
right: 0;
background: rgba(17, 24, 39, 0.95);
backdrop-filter: blur(10px);
-webkit-backdrop-filter: blur(10px);
padding: 2rem;
gap: 1.5rem;
flex-direction: column;
}
.mobile-menu.active {
display: flex;
}
@media (max-width: 768px) {
.nav-links {
display: none;
}
.mobile-menu-toggle {
display: block;
}
}
</style>
<nav>
<div class="nav-wrapper">
<a href="/" class="logo">
<i data-feather="cpu"></i>
Arduino DocVortex
</a>
<div class="nav-links">
<a href="#boards" class="nav-link">Boards</a>
<a href="code.html" class="nav-link">Code Reference</a>
<a href="#tutorials" class="nav-link">Tutorials</a>
<a href="#libraries" class="nav-link">Libraries</a>
<a href="code.html" class="cta-button">Get Started</a>
</div>
<button class="mobile-menu-toggle" data-mobile-menu-toggle>
<i data-feather="menu" class="w-6 h-6"></i>
</button>
</div>
<div class="mobile-menu" data-mobile-menu>
<a href="#boards" class="nav-link">Boards</a>
<a href="code.html" class="nav-link">Code Reference</a>
<a href="#tutorials" class="nav-link">Tutorials</a>
<a href="#libraries" class="nav-link">Libraries</a>
<a href="code.html" class="cta-button">Get Started</a>
</div>
</nav>
`;
// Add mobile menu toggle functionality
setTimeout(() => {
const toggle = this.shadowRoot.querySelector('[data-mobile-menu-toggle]');
const menu = this.shadowRoot.querySelector('[data-mobile-menu]');
if (toggle && menu) {
toggle.addEventListener('click', () => {
menu.classList.toggle('active');
});
}
// Replace feather icons
if (typeof feather !== 'undefined') {
feather.replace({
'stroke-width': 2,
'height': 24,
'width': 24
});
}
}, 100);
// Add scroll effect
window.addEventListener('scroll', () => {
const nav = this.shadowRoot.querySelector('nav');
if (window.scrollY > 50) {
nav.style.background = 'rgba(17, 24, 39, 0.95)';
nav.style.boxShadow = '0 4px 20px rgba(0, 0, 0, 0.3)';
} else {
nav.style.background = 'rgba(17, 24, 39, 0.8)';
nav.style.boxShadow = 'none';
}
});
}
}
customElements.define('doc-navbar', DocNavbar);