can you put some next.js?
Browse files- app/components/footer.js +43 -0
- app/components/navbar.js +20 -0
- app/layout.js +33 -0
- app/page.js +28 -0
- next.config.js +12 -0
- script.js +16 -23
- style.css +33 -14
app/components/footer.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
export default function Footer() {
|
| 2 |
+
return (
|
| 3 |
+
<footer className="bg-gray-900 text-white py-12 px-4 border-t border-gray-800">
|
| 4 |
+
<div className="max-w-6xl mx-auto grid grid-cols-1 md:grid-cols-3 gap-8">
|
| 5 |
+
<div>
|
| 6 |
+
<h3 className="text-teal-400 text-xl mb-4">Sysmotix</h3>
|
| 7 |
+
<p className="mb-4">Quebec's premier AI automation consultancy helping SMEs scale intelligently.</p>
|
| 8 |
+
<div className="flex space-x-4">
|
| 9 |
+
<a href="#" className="text-white hover:text-teal-400">
|
| 10 |
+
<i data-feather="linkedin"></i>
|
| 11 |
+
</a>
|
| 12 |
+
<a href="#" className="text-white hover:text-teal-400">
|
| 13 |
+
<i data-feather="twitter"></i>
|
| 14 |
+
</a>
|
| 15 |
+
<a href="#" className="text-white hover:text-teal-400">
|
| 16 |
+
<i data-feather="facebook"></i>
|
| 17 |
+
</a>
|
| 18 |
+
</div>
|
| 19 |
+
</div>
|
| 20 |
+
<div>
|
| 21 |
+
<h3 className="text-teal-400 text-xl mb-4">Quick Links</h3>
|
| 22 |
+
<ul>
|
| 23 |
+
<li><a href="#solutions" className="hover:text-teal-400">Solutions</a></li>
|
| 24 |
+
<li><a href="#process" className="hover:text-teal-400">Process</a></li>
|
| 25 |
+
<li><a href="#technology" className="hover:text-teal-400">Technology</a></li>
|
| 26 |
+
<li><a href="#results" className="hover:text-teal-400">Results</a></li>
|
| 27 |
+
</ul>
|
| 28 |
+
</div>
|
| 29 |
+
<div>
|
| 30 |
+
<h3 className="text-teal-400 text-xl mb-4">Contact</h3>
|
| 31 |
+
<ul>
|
| 32 |
+
<li><a href="mailto:[email protected]" className="hover:text-teal-400">[email protected]</a></li>
|
| 33 |
+
<li><a href="tel:+15145551234" className="hover:text-teal-400">+1 (514) 555-1234</a></li>
|
| 34 |
+
<li>Montreal, Quebec</li>
|
| 35 |
+
</ul>
|
| 36 |
+
</div>
|
| 37 |
+
</div>
|
| 38 |
+
<div className="max-w-6xl mx-auto mt-8 pt-8 border-t border-gray-800 text-sm text-gray-400">
|
| 39 |
+
© {new Date().getFullYear()} Sysmotix. All rights reserved.
|
| 40 |
+
</div>
|
| 41 |
+
</footer>
|
| 42 |
+
)
|
| 43 |
+
}
|
app/components/navbar.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
'use client'
|
| 2 |
+
|
| 3 |
+
export default function Navbar() {
|
| 4 |
+
return (
|
| 5 |
+
<nav className="bg-gray-800/80 backdrop-blur-md p-6 fixed w-full top-0 z-50 border-b border-gray-700">
|
| 6 |
+
<div className="flex justify-between items-center max-w-6xl mx-auto">
|
| 7 |
+
<div className="text-white font-bold text-xl">
|
| 8 |
+
<span className="text-teal-400">Sysmotix</span>
|
| 9 |
+
</div>
|
| 10 |
+
<ul className="flex space-x-8">
|
| 11 |
+
<li><a href="#solutions" className="text-white hover:text-teal-400 transition-colors">Solutions</a></li>
|
| 12 |
+
<li><a href="#process" className="text-white hover:text-teal-400 transition-colors">Process</a></li>
|
| 13 |
+
<li><a href="#technology" className="text-white hover:text-teal-400 transition-colors">Technology</a></li>
|
| 14 |
+
<li><a href="#results" className="text-white hover:text-teal-400 transition-colors">Results</a></li>
|
| 15 |
+
<li><a href="#" className="bg-teal-400 hover:bg-teal-300 text-slate-900 px-4 py-2 rounded-full font-semibold transition-all">Contact Us</a></li>
|
| 16 |
+
</ul>
|
| 17 |
+
</div>
|
| 18 |
+
</nav>
|
| 19 |
+
)
|
| 20 |
+
}
|
app/layout.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import './globals.css'
|
| 2 |
+
import Head from 'next/head'
|
| 3 |
+
|
| 4 |
+
export default function RootLayout({ children }) {
|
| 5 |
+
return (
|
| 6 |
+
<html lang="en">
|
| 7 |
+
<Head>
|
| 8 |
+
<script src="https://cdn.tailwindcss.com"></script>
|
| 9 |
+
<script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
|
| 10 |
+
<script src="https://unpkg.com/feather-icons"></script>
|
| 11 |
+
<script src="https://cdn.jsdelivr.net/npm/vanta@latest/dist/vanta.net.min.js"></script>
|
| 12 |
+
</Head>
|
| 13 |
+
<body className="text-white">
|
| 14 |
+
<div id="vanta-background" className="vanta-background"></div>
|
| 15 |
+
{children}
|
| 16 |
+
<script src="/components/navbar.js"></script>
|
| 17 |
+
<script src="/components/footer.js"></script>
|
| 18 |
+
<script src="/script.js"></script>
|
| 19 |
+
<script dangerouslySetInnerHTML={{__html: `
|
| 20 |
+
feather.replace();
|
| 21 |
+
VANTA.NET({
|
| 22 |
+
el: "#vanta-background",
|
| 23 |
+
color: 0x102A43,
|
| 24 |
+
backgroundColor: 0x010A13,
|
| 25 |
+
points: 12,
|
| 26 |
+
maxDistance: 20,
|
| 27 |
+
spacing: 15
|
| 28 |
+
});
|
| 29 |
+
`}}></script>
|
| 30 |
+
</body>
|
| 31 |
+
</html>
|
| 32 |
+
)
|
| 33 |
+
}
|
app/page.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import './style.css'
|
| 2 |
+
|
| 3 |
+
export default function Home() {
|
| 4 |
+
return (
|
| 5 |
+
<main className="container mx-auto px-4 py-12 max-w-6xl bg-opacity-90 bg-slate-900 rounded-xl shadow-2xl">
|
| 6 |
+
{/* Hero Section */}
|
| 7 |
+
<section className="text-center py-20">
|
| 8 |
+
<h1 className="text-5xl font-bold mb-6">Transform Your Business with <span className="text-teal-400">AI Automation</span></h1>
|
| 9 |
+
<p className="text-xl mb-8 max-w-2xl mx-auto">Quebec's trusted partner for intelligent workflow automation. Prove the ROI before you commit.</p>
|
| 10 |
+
<button className="bg-teal-400 hover:bg-teal-300 text-slate-900 font-bold py-3 px-8 rounded-full text-lg transition-all duration-300 transform hover:scale-105 shadow-lg">
|
| 11 |
+
Get Your Free Pilot
|
| 12 |
+
</button>
|
| 13 |
+
</section>
|
| 14 |
+
|
| 15 |
+
{/* Rest of your existing index.html content goes here */}
|
| 16 |
+
{/* ... */}
|
| 17 |
+
|
| 18 |
+
{/* Final CTA */}
|
| 19 |
+
<section className="text-center py-20">
|
| 20 |
+
<h2 className="text-4xl font-bold mb-6">Ready to Transform Your Business?</h2>
|
| 21 |
+
<p className="text-xl mb-8 max-w-2xl mx-auto">Let's start with a free pilot to prove the value before you commit.</p>
|
| 22 |
+
<button className="bg-teal-400 hover:bg-teal-300 text-slate-900 font-bold py-3 px-8 rounded-full text-lg transition-all duration-300 transform hover:scale-105 shadow-lg">
|
| 23 |
+
Get Your Free Pilot
|
| 24 |
+
</button>
|
| 25 |
+
</section>
|
| 26 |
+
</main>
|
| 27 |
+
)
|
| 28 |
+
}
|
next.config.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/** @type {import('next').NextConfig} */
|
| 2 |
+
const nextConfig = {
|
| 3 |
+
reactStrictMode: true,
|
| 4 |
+
images: {
|
| 5 |
+
domains: ['static.photos'],
|
| 6 |
+
},
|
| 7 |
+
experimental: {
|
| 8 |
+
appDir: true,
|
| 9 |
+
},
|
| 10 |
+
}
|
| 11 |
+
|
| 12 |
+
module.exports = nextConfig
|
script.js
CHANGED
|
@@ -1,28 +1,21 @@
|
|
| 1 |
-
// Smooth scrolling for anchor links
|
| 2 |
-
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
| 3 |
-
anchor.addEventListener('click', function (e) {
|
| 4 |
-
e.preventDefault();
|
| 5 |
-
document.querySelector(this.getAttribute('href')).scrollIntoView({
|
| 6 |
-
behavior: 'smooth'
|
| 7 |
-
});
|
| 8 |
-
});
|
| 9 |
-
});
|
| 10 |
|
| 11 |
// Form handling would go here
|
| 12 |
document.addEventListener('DOMContentLoaded', () => {
|
| 13 |
-
//
|
| 14 |
-
|
|
|
|
|
|
|
| 15 |
|
| 16 |
-
//
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
|
|
|
|
|
|
|
|
|
| 25 |
|
| 26 |
-
document.querySelectorAll('.animate-on-scroll').forEach(el => {
|
| 27 |
-
observer.observe(el);
|
| 28 |
-
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
|
| 2 |
// Form handling would go here
|
| 3 |
document.addEventListener('DOMContentLoaded', () => {
|
| 4 |
+
// Initialize feather icons
|
| 5 |
+
if (window.feather) {
|
| 6 |
+
feather.replace();
|
| 7 |
+
}
|
| 8 |
|
| 9 |
+
// Initialize Vanta.js effect if the element exists
|
| 10 |
+
if (document.getElementById('vanta-background') && window.VANTA) {
|
| 11 |
+
VANTA.NET({
|
| 12 |
+
el: "#vanta-background",
|
| 13 |
+
color: 0x102A43,
|
| 14 |
+
backgroundColor: 0x010A13,
|
| 15 |
+
points: 12,
|
| 16 |
+
maxDistance: 20,
|
| 17 |
+
spacing: 15
|
| 18 |
+
});
|
| 19 |
+
}
|
| 20 |
+
});
|
| 21 |
|
|
|
|
|
|
|
|
|
style.css
CHANGED
|
@@ -1,35 +1,54 @@
|
|
| 1 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
body {
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 6 |
}
|
| 7 |
|
| 8 |
/* Custom Scrollbar */
|
| 9 |
::-webkit-scrollbar {
|
| 10 |
-
|
| 11 |
}
|
| 12 |
|
| 13 |
::-webkit-scrollbar-track {
|
| 14 |
-
|
| 15 |
}
|
| 16 |
|
| 17 |
::-webkit-scrollbar-thumb {
|
| 18 |
-
|
| 19 |
-
|
| 20 |
}
|
| 21 |
|
| 22 |
::-webkit-scrollbar-thumb:hover {
|
| 23 |
-
|
| 24 |
}
|
| 25 |
|
| 26 |
/* Animation for floating elements */
|
| 27 |
@keyframes float {
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
|
| 31 |
}
|
| 32 |
|
| 33 |
.floating {
|
| 34 |
-
|
| 35 |
-
}
|
|
|
|
| 1 |
+
|
| 2 |
+
@tailwind base;
|
| 3 |
+
@tailwind components;
|
| 4 |
+
@tailwind utilities;
|
| 5 |
+
|
| 6 |
+
:root {
|
| 7 |
+
--foreground-rgb: 255, 255, 255;
|
| 8 |
+
--background-start-rgb: 6, 8, 26;
|
| 9 |
+
--background-end-rgb: 1, 10, 19;
|
| 10 |
+
}
|
| 11 |
+
|
| 12 |
body {
|
| 13 |
+
color: rgb(var(--foreground-rgb));
|
| 14 |
+
font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
|
| 15 |
+
line-height: 1.6;
|
| 16 |
+
}
|
| 17 |
+
|
| 18 |
+
.vanta-background {
|
| 19 |
+
position: fixed;
|
| 20 |
+
top: 0;
|
| 21 |
+
left: 0;
|
| 22 |
+
width: 100%;
|
| 23 |
+
height: 100%;
|
| 24 |
+
z-index: -1;
|
| 25 |
}
|
| 26 |
|
| 27 |
/* Custom Scrollbar */
|
| 28 |
::-webkit-scrollbar {
|
| 29 |
+
width: 8px;
|
| 30 |
}
|
| 31 |
|
| 32 |
::-webkit-scrollbar-track {
|
| 33 |
+
background: #0f172a;
|
| 34 |
}
|
| 35 |
|
| 36 |
::-webkit-scrollbar-thumb {
|
| 37 |
+
background: #334155;
|
| 38 |
+
border-radius: 4px;
|
| 39 |
}
|
| 40 |
|
| 41 |
::-webkit-scrollbar-thumb:hover {
|
| 42 |
+
background: #475569;
|
| 43 |
}
|
| 44 |
|
| 45 |
/* Animation for floating elements */
|
| 46 |
@keyframes float {
|
| 47 |
+
0% { transform: translateY(0px); }
|
| 48 |
+
50% { transform: translateY(-10px); }
|
| 49 |
+
100% { transform: translateY(0px); }
|
| 50 |
}
|
| 51 |
|
| 52 |
.floating {
|
| 53 |
+
animation: float 6s ease-in-out infinite;
|
| 54 |
+
}
|