c'est presque parfai tmasi ces tpas encore le cas
Browse files- components/navbar.js +14 -3
- index.html +10 -9
- script.js +26 -5
- style.css +22 -2
components/navbar.js
CHANGED
|
@@ -41,14 +41,25 @@ class CustomNavbar extends HTMLElement {
|
|
| 41 |
<a href="#signup" class="bg-primary-500 hover:bg-primary-600 text-white px-4 py-2 rounded-lg font-medium transition-colors">
|
| 42 |
Get Started
|
| 43 |
</a>
|
| 44 |
-
<button class="md:hidden text-neutral-300">
|
| 45 |
<i data-feather="menu"></i>
|
| 46 |
</button>
|
| 47 |
-
|
| 48 |
</div>
|
| 49 |
</nav>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 50 |
`;
|
| 51 |
-
|
| 52 |
}
|
| 53 |
|
| 54 |
customElements.define('custom-navbar', CustomNavbar);
|
|
|
|
| 41 |
<a href="#signup" class="bg-primary-500 hover:bg-primary-600 text-white px-4 py-2 rounded-lg font-medium transition-colors">
|
| 42 |
Get Started
|
| 43 |
</a>
|
| 44 |
+
<button class="md:hidden text-neutral-300" aria-label="Toggle menu" aria-controls="mobile-menu" aria-expanded="false">
|
| 45 |
<i data-feather="menu"></i>
|
| 46 |
</button>
|
| 47 |
+
</div>
|
| 48 |
</div>
|
| 49 |
</nav>
|
| 50 |
+
|
| 51 |
+
<!-- Mobile menu -->
|
| 52 |
+
<div id="mobile-menu" class="hidden md:hidden bg-neutral-800 border-t border-neutral-700 px-4 py-2">
|
| 53 |
+
<div class="flex flex-col gap-3">
|
| 54 |
+
<a href="#features" class="nav-link text-neutral-300 hover:text-primary-400 px-3 py-2">Features</a>
|
| 55 |
+
<a href="#how-it-works" class="nav-link text-neutral-300 hover:text-primary-400 px-3 py-2">How It Works</a>
|
| 56 |
+
<a href="#pricing" class="nav-link text-neutral-300 hover:text-primary-400 px-3 py-2">Pricing</a>
|
| 57 |
+
<a href="#demo" class="nav-link text-neutral-300 hover:text-primary-400 px-3 py-2">Demo</a>
|
| 58 |
+
<a href="#login" class="nav-link text-neutral-300 hover:text-primary-400 px-3 py-2">Log In</a>
|
| 59 |
+
</div>
|
| 60 |
+
</div>
|
| 61 |
`;
|
| 62 |
+
}
|
| 63 |
}
|
| 64 |
|
| 65 |
customElements.define('custom-navbar', CustomNavbar);
|
index.html
CHANGED
|
@@ -5,9 +5,8 @@
|
|
| 5 |
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 6 |
<title>RecoFuchsia - AI Recommendations Engine</title>
|
| 7 |
<script src="https://cdn.tailwindcss.com"></script>
|
| 8 |
-
<script src="https://unpkg.com/feather-icons"></script>
|
| 9 |
<script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
|
| 10 |
-
|
| 11 |
<script>
|
| 12 |
tailwind.config = {
|
| 13 |
theme: {
|
|
@@ -48,15 +47,15 @@
|
|
| 48 |
<p class="text-neutral-400 text-lg mb-8 max-w-lg">
|
| 49 |
Our fuchsia-powered AI engine analyzes user behavior to deliver hyper-relevant recommendations that increase engagement and sales.
|
| 50 |
</p>
|
| 51 |
-
<div class="flex gap-4">
|
| 52 |
-
<a href="#demo" class="bg-primary-500 hover:bg-primary-600 text-white px-6 py-3 rounded-lg font-medium transition-colors">
|
| 53 |
Request Demo
|
| 54 |
</a>
|
| 55 |
-
<a href="#how-it-works" class="border border-neutral-700 hover:border-neutral-600 text-neutral-300 px-6 py-3 rounded-lg font-medium transition-colors">
|
| 56 |
How It Works
|
| 57 |
</a>
|
| 58 |
</div>
|
| 59 |
-
|
| 60 |
<div class="relative">
|
| 61 |
<div class="absolute -top-8 -left-8 w-64 h-64 rounded-full bg-primary-900 opacity-20 blur-3xl"></div>
|
| 62 |
<div class="relative bg-neutral-800 border border-neutral-700 rounded-2xl p-6 shadow-xl">
|
|
@@ -155,10 +154,12 @@
|
|
| 155 |
|
| 156 |
<script src="components/navbar.js"></script>
|
| 157 |
<script src="components/footer.js"></script>
|
| 158 |
-
<script src="script.js"></script>
|
| 159 |
-
|
| 160 |
feather.replace();
|
|
|
|
|
|
|
|
|
|
| 161 |
</script>
|
| 162 |
-
<script src="https://huggingface.co/deepsite/deepsite-badge.js"></script>
|
| 163 |
</body>
|
| 164 |
</html>
|
|
|
|
| 5 |
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 6 |
<title>RecoFuchsia - AI Recommendations Engine</title>
|
| 7 |
<script src="https://cdn.tailwindcss.com"></script>
|
|
|
|
| 8 |
<script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
|
| 9 |
+
<link rel="stylesheet" href="style.css">
|
| 10 |
<script>
|
| 11 |
tailwind.config = {
|
| 12 |
theme: {
|
|
|
|
| 47 |
<p class="text-neutral-400 text-lg mb-8 max-w-lg">
|
| 48 |
Our fuchsia-powered AI engine analyzes user behavior to deliver hyper-relevant recommendations that increase engagement and sales.
|
| 49 |
</p>
|
| 50 |
+
<div class="flex flex-wrap gap-4">
|
| 51 |
+
<a href="#demo" class="bg-primary-500 hover:bg-primary-600 text-white px-6 py-3 rounded-lg font-medium transition-colors whitespace-nowrap">
|
| 52 |
Request Demo
|
| 53 |
</a>
|
| 54 |
+
<a href="#how-it-works" class="border border-neutral-700 hover:border-neutral-600 text-neutral-300 px-6 py-3 rounded-lg font-medium transition-colors whitespace-nowrap">
|
| 55 |
How It Works
|
| 56 |
</a>
|
| 57 |
</div>
|
| 58 |
+
</div>
|
| 59 |
<div class="relative">
|
| 60 |
<div class="absolute -top-8 -left-8 w-64 h-64 rounded-full bg-primary-900 opacity-20 blur-3xl"></div>
|
| 61 |
<div class="relative bg-neutral-800 border border-neutral-700 rounded-2xl p-6 shadow-xl">
|
|
|
|
| 154 |
|
| 155 |
<script src="components/navbar.js"></script>
|
| 156 |
<script src="components/footer.js"></script>
|
| 157 |
+
<script src="script.js" defer></script>
|
| 158 |
+
<script>
|
| 159 |
feather.replace();
|
| 160 |
+
document.addEventListener('DOMContentLoaded', function() {
|
| 161 |
+
// Initialize any needed JavaScript here
|
| 162 |
+
});
|
| 163 |
</script>
|
|
|
|
| 164 |
</body>
|
| 165 |
</html>
|
script.js
CHANGED
|
@@ -7,16 +7,37 @@ document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
|
| 7 |
});
|
| 8 |
});
|
| 9 |
});
|
| 10 |
-
|
| 11 |
// Intersection Observer for animations
|
| 12 |
const observer = new IntersectionObserver((entries) => {
|
| 13 |
entries.forEach(entry => {
|
| 14 |
if (entry.isIntersecting) {
|
| 15 |
entry.target.classList.add('animate-fadeIn');
|
|
|
|
| 16 |
}
|
| 17 |
});
|
| 18 |
-
}, {
|
| 19 |
-
|
| 20 |
-
|
|
|
|
|
|
|
| 21 |
observer.observe(el);
|
| 22 |
-
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 7 |
});
|
| 8 |
});
|
| 9 |
});
|
|
|
|
| 10 |
// Intersection Observer for animations
|
| 11 |
const observer = new IntersectionObserver((entries) => {
|
| 12 |
entries.forEach(entry => {
|
| 13 |
if (entry.isIntersecting) {
|
| 14 |
entry.target.classList.add('animate-fadeIn');
|
| 15 |
+
observer.unobserve(entry.target);
|
| 16 |
}
|
| 17 |
});
|
| 18 |
+
}, {
|
| 19 |
+
threshold: 0.1,
|
| 20 |
+
rootMargin: '0px 0px -100px 0px'
|
| 21 |
+
});
|
| 22 |
+
document.querySelectorAll('[class*="animate-"]').forEach(el => {
|
| 23 |
observer.observe(el);
|
| 24 |
+
});
|
| 25 |
+
|
| 26 |
+
// Better mobile menu toggle (for future implementation)
|
| 27 |
+
function setupMobileMenu() {
|
| 28 |
+
const menuButton = document.querySelector('[aria-controls="mobile-menu"]');
|
| 29 |
+
if (menuButton) {
|
| 30 |
+
const menu = document.getElementById('mobile-menu');
|
| 31 |
+
menuButton.addEventListener('click', () => {
|
| 32 |
+
const expanded = menuButton.getAttribute('aria-expanded') === 'true';
|
| 33 |
+
menuButton.setAttribute('aria-expanded', !expanded);
|
| 34 |
+
menu.classList.toggle('hidden');
|
| 35 |
+
});
|
| 36 |
+
}
|
| 37 |
+
}
|
| 38 |
+
|
| 39 |
+
// Initialize when DOM is loaded
|
| 40 |
+
document.addEventListener('DOMContentLoaded', () => {
|
| 41 |
+
setupMobileMenu();
|
| 42 |
+
feather.replace();
|
| 43 |
+
});
|
style.css
CHANGED
|
@@ -22,7 +22,6 @@ body {
|
|
| 22 |
::-webkit-scrollbar-thumb:hover {
|
| 23 |
background: #c026d3;
|
| 24 |
}
|
| 25 |
-
|
| 26 |
/* Animation for hover effects */
|
| 27 |
.hover-scale {
|
| 28 |
transition: transform 0.2s ease;
|
|
@@ -30,4 +29,25 @@ body {
|
|
| 30 |
|
| 31 |
.hover-scale:hover {
|
| 32 |
transform: translateY(-2px);
|
| 33 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 22 |
::-webkit-scrollbar-thumb:hover {
|
| 23 |
background: #c026d3;
|
| 24 |
}
|
|
|
|
| 25 |
/* Animation for hover effects */
|
| 26 |
.hover-scale {
|
| 27 |
transition: transform 0.2s ease;
|
|
|
|
| 29 |
|
| 30 |
.hover-scale:hover {
|
| 31 |
transform: translateY(-2px);
|
| 32 |
+
}
|
| 33 |
+
|
| 34 |
+
/* Better focus styles */
|
| 35 |
+
:focus {
|
| 36 |
+
outline: 2px solid #d946ef;
|
| 37 |
+
outline-offset: 2px;
|
| 38 |
+
}
|
| 39 |
+
|
| 40 |
+
/* Responsive improvements */
|
| 41 |
+
@media (max-width: 640px) {
|
| 42 |
+
.hero-section {
|
| 43 |
+
flex-direction: column-reverse;
|
| 44 |
+
}
|
| 45 |
+
|
| 46 |
+
.hero-content {
|
| 47 |
+
text-align: center;
|
| 48 |
+
}
|
| 49 |
+
|
| 50 |
+
.hero-buttons {
|
| 51 |
+
justify-content: center;
|
| 52 |
+
}
|
| 53 |
+
}
|