fix: Remove car_id property from adminAddVehicle call to fix TypeScript error
This commit is contained in:
153
temp_header.tsx
Normal file
153
temp_header.tsx
Normal file
@@ -0,0 +1,153 @@
|
||||
"use client";
|
||||
|
||||
import { useState, useEffect } from "react";
|
||||
import Link from "next/link";
|
||||
import { useRouter, usePathname } from "next/navigation";
|
||||
import { Menu, X } from "lucide-react";
|
||||
import { useLanguage } from "@/contexts/LanguageContext";
|
||||
import LanguageSelector from "./LanguageSelector";
|
||||
|
||||
export default function Header() {
|
||||
const { t } = useLanguage();
|
||||
const router = useRouter();
|
||||
const pathname = usePathname();
|
||||
const [isScrolled, setIsScrolled] = useState(false);
|
||||
const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);
|
||||
|
||||
const navItems = [
|
||||
{ name: t("nav", "about"), href: "/#about" },
|
||||
{ name: t("nav", "technology"), href: "/#technology" },
|
||||
{ name: t("nav", "projects"), href: "/#projects" },
|
||||
{ name: t("nav", "solutions"), href: "/#solutions" },
|
||||
{ name: t("nav", "products"), href: "/#products" },
|
||||
{ name: t("nav", "downloads"), href: "/downloads" },
|
||||
{ name: t("nav", "contact"), href: "/#contact" },
|
||||
];
|
||||
|
||||
useEffect(() => {
|
||||
const handleScroll = () => {
|
||||
setIsScrolled(window.scrollY > 50);
|
||||
};
|
||||
window.addEventListener("scroll", handleScroll);
|
||||
return () => window.removeEventListener("scroll", handleScroll);
|
||||
}, []);
|
||||
|
||||
// Handle hash scroll after navigation
|
||||
useEffect(() => {
|
||||
if (pathname === "/" && window.location.hash) {
|
||||
const hash = window.location.hash.substring(1);
|
||||
setTimeout(() => {
|
||||
const element = document.getElementById(hash);
|
||||
if (element) {
|
||||
element.scrollIntoView({ behavior: "smooth" });
|
||||
}
|
||||
}, 100);
|
||||
}
|
||||
}, [pathname]);
|
||||
|
||||
const handleNavClick = (e: React.MouseEvent<HTMLAnchorElement>, href: string) => {
|
||||
// If it's not a hash link, let it navigate normally
|
||||
if (!href.includes("#")) {
|
||||
return;
|
||||
}
|
||||
|
||||
e.preventDefault();
|
||||
const hash = href.split("#")[1];
|
||||
|
||||
if (pathname === "/") {
|
||||
// Already on homepage, just scroll
|
||||
const element = document.getElementById(hash);
|
||||
if (element) {
|
||||
element.scrollIntoView({ behavior: "smooth" });
|
||||
}
|
||||
} else {
|
||||
// Navigate to homepage first, then scroll
|
||||
router.push(href);
|
||||
}
|
||||
|
||||
setIsMobileMenuOpen(false);
|
||||
};
|
||||
|
||||
return (
|
||||
<header
|
||||
className={`fixed top-0 left-0 right-0 z-50 transition-all duration-300 ${
|
||||
isScrolled
|
||||
? "bg-white/95 backdrop-blur-sm shadow-md"
|
||||
: "bg-transparent"
|
||||
}`}
|
||||
>
|
||||
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||
<div className="flex items-center justify-between h-16 md:h-20">
|
||||
{/* Logo */}
|
||||
<Link href="/" className="flex items-center space-x-2">
|
||||
<span
|
||||
className={`text-2xl font-bold transition-colors ${
|
||||
isScrolled ? "text-[#1E3A8A]" : "text-white"
|
||||
}`}
|
||||
>
|
||||
GRANTECH
|
||||
</span>
|
||||
</Link>
|
||||
|
||||
{/* Desktop Navigation */}
|
||||
<nav className="hidden md:flex items-center space-x-6">
|
||||
{navItems.map((item) => (
|
||||
<a
|
||||
key={item.href}
|
||||
href={item.href}
|
||||
onClick={(e) => handleNavClick(e, item.href)}
|
||||
className={`text-sm font-medium transition-colors hover:text-[#3B82F6] ${
|
||||
isScrolled ? "text-gray-700" : "text-white"
|
||||
}`}
|
||||
>
|
||||
{item.name}
|
||||
</a>
|
||||
))}
|
||||
<LanguageSelector isScrolled={isScrolled} />
|
||||
</nav>
|
||||
|
||||
{/* Mobile Menu Button */}
|
||||
<div className="flex items-center md:hidden space-x-2">
|
||||
<LanguageSelector isScrolled={isScrolled} />
|
||||
<button
|
||||
className="p-2"
|
||||
onClick={() => setIsMobileMenuOpen(!isMobileMenuOpen)}
|
||||
>
|
||||
{isMobileMenuOpen ? (
|
||||
<X
|
||||
className={`w-6 h-6 ${
|
||||
isScrolled ? "text-gray-700" : "text-white"
|
||||
}`}
|
||||
/>
|
||||
) : (
|
||||
<Menu
|
||||
className={`w-6 h-6 ${
|
||||
isScrolled ? "text-gray-700" : "text-white"
|
||||
}`}
|
||||
/>
|
||||
)}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Mobile Menu */}
|
||||
{isMobileMenuOpen && (
|
||||
<div className="md:hidden bg-white border-t">
|
||||
<nav className="py-4 space-y-2">
|
||||
{navItems.map((item) => (
|
||||
<a
|
||||
key={item.href}
|
||||
href={item.href}
|
||||
onClick={(e) => handleNavClick(e, item.href)}
|
||||
className="block px-4 py-2 text-gray-700 hover:bg-gray-50 hover:text-[#3B82F6]"
|
||||
>
|
||||
{item.name}
|
||||
</a>
|
||||
))}
|
||||
</nav>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</header>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user