source: src/components/navbar.tsx@ 875f7d6

Last change on this file since 875f7d6 was 875f7d6, checked in by stefansaveski <stefansaveski19@…>, 12 months ago

Initial commit with Next.js project setup

  • Property mode set to 100644
File size: 3.2 KB
Line 
1"use client"
2import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
3import { faUser } from '@fortawesome/free-solid-svg-icons';
4import { faBookmark } from '@fortawesome/free-solid-svg-icons';
5import { faBook } from '@fortawesome/free-solid-svg-icons';
6import { faPenToSquare } from '@fortawesome/free-solid-svg-icons';
7import { faListCheck } from '@fortawesome/free-solid-svg-icons';
8import { faFilePdf } from '@fortawesome/free-solid-svg-icons';
9import { faBars, faTimes, faGraduationCap } from '@fortawesome/free-solid-svg-icons';
10import { useState } from 'react';
11
12const Navbar = () => {
13 const [isMenuOpen, setIsMenuOpen] = useState(false);
14
15 const toggleMenu = () => {
16 setIsMenuOpen(!isMenuOpen);
17 };
18
19 const menuItems = [
20 { icon: faUser, label: 'Профил' },
21 { icon: faBookmark, label: 'Семестри' },
22 { icon: faBook, label: 'Предмети' },
23 { icon: faPenToSquare, label: 'Пријави' },
24 { icon: faListCheck, label: 'Положени' },
25 { icon: faFilePdf, label: 'Документи' }
26 ];
27
28 return (
29 <>
30 {/* Desktop Navbar */}
31 <nav className="hidden md:flex flex-row gap-2 justify-evenly bg-primary text-white p-7 rounded-xl my-5 text-xl">
32 {menuItems.map((item, index) => (
33 <div key={index} className="group flex flex-row items-center gap-2 px-3 py-2 rounded-lg cursor-pointer transition-all duration-300 hover:bg-white hover:bg-opacity-20 hover:scale-105 hover:shadow-lg hover:text-primary">
34 <FontAwesomeIcon icon={item.icon} className="transition-transform duration-300 group-hover:rotate-12" />
35 <span>{item.label}</span>
36 </div>
37 ))}
38 </nav>
39
40 {/* Mobile Navbar */}
41 <nav className="md:hidden bg-primary text-white rounded-xl my-5">
42 <div className="flex justify-between items-center p-4">
43 {/* IKnow Logo/Text */}
44 <div className="flex items-center gap-2 text-xl font-bold">
45 <FontAwesomeIcon icon={faGraduationCap} className="text-xl" />
46 IKnow
47 </div>
48
49 {/* Hamburger Menu Button */}
50 <button
51 onClick={toggleMenu}
52 className="p-2 rounded-lg hover:bg-white hover:bg-opacity-20 transition-colors duration-300"
53 >
54 <FontAwesomeIcon
55 icon={isMenuOpen ? faTimes : faBars}
56 className="text-xl transition-transform duration-300"
57 />
58 </button>
59 </div>
60
61 {/* Mobile Menu Items */}
62 <div className={`overflow-hidden transition-all duration-300 ease-in-out ${
63 isMenuOpen ? 'max-h-96 opacity-100' : 'max-h-0 opacity-0'
64 }`}>
65 <div className="px-4 pb-4 space-y-2">
66 {menuItems.map((item, index) => (
67 <div key={index} className="group flex flex-row items-center gap-3 px-3 py-3 rounded-lg cursor-pointer transition-all duration-300 hover:bg-white hover:bg-opacity-20 hover:text-primary">
68 <FontAwesomeIcon icon={item.icon} className="transition-transform duration-300 group-hover:rotate-12" />
69 <span className="text-lg">{item.label}</span>
70 </div>
71 ))}
72 </div>
73 </div>
74 </nav>
75 </>
76 );
77};
78
79export default Navbar;
Note: See TracBrowser for help on using the repository browser.