AWSCLOUD/components/Navbar.tsx

190 lines
10 KiB
TypeScript
Raw Permalink Normal View History

2025-09-16 15:24:39 +08:00
'use client';
import { useState } from 'react';
interface NavbarProps {
currentLang: string;
currentContent: any;
handleLanguageChange: (lang: string) => void;
}
export default function Navbar({ currentLang, currentContent, handleLanguageChange }: NavbarProps) {
const [isMenuOpen, setIsMenuOpen] = useState(false);
return (
<>
{/* Top Bar */}
<div className="bg-gray-800 border-b border-gray-700 py-2">
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div className="flex justify-between items-center">
<div className="flex items-center space-x-4">
<span className="text-sm text-gray-300">Services</span>
<span className="text-gray-500">|</span>
<span className="text-sm text-gray-300">AWS Services / Keywords</span>
</div>
<div className="flex items-center space-x-4">
<div className="flex items-center space-x-2">
<input
type="text"
placeholder="Search"
className="bg-gray-700 text-white border border-gray-600 rounded px-3 py-1 text-sm focus:outline-none focus:ring-2 focus:ring-blue-500"
/>
<button className="bg-blue-600 hover:bg-blue-700 px-3 py-1 rounded text-sm">
Search
</button>
</div>
<div className="flex items-center space-x-2">
<a href="#" className="text-gray-400 hover:text-white">
<svg
className="w-4 h-4"
fill="currentColor"
viewBox="0 0 24 24"
>
<path d="M24 4.557c-.883.392-1.832.656-2.828.775 1.017-.609 1.798-1.574 2.165-2.724-.951.564-2.005.974-3.127 1.195-.897-.957-2.178-1.555-3.594-1.555-3.179 0-5.515 2.966-4.797 6.045-4.091-.205-7.719-2.165-10.148-5.144-1.29 2.213-.669 5.108 1.523 6.574-.806-.026-1.566-.247-2.229-.616-.054 2.281 1.581 4.415 3.949 4.89-.693.188-1.452.232-2.224.084.626 1.956 2.444 3.379 4.6 3.419-2.07 1.623-4.678 2.348-7.29 2.04 2.179 1.397 4.768 2.212 7.548 2.212 9.142 0 14.307-7.721 13.995-14.646.962-.695 1.797-1.562 2.457-2.549z" />
</svg>
</a>
<span className="text-gray-400">0</span>
</div>
</div>
</div>
</div>
</div>
{/* Navigation */}
<nav className="bg-white text-gray-900 border-b border-gray-200">
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div className="flex justify-between items-center h-16">
<div className="flex items-center">
{/* Logo */}
<div className="flex-shrink-0">
<div className="w-10 h-10 bg-orange-500 rounded flex items-center justify-center mr-3">
<svg
className="w-6 h-6 text-white"
fill="currentColor"
viewBox="0 0 24 24"
>
<path d="M18.5 2h-13C4.67 2 4 2.67 4 3.5v17c0 .83.67 1.5 1.5 1.5h13c.83 0 1.5-.67 1.5-1.5v-17c0-.83-.67-1.5-1.5-1.5zM18 20H6V4h12v16zM8 6h8v2H8V6zm0 3h8v2H8V9zm0 3h5v2H8v-2z" />
</svg>
</div>
</div>
<div className="text-xl font-bold text-gray-800">
<div className="flex items-center">
<span className="text-orange-500">AWS</span>
<span className="ml-2">CLOUD</span>
</div>
<div className="text-sm text-gray-600">SERVICES PARTNER</div>
</div>
{/* Desktop Navigation */}
<div className="hidden md:block">
<div className="ml-10 flex items-baseline space-x-8">
<a
href={`/${currentLang}`}
className="text-gray-700 hover:text-blue-600 px-3 py-2 text-sm font-medium"
>
{currentContent.nav.applications}
</a>
<a
href={`/${currentLang}/products`}
className="text-gray-700 hover:text-blue-600 px-3 py-2 text-sm font-medium"
>
{currentContent.nav.product}
</a>
<a
href={`/${currentLang}/solutions`}
className="text-gray-700 hover:text-blue-600 px-3 py-2 text-sm font-medium"
>
{currentContent.nav.industries}
</a>
<a
href={`/${currentLang}/contact`}
className="text-gray-700 hover:text-blue-600 px-3 py-2 text-sm font-medium"
>
{currentContent.nav.sds}
</a>
</div>
</div>
</div>
<div className="flex items-center space-x-4">
{/* Language Selector & CTA */}
<div className="hidden md:flex items-center space-x-4">
<button className="bg-blue-600 hover:bg-blue-700 text-white px-4 py-2 rounded text-sm font-medium transition-colors">
{currentContent.hero.cta}
</button>
<div className="flex items-center space-x-2">
<select
value={currentLang}
onChange={(e) => handleLanguageChange(e.target.value)}
className="bg-white text-gray-700 border border-gray-300 rounded px-2 py-1 text-sm focus:outline-none focus:ring-2 focus:ring-blue-500"
>
<option value="en">EN</option>
<option value="zh-CN"></option>
<option value="zh-TW"></option>
<option value="ko"></option>
<option value="ja"></option>
</select>
</div>
</div>
{/* Mobile menu button */}
<div className="md:hidden">
<button
onClick={() => setIsMenuOpen(!isMenuOpen)}
className="text-gray-700 hover:text-blue-600 focus:outline-none focus:text-blue-600"
>
<svg
className="h-6 w-6"
fill="none"
viewBox="0 0 24 24"
stroke="currentColor"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth={2}
d="M4 6h16M4 12h16M4 18h16"
/>
</svg>
</button>
</div>
</div>
</div>
</div>
{/* Mobile Navigation */}
{isMenuOpen && (
<div className="md:hidden">
<div className="px-2 pt-2 pb-3 space-y-1 sm:px-3 bg-white border-t border-gray-200">
<a
href={`/${currentLang}`}
className="text-gray-700 hover:text-blue-600 block px-3 py-2 text-base font-medium"
>
{currentContent.nav.applications}
</a>
<a
href={`/${currentLang}/products`}
className="text-gray-700 hover:text-blue-600 block px-3 py-2 text-base font-medium"
>
{currentContent.nav.product}
</a>
<a
href={`/${currentLang}/solutions`}
className="text-gray-700 hover:text-blue-600 block px-3 py-2 text-base font-medium"
>
{currentContent.nav.industries}
</a>
<a
href={`/${currentLang}/contact`}
className="text-gray-700 hover:text-blue-600 block px-3 py-2 text-base font-medium"
>
{currentContent.nav.sds}
</a>
</div>
</div>
)}
</nav>
</>
);
}