| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- import { useState } from 'react';
- import { FaBars, FaTimes, FaChevronDown } from 'react-icons/fa';
- import logo from '../assets/logo.png';
- const menuItems = [
- { label: '회사소개', children: [] },
- { label: '사업소개', children: [] },
- { label: '사업실적', children: [] },
- { label: '고객지원', children: [] },
- ];
- const ResponsiveNavbar = () => {
- const [isOpen, setIsOpen] = useState(false);
- const [expandedMenu, setExpandedMenu] = useState(null);
- const toggleMobileMenu = () => {
- setIsOpen(prev => !prev);
- };
- const toggleSubMenu = (index) => {
- setExpandedMenu(prev => (prev === index ? null : index));
- };
- return (
- <header className="fixed top-0 left-0 w-full z-50 bg-white shadow">
- <div className="flex items-center justify-between px-4 md:px-10 py-4">
- <img src={logo} alt="Logo" className="h-8" />
- {/* Desktop Nav */}
- <nav className="hidden md:flex space-x-10 font-semibold">
- {menuItems.map((item, idx) => (
- <a href="#" key={idx} className="hover:text-blue-600">
- {item.label}
- </a>
- ))}
- </nav>
- {/* Mobile Toggle */}
- <button onClick={toggleMobileMenu} className="md:hidden text-2xl">
- {isOpen ? <FaTimes /> : <FaBars />}
- </button>
- </div>
- {/* Mobile Menu */}
- {isOpen && (
- <div className="md:hidden bg-white w-full h-screen fixed top-0 right-0 p-4 pt-20 z-40 overflow-auto">
- <img src={logo} alt="Logo" className="h-8 mb-6" />
- <ul>
- {menuItems.map((item, idx) => (
- <li key={idx} className="mb-4">
- <button
- onClick={() => toggleSubMenu(idx)}
- className="flex justify-between items-center w-full font-semibold text-lg"
- >
- {item.label}
- <FaChevronDown
- className={`ml-2 transform transition-transform ${
- expandedMenu === idx ? 'rotate-180' : ''
- }`}
- />
- </button>
- {expandedMenu === idx && (
- <ul className="ml-4 mt-2 space-y-2">
- {(item.children.length > 0 ? item.children : ['하위 메뉴 준비중']).map((sub, i) => (
- <li key={i} className="text-gray-600">
- <a href="#">{sub}</a>
- </li>
- ))}
- </ul>
- )}
- </li>
- ))}
- </ul>
- </div>
- )}
- </header>
- );
- };
- export default ResponsiveNavbar;
|