From fc07f598658ca03f9e146e3836bfdc087ff01af5 Mon Sep 17 00:00:00 2001 From: Alaguraj0361 Date: Sat, 28 Mar 2026 10:44:30 +0530 Subject: [PATCH] implement blog detail page, home hero slider, and why-choose-us section with associated styling and assets --- public/s300_board.png | Bin 0 -> 64498 bytes src/app/blog/[slug]/PostPage.module.css | 246 ++++++++++++++++++++++++ src/app/blog/[slug]/page.tsx | 107 +++++++++++ src/app/globals.css | 2 +- src/app/layout.tsx | 2 + src/components/About.module.css | 198 +++++++++++++------ src/components/About.tsx | 26 ++- src/components/Blog.module.css | 2 +- src/components/Blog.tsx | 41 +--- src/components/HomeHeroSlider.tsx | 7 +- src/components/HomeProducts.module.css | 7 +- src/components/ScrollToTop.module.css | 42 ++++ src/components/ScrollToTop.tsx | 50 +++++ src/components/Testimonials.module.css | 62 ++++-- src/components/Testimonials.tsx | 153 ++++++++++----- src/components/WhyChooseUs.module.css | 26 +++ src/components/WhyChooseUs.tsx | 15 +- src/lib/blog.ts | 66 +++++++ 18 files changed, 886 insertions(+), 166 deletions(-) create mode 100644 public/s300_board.png create mode 100644 src/app/blog/[slug]/PostPage.module.css create mode 100644 src/app/blog/[slug]/page.tsx create mode 100644 src/components/ScrollToTop.module.css create mode 100644 src/components/ScrollToTop.tsx create mode 100644 src/lib/blog.ts diff --git a/public/s300_board.png b/public/s300_board.png new file mode 100644 index 0000000000000000000000000000000000000000..a9c5627af1b6c21a0c5e14830c5a67562d86dec9 GIT binary patch literal 64498 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 F|Jf?V=)C{{ literal 0 HcmV?d00001 diff --git a/src/app/blog/[slug]/PostPage.module.css b/src/app/blog/[slug]/PostPage.module.css new file mode 100644 index 0000000..12c039e --- /dev/null +++ b/src/app/blog/[slug]/PostPage.module.css @@ -0,0 +1,246 @@ +.main { + background-color: var(--neutral); + min-height: 100vh; +} + +.hero { + position: relative; + min-height: 80vh; + display: flex; + align-items: center; + padding: 100px 0; + overflow: hidden; +} + +.heroBg { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.bgImg { + object-fit: cover; + filter: saturate(0) brightness(0.4); +} + +.heroOverlay { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: linear-gradient(to bottom, transparent 40%, var(--neutral) 95%); +} + +.container { + max-width: 1200px; + width: 100%; + margin: 0 auto; + padding: 0 var(--container-padding); + position: relative; + z-index: 10; +} + +.heroContent { + max-width: 800px; +} + +.backBtn { + display: inline-flex; + align-items: center; + gap: 0.8rem; + font-size: 0.7rem; + font-weight: 900; + letter-spacing: 0.1rem; + color: var(--primary); + margin-bottom: 3.5rem; + transition: all 0.2s; +} + +.backBtn:hover { + color: #fff; + transform: translateX(-5px); +} + +.meta { + display: flex; + gap: 2rem; + margin-bottom: 3rem; +} + +.meta span { + display: flex; + align-items: center; + gap: 0.8rem; + font-size: 0.65rem; + font-weight: 800; + color: #555; + letter-spacing: 0.1rem; +} + +.meta span svg { + color: var(--primary); +} + +.title { + font-size: clamp(3rem, 6vw, 4.5rem); + font-weight: 900; + letter-spacing: -0.06em; + line-height: 1; + margin-bottom: 3.5rem; + text-transform: uppercase; +} + +.desc { + font-size: 1.25rem; + color: #999; + line-height: 1.6; + max-width: 700px; +} + +.contentSection { + padding: 100px 0; + background-color: var(--neutral); +} + +.contentGrid { + display: grid; + grid-template-columns: 1fr 320px; + gap: 8rem; +} + +.articleBody { + line-height: 1.8; + color: #888; +} + +.formattedText h2 { + font-size: 1.8rem; + font-weight: 900; + color: #fff; + letter-spacing: -0.03em; + margin-bottom: 2.5rem; + margin-top: 5rem; + text-transform: uppercase; + display: inline-block; +} + +.formattedText h2:first-child { + margin-top: 0; +} + +.formattedText h3 { + font-size: 1.1rem; + font-weight: 900; + color: var(--primary); + margin-bottom: 1.5rem; + margin-top: 3.5rem; + text-transform: uppercase; + letter-spacing: 0.1rem; +} + +.formattedText p { + margin-bottom: 2.5rem; + font-size: 1.1rem; +} + +.sidebarBox { + background-color: var(--secondary); + border: 1px solid var(--border); + padding: 2.5rem; + margin-bottom: 3rem; + border-top: 3px solid var(--primary); +} + +.sidebarBox h3 { + font-size: 0.85rem; + font-weight: 900; + letter-spacing: 0.1rem; + margin-bottom: 2rem; + color: #fff; +} + +.specItem { + display: flex; + justify-content: space-between; + padding-bottom: 1rem; + margin-bottom: 1rem; + border-bottom: 1px solid var(--border); +} + +.specItem span { + font-size: 0.6rem; + font-weight: 900; + color: #555; + letter-spacing: 0.1rem; +} + +.specItem strong { + font-size: 0.65rem; + font-weight: 800; + color: #fff; + font-family: monospace; +} + +.relatedBox h3 { + font-size: 0.85rem; + font-weight: 900; + letter-spacing: 0.1rem; + margin-bottom: 2.5rem; + color: #fff; + padding-left: 2.5rem; +} + +.relatedLink { + display: flex; + justify-content: space-between; + align-items: center; + padding: 2rem 2.5rem; + background-color: transparent; + border-bottom: 1px solid var(--border); + font-size: 0.85rem; + font-weight: 900; + letter-spacing: -0.01em; + color: #888; + transition: all 0.2s; +} + +.relatedLink:first-child { + border-top: 1px solid var(--border); +} + +.relatedLink:hover { + color: #fff; + background-color: rgba(255, 255, 255, 0.02); +} + +@media (max-width: 1024px) { + .contentGrid { grid-template-columns: 1fr; gap: 6rem; } + .sidebar { order: 2; } + .hero { min-height: 60vh; } +} + +@media (max-width: 768px) { + .title { font-size: 3rem; } + .meta { flex-direction: column; gap: 1rem; } + .formattedText h2 { font-size: 1.5rem; } +} + +.notFound { + min-height: 100vh; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + background-color: var(--neutral); + color: #fff; + gap: 2rem; +} + +.notFound a { + color: var(--primary); + text-decoration: underline; + font-weight: 900; +} diff --git a/src/app/blog/[slug]/page.tsx b/src/app/blog/[slug]/page.tsx new file mode 100644 index 0000000..364634d --- /dev/null +++ b/src/app/blog/[slug]/page.tsx @@ -0,0 +1,107 @@ +'use client'; + +import { useParams } from 'next/navigation'; +import { blogPosts } from '@/lib/blog'; +import Navbar from '@/components/Navbar'; +import Footer from '@/components/Footer'; +import Image from 'next/image'; +import { motion } from 'framer-motion'; +import { Calendar, User, Clock, ChevronLeft } from 'lucide-react'; +import Link from 'next/link'; +import styles from './PostPage.module.css'; + +export default function BlogPostDetail() { + const params = useParams(); + const slug = params.slug as string; + const post = blogPosts.find((p) => p.slug === slug); + + if (!post) { + return ( +
+

POST NOT FOUND

+ RETURN TO HUB +
+ ); + } + + return ( +
+ + +
+
+ {post.title} +
+
+ +
+ + + BACK TO HUB + +
+ {post.date} + {post.author} + 5 MIN READ +
+

{post.title}

+

{post.desc}

+
+
+
+ +
+
+
+ +
') }} + /> + + + +
+
+
+ +
+
+ ); +} diff --git a/src/app/globals.css b/src/app/globals.css index eb74e78..c20609a 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -4,7 +4,7 @@ --secondary: #212121; --tertiary: #00808C; --neutral: #121212; - --background: #121212; + --background: #080808; --card-bg: #212121; --text-main: #FFFFFF; --text-muted: #A1A1A1; diff --git a/src/app/layout.tsx b/src/app/layout.tsx index c60db24..3b7ccaf 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,5 +1,6 @@ import type { Metadata } from "next"; import { Inter } from "next/font/google"; +import ScrollToTop from "@/components/ScrollToTop"; import "./globals.css"; const inter = Inter({ @@ -20,6 +21,7 @@ export default function RootLayout({ return ( + {children} diff --git a/src/components/About.module.css b/src/components/About.module.css index 260ad7e..2eadc9c 100644 --- a/src/components/About.module.css +++ b/src/components/About.module.css @@ -9,168 +9,248 @@ width: 100%; margin: 0 auto; padding: 0 var(--container-padding); + position: relative; +} + +.sideLabel { + position: absolute; + left: 0; + top: 50%; + transform: rotate(-90deg) translateX(-50%); + transform-origin: left top; + font-size: 0.65rem; + font-weight: 900; + letter-spacing: 0.6rem; + color: rgba(255, 255, 255, 0.05); + white-space: nowrap; + z-index: 0; + pointer-events: none; } .grid { display: grid; - grid-template-columns: 1fr 1.2fr; - gap: 10rem; + grid-template-columns: 1fr 1fr; + gap: 8rem; align-items: center; + position: relative; + z-index: 1; +} + +.labelWrapper { + display: flex; + align-items: center; + gap: 1.5rem; + margin-bottom: 2.5rem; +} + +.line { + width: 40px; + height: 1px; + background-color: var(--primary); } .label { font-size: 0.65rem; font-weight: 900; color: var(--primary); - letter-spacing: 0.15em; - margin-bottom: 2rem; - display: block; + letter-spacing: 0.2rem; } .title { - font-size: clamp(2rem, 4vw, 3.5rem); + font-size: clamp(2.5rem, 5vw, 4.5rem); font-weight: 900; - line-height: 1; - letter-spacing: -0.05em; + line-height: 0.95; + letter-spacing: -0.06em; margin-bottom: 3.5rem; + text-transform: uppercase; +} + +.outline { + -webkit-text-stroke: 1px rgba(255, 255, 255, 0.2); + color: transparent; +} + +.highlight { + color: var(--primary); + font-style: italic; + position: relative; +} + +.highlight::after { + content: ''; + position: absolute; + bottom: 5px; + left: 0; + width: 100%; + height: 8px; + background-color: rgba(255, 0, 0, 0.15); + z-index: -1; } .desc { font-size: 1.1rem; color: #888; line-height: 1.8; - margin-bottom: 4rem; + margin-bottom: 4.5rem; + max-width: 550px; } .stats { - display: flex; - flex-direction: column; + display: grid; + grid-template-columns: 1fr 1fr; gap: 3rem; - margin-bottom: 4rem; + margin-bottom: 4.5rem; + padding: 2.5rem; + background-color: rgba(255, 255, 255, 0.02); + border: 1px solid var(--border); + border-radius: 4px; } .statItem { display: flex; - gap: 2rem; + flex-direction: column; + gap: 1.5rem; } .statIcon { - width: 50px; - height: 50px; - background-color: var(--secondary); + width: 40px; + height: 40px; border: 1px solid var(--border); display: flex; align-items: center; justify-content: center; - border-radius: 4px; color: var(--primary); + background-color: var(--secondary); } .statText h3 { - font-size: 0.85rem; + font-size: 0.75rem; font-weight: 900; - letter-spacing: 0.05em; + letter-spacing: 0.1rem; margin-bottom: 0.8rem; + color: #fff; } .statText p { - font-size: 0.85rem; + font-size: 0.8rem; color: #666; line-height: 1.6; } +.buttonWrapper { + position: relative; +} + .moreBtn { - background-color: transparent; - border: 1px solid var(--border); - padding: 1.2rem 2.8rem; + display: flex; + align-items: center; + gap: 2rem; + padding: 0; font-size: 0.75rem; font-weight: 900; - letter-spacing: 0.1em; + letter-spacing: 0.15rem; color: #fff; - border-radius: 4px; - transition: all 0.2s; + transition: all 0.3s; +} + +.btnArrow { + width: 40px; + height: 1px; + background-color: var(--primary); + position: relative; + transition: all 0.3s; +} + +.btnArrow::after { + content: ''; + position: absolute; + right: 0; + top: -3px; + width: 6px; + height: 6px; + border-right: 1px solid var(--primary); + border-top: 1px solid var(--primary); + transform: rotate(45deg); } .moreBtn:hover { - background-color: #fff; - color: #000; + color: var(--primary); +} + +.moreBtn:hover .btnArrow { + width: 60px; } .visual { position: relative; - padding-left: 5rem; } .imageOverlay { position: absolute; top: -2rem; - left: 0; - width: 300px; - height: 300px; - background-color: var(--primary); - opacity: 0.05; - z-index: 1; - border-radius: 50%; - filter: blur(80px); + right: -2rem; + width: 100%; + height: 100%; + border: 1px solid var(--primary); + opacity: 0.1; + z-index: -1; } .aboutImg { width: 100%; height: auto; - filter: saturate(0) brightness(0.7); - border-radius: 4px; + filter: saturate(0) brightness(0.6); + border-radius: 2px; } .founderBox { position: absolute; - bottom: -2rem; - left: 0; - max-width: 320px; - background-color: var(--secondary); + bottom: -3rem; + right: -3rem; + max-width: 300px; + background-color: #000; border: 1px solid var(--border); - padding: 3rem; - border-left: 4px solid var(--primary); + padding: 2.5rem; + z-index: 5; } .founderBox strong { - font-size: 0.65rem; + font-size: 0.6rem; font-weight: 900; color: var(--primary); display: block; margin-bottom: 1.2rem; - letter-spacing: 0.15rem; + letter-spacing: 0.2rem; } .founderBox p { - font-size: 0.95rem; + font-size: 0.9rem; color: #fff; font-style: italic; - font-family: serif; line-height: 1.6; } @media (max-width: 1200px) { .grid { gap: 5rem; } + .sideLabel { display: none; } } @media (max-width: 1024px) { .section { padding: 100px 0; } .grid { grid-template-columns: 1fr; gap: 6rem; } - .title { text-align: center; } - .desc { text-align: center; margin: 0 auto 4rem; } - .label { text-align: center; } - .visual { padding-left: 0; } + .title { text-align: left; } + .desc { text-align: left; } + .stats { grid-template-columns: 1fr; padding: 2rem; } .founderBox { position: relative; margin: 2rem auto 0; - left: 0; - text-align: center; - border-left: none; - border-top: 4px solid var(--primary); + right: 0; + bottom: 0; + max-width: none; } } @media (max-width: 768px) { - .statItem { flex-direction: column; align-items: center; text-align: center; gap: 1rem; } - .moreBtn { width: 100%; } + .title { font-size: 2.5rem; } + .statItem { flex-direction: row; align-items: flex-start; } } diff --git a/src/components/About.tsx b/src/components/About.tsx index e5bed28..44b2fad 100644 --- a/src/components/About.tsx +++ b/src/components/About.tsx @@ -2,6 +2,7 @@ import { motion } from 'framer-motion'; import Image from 'next/image'; +import Link from 'next/link'; import { Target, History, Globe } from 'lucide-react'; import styles from './About.module.css'; @@ -9,10 +10,17 @@ export default function About() { return (
+
ENGINEERING LEGACY
- ESTABLISHED 2004 -

PRECISION ENGINEERING FOR THE JDM COMMUNITY.

+
+ + ESTABLISHED 2004 +
+

+ PRECISION ENGINEERING
+ FOR THE JDM COMMUNITY. +

For over two decades, HondaVert has been at the forefront of aftermarket engine management solutions. Born from a passion for circuit racing and technical excellence, we develop hardware and software @@ -21,22 +29,26 @@ export default function About() {

-
+

OUR MISSION

-

To provide surgical-grade tuning tools that bridge the gap between amateur builds and professional racing teams.

+

Surgical-grade tuning tools that bridge the gap between amateur builds and pro racing.

-
+

GLOBAL NETWORK

-

Supported by a world-wide network of certified tuners and distributors across 40+ countries.

+

Supported by certified tuners across 40+ countries.

- +
+ + EXPLORE OUR HISTORY + +
diff --git a/src/components/Blog.module.css b/src/components/Blog.module.css index 6e0e6b4..98a0f37 100644 --- a/src/components/Blog.module.css +++ b/src/components/Blog.module.css @@ -52,7 +52,7 @@ .grid { display: grid; - grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); + grid-template-columns: repeat(3, 1fr); gap: 2.5rem; } diff --git a/src/components/Blog.tsx b/src/components/Blog.tsx index 4d72db5..2ea6d67 100644 --- a/src/components/Blog.tsx +++ b/src/components/Blog.tsx @@ -2,34 +2,12 @@ import { motion } from 'framer-motion'; import Image from 'next/image'; +import Link from 'next/link'; import { Calendar, User, ArrowRight } from 'lucide-react'; +import { blogPosts } from '@/lib/blog'; import styles from './Blog.module.css'; export default function Blog() { - const posts = [ - { - title: 'OPTIMIZING THE K-SERIES FOR TRACK USE', - desc: 'Technical insights into fuel and ignition management for circuit racing environments.', - date: 'MARCH 15, 2026', - author: 'MARK H.', - img: '/ecu_kpro.png' - }, - { - title: 'S300 V3 FIRMWARE UPDATE RELEASED', - desc: 'Exploring the new link stability improvements and telemetry protocols in the latest release.', - date: 'MARCH 10, 2026', - author: 'ADMIN', - img: '/hondavert_hud_telemetry_1774593564690.png' - }, - { - title: 'PRECISION TUNING: THE FUTURE OF FLASHING', - desc: 'A look into how CANFlash is changing the speed of development for modern ECU platforms.', - date: 'MARCH 02, 2026', - author: 'MARK H.', - img: '/engine_bay.png' - } - ]; - return (
@@ -38,11 +16,10 @@ export default function Blog() { LATEST NEWS

ENGINEERING HUB

-
- {posts.map((item, i) => ( + {blogPosts.map((item, i) => ( -
+ {item.title} -
+
@@ -65,11 +42,13 @@ export default function Blog() { {item.author}
-

{item.title}

+ +

{item.title}

+

{item.desc}

- +
))} diff --git a/src/components/HomeHeroSlider.tsx b/src/components/HomeHeroSlider.tsx index 99a5ac3..5657a36 100644 --- a/src/components/HomeHeroSlider.tsx +++ b/src/components/HomeHeroSlider.tsx @@ -3,6 +3,7 @@ import { useState, useEffect } from 'react'; import { motion, AnimatePresence } from 'framer-motion'; import Image from 'next/image'; +import Link from 'next/link'; import { ChevronRight, ChevronLeft, Zap } from 'lucide-react'; import styles from './HomeHeroSlider.module.css'; @@ -25,7 +26,7 @@ const slides = [ title: 'S300 CORE', subtitle: 'LEGACY REDEFINED', desc: 'Professional grade engine management for OBD1 Honda ECUs. Real-time data logging and track-ready metrics.', - img: '/hondavert_map_sensor_1774593624455.png', + img: '/s300_board.png', link: '/products/s300' } ]; @@ -69,9 +70,9 @@ export default function HomeHeroSlider() { {slides[current].subtitle}

{slides[current].title}

{slides[current].desc}

- +
diff --git a/src/components/HomeProducts.module.css b/src/components/HomeProducts.module.css index 276e710..94fa73e 100644 --- a/src/components/HomeProducts.module.css +++ b/src/components/HomeProducts.module.css @@ -48,15 +48,16 @@ .grid { display: grid; - grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); - gap: 2rem; + grid-template-columns: repeat(3, 1fr); + gap: 2.5rem; } @media (max-width: 1024px) { - .grid { grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); } + .grid { grid-template-columns: repeat(2, 1fr); gap: 2rem; } } @media (max-width: 768px) { + .grid { grid-template-columns: 1fr; } .header { flex-direction: column; align-items: center; text-align: center; gap: 2rem; } .title { font-size: 2.5rem; text-align: center; } } diff --git a/src/components/ScrollToTop.module.css b/src/components/ScrollToTop.module.css new file mode 100644 index 0000000..5e09593 --- /dev/null +++ b/src/components/ScrollToTop.module.css @@ -0,0 +1,42 @@ +.button { + position: fixed; + bottom: 3rem; + right: 3rem; + width: 55px; + height: 55px; + background-color: var(--secondary); + border: 1px solid var(--border); + border-radius: 4px; /* Industrial squared-off look */ + color: #fff; + display: flex; + align-items: center; + justify-content: center; + z-index: 9999; + cursor: pointer; + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5); + transition: background-color 0.3s, border-color 0.3s; +} + +.button:hover { + border-color: var(--primary); +} + +.progressRing { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + border: 1px solid transparent; + pointer-events: none; + opacity: 0.1; +} + +@media (max-width: 768px) { + .button { + bottom: 2rem; + right: 2rem; + width: 45px; + height: 45px; + } +} diff --git a/src/components/ScrollToTop.tsx b/src/components/ScrollToTop.tsx new file mode 100644 index 0000000..bc93611 --- /dev/null +++ b/src/components/ScrollToTop.tsx @@ -0,0 +1,50 @@ +'use client'; + +import { useState, useEffect } from 'react'; +import { motion, AnimatePresence } from 'framer-motion'; +import { ChevronUp } from 'lucide-react'; +import styles from './ScrollToTop.module.css'; + +export default function ScrollToTop() { + const [isVisible, setIsVisible] = useState(false); + + useEffect(() => { + const toggleVisibility = () => { + if (window.scrollY > 500) { + setIsVisible(true); + } else { + setIsVisible(false); + } + }; + + window.addEventListener('scroll', toggleVisibility); + return () => window.removeEventListener('scroll', toggleVisibility); + }, []); + + const scrollToTop = () => { + window.scrollTo({ + top: 0, + behavior: 'smooth', + }); + }; + + return ( + + {isVisible && ( + + +
+
+ )} +
+ ); +} diff --git a/src/components/Testimonials.module.css b/src/components/Testimonials.module.css index 7110202..d4ea9c6 100644 --- a/src/components/Testimonials.module.css +++ b/src/components/Testimonials.module.css @@ -8,10 +8,13 @@ width: 100%; margin: 0 auto; padding: 0 var(--container-padding); + overflow: hidden; } .header { - text-align: center; + display: flex; + justify-content: space-between; + align-items: flex-end; margin-bottom: 80px; } @@ -31,20 +34,42 @@ letter-spacing: -0.05em; } -.grid { - display: grid; - grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); - gap: 3rem; +.nav { + display: flex; + gap: 1rem; } -@media (max-width: 1024px) { - .grid { gap: 2rem; } +.navBtn { + width: 50px; + height: 50px; + border-radius: 50%; + background-color: var(--secondary); + border: 1px solid var(--border); + color: #fff; + display: flex; + align-items: center; + justify-content: center; + transition: all 0.3s; } -@media (max-width: 768px) { - .grid { grid-template-columns: 1fr; } - .card { padding: 3rem 2rem; } - .quote { font-size: 1rem; } +.navBtn:hover { + background-color: var(--primary); + border-color: var(--primary); +} + +.sliderWrapper { + width: 100%; + overflow: visible; +} + +.sliderTray { + display: flex; + width: 100%; +} + +.cardWrapper { + flex: 0 0 33.333%; + padding: 0 1rem; } .card { @@ -56,6 +81,21 @@ flex-direction: column; justify-content: space-between; transition: all 0.2s; + height: 100%; +} + +/* ... middle content ... */ + +@media (max-width: 1024px) { + .cardWrapper { flex: 0 0 50%; } + .header { flex-direction: column; align-items: center; text-align: center; gap: 2rem; } + .nav { display: none; } +} + +@media (max-width: 768px) { + .cardWrapper { flex: 0 0 100%; } + .card { padding: 3rem 2rem; } + .quote { font-size: 1rem; } } .card:hover { diff --git a/src/components/Testimonials.tsx b/src/components/Testimonials.tsx index bde2ab0..c153e2a 100644 --- a/src/components/Testimonials.tsx +++ b/src/components/Testimonials.tsx @@ -1,64 +1,119 @@ 'use client'; -import { motion } from 'framer-motion'; -import { Quote, Star } from 'lucide-react'; +import { useState, useEffect } from 'react'; +import { motion, AnimatePresence } from 'framer-motion'; +import { Quote, Star, ChevronLeft, ChevronRight } from 'lucide-react'; import styles from './Testimonials.module.css'; +const reviews = [ + { + name: 'ALEX R.', + role: 'TIME ATTACK DRIVER', + quote: 'Switched to HondaVert V4.0 last season. The data fidelity and zero-latency logging changed how we approach our setup. Unmatched precision.', + stars: 5, + }, + { + name: 'KEVIN L.', + role: 'MASTER TUNER', + quote: 'As a tuner, I need reliability. HondaVert consistently delivers hardware that doesn\'t crash, software that is intuitive, and support that actually knows their stuff.', + stars: 5, + }, + { + name: 'SARAH M.', + role: 'DRAG RACING SPECIALIST', + quote: 'From real-time telemetry to custom launch control, the S300 Core has been rock solid for my turbo setup. Highly recommend for any serious build.', + stars: 5, + }, + { + name: 'MARCO S.', + role: 'ENDURANCE RACER', + quote: 'Our testing revealed zero heat-soak issues with the Hondavert platform. It handles 12-hour sessions with perfect consistency.', + stars: 5, + }, + { + name: 'DAVID K.', + role: 'STREET TUNER', + quote: 'The Bluetooth integration makes mobile datalogging incredibly simple. I can diagnose issues without even opening my laptop.', + stars: 5, + }, + { + name: 'YUKI T.', + role: 'DRIFT MASTER', + quote: 'The rapid response of the 4BAR MAP sensor combined with KPro precision gives me the exact throttle response I need for high-angle transitions.', + stars: 5, + } +]; + export default function Testimonials() { - const reviews = [ - { - name: 'ALEX R.', - role: 'TIME ATTACK DRIVER', - quote: 'Switched to HondaVert V4.0 last season. The data fidelity and zero-latency logging changed how we approach our setup. Unmatched precision.', - stars: 5, - }, - { - name: 'KEVIN L.', - role: 'MASTER TUNER', - quote: 'As a tuner, I need reliability. HondaVert consistently delivers hardware that doesn\'t crash, software that is intuitive, and support that actually knows their stuff.', - stars: 5, - }, - { - name: 'SARAH M.', - role: 'DRAG RACING SPECIALIST', - quote: 'From real-time telemetry to custom launch control, the S300 Core has been rock solid for my turbo setup. Highly recommend for any serious build.', - stars: 5, - } - ]; + const [current, setCurrent] = useState(0); + const [isMobile, setIsMobile] = useState(false); + + useEffect(() => { + const checkMobile = () => { + setIsMobile(window.innerWidth < 768); + }; + checkMobile(); + window.addEventListener('resize', checkMobile); + return () => window.removeEventListener('resize', checkMobile); + }, []); + + useEffect(() => { + const timer = setInterval(() => { + const max = isMobile ? reviews.length - 1 : reviews.length - 3; + setCurrent((prev) => (prev >= max ? 0 : prev + 1)); + }, 5000); + return () => clearInterval(timer); + }, [isMobile]); + + const next = () => { + const max = isMobile ? reviews.length - 1 : reviews.length - 3; + setCurrent((prev) => (prev >= max ? 0 : prev + 1)); + }; + const prev = () => { + const max = isMobile ? reviews.length - 1 : reviews.length - 3; + setCurrent((prev) => (prev === 0 ? max : prev - 1)); + }; return (
- CLIENT FEEDBACK -

VOICES OF THE COMMUNITY

+
+ CLIENT FEEDBACK +

VOICES OF THE COMMUNITY

+
+
+ + +
-
- {reviews.map((item, i) => ( - -
- {[...Array(item.stars)].map((_, i) => ( - - ))} -
-
-

"{item.quote}"

-
-
- {item.name} - {item.role} -
-
-
- ))} +
+ + {reviews.map((item, i) => ( +
+
+
+ {[...Array(item.stars)].map((_, j) => ( + + ))} +
+
+

"{item.quote}"

+
+
+ {item.name} + {item.role} +
+
+
+
+ ))} +
diff --git a/src/components/WhyChooseUs.module.css b/src/components/WhyChooseUs.module.css index 2955254..2e29ff9 100644 --- a/src/components/WhyChooseUs.module.css +++ b/src/components/WhyChooseUs.module.css @@ -76,6 +76,32 @@ margin-bottom: 1rem; } +.ctaBox { + margin-top: 3rem; + padding: 2rem; + background-color: rgba(255, 255, 255, 0.02); + border: 1px solid var(--border); + border-radius: 4px; + display: flex; + justify-content: center; +} + +.ctaBtn { + display: flex; + align-items: center; + gap: 1.5rem; + color: var(--primary); + font-size: 0.75rem; + font-weight: 900; + letter-spacing: 0.15rem; + transition: all 0.3s; +} + +.ctaBtn:hover { + color: #fff; + transform: translateX(10px); +} + .cardContent p { font-size: 0.85rem; color: #666; diff --git a/src/components/WhyChooseUs.tsx b/src/components/WhyChooseUs.tsx index 56fc98f..21b7e03 100644 --- a/src/components/WhyChooseUs.tsx +++ b/src/components/WhyChooseUs.tsx @@ -1,7 +1,8 @@ 'use client'; import { motion } from 'framer-motion'; -import { ShieldCheck, Zap, Cpu, Award } from 'lucide-react'; +import Link from 'next/link'; +import { ShieldCheck, Zap, Cpu, Award, ChevronRight } from 'lucide-react'; import styles from './WhyChooseUs.module.css'; export default function WhyChooseUs() { @@ -57,6 +58,18 @@ export default function WhyChooseUs() {
))} + + + + EXPLORE ALL SYSTEMS + +
diff --git a/src/lib/blog.ts b/src/lib/blog.ts new file mode 100644 index 0000000..c78b50c --- /dev/null +++ b/src/lib/blog.ts @@ -0,0 +1,66 @@ +export interface BlogPost { + slug: string; + title: string; + desc: string; + date: string; + author: string; + img: string; + content: string; +} + +export const blogPosts: BlogPost[] = [ + { + slug: 'optimizing-k-series-track', + title: 'OPTIMIZING THE K-SERIES FOR TRACK USE', + desc: 'Technical insights into fuel and ignition management for circuit racing environments.', + date: 'MARCH 15, 2026', + author: 'MARK H.', + img: '/ecu_kpro.png', + content: ` + ## TRACK-READY CALIBRATION + Circuit racing demands more than just peak power. Sustained high-RPM loads and extreme lateral Gs require a calibration strategy focused on reliability and smooth power delivery. + + ### THERMAL MANAGEMENT + One of the critical factors we address in our Rev.4 firmware is the intelligent thermal trimming. By monitoring coolant and intake temperatures at 100Hz, our boards can make micro-adjustments to the ignition timing to prevent detonation during late-lap heat soak. + + ### STABILITY UNDER LOAD + Real-time data logging revealed that voltage drops during hard cornering can affect injector latency. HondaVert's proprietary hardware features improved power conditioning to stabilize these fluctuations, ensuring your AFR stays exactly where it belongs. + ` + }, + { + slug: 's300-v3-firmware-update', + title: 'S300 V3 FIRMWARE UPDATE RELEASED', + desc: 'Exploring the new link stability improvements and telemetry protocols in the latest release.', + date: 'MARCH 10, 2026', + author: 'ADMIN', + img: '/hud_telemetry.png', + content: ` + ## S300 EVOLUTION + The latest V3 firmware for the S300 Core daughterboard brings professional-grade telemetry to the OBD1 platform. + + ### USB STABILITY + We have completely rewritten the USB stack to improve connection speed by 40% when using modern Windows 11 environments. This eliminates the 'COM Port Busy' errors frequently seen with legacy hardware. + + ### BLUETOOTH LOW LATENCY + For Rev.3 board owners, the new firmware optimizes the Bluetooth data stream, allowing for real-time dashboard updates on mobile devices with virtually zero lag. This is critical for monitoring vitals during a drag pass. + ` + }, + { + slug: 'precision-tuning-future-flashing', + title: 'PRECISION TUNING: THE FUTURE OF FLASHING', + desc: 'A look into how CANFlash is changing the speed of development for modern ECU platforms.', + date: 'MARCH 02, 2026', + author: 'MARK H.', + img: '/engine_bay.png', + content: ` + ## THE CAN-BUS REVOLUTION + Traditional OBDII flashing has been slow and prone to failure if the connection is interrupted. CANFlash utilizes high-speed CAN-FD protocols to increase data throughput by 5x compared to standard K-Line protocols. + + ### ENCRYPTION AND SECURITY + Modern Bosch and Keihin ECUs require advanced security handshakes. Our CANFlash interface handles these handshakes locally, reducing the risk of a 'bricked' ECU during the write process. + + ### MOBILE DEVELOPMENT + With the rise of mobile tuning apps, CANFlash provides a standardized bridge for developers to build safe and fast flashing tools that run directly from a smartphone or tablet. + ` + } +];