diff --git a/src/components/Navbar copy 2.tsx b/src/components/Navbar copy 2.tsx new file mode 100644 index 0000000000000000000000000000000000000000..b3dd8fbf9e6cf2abb7afa8513f8361137239f6ee --- /dev/null +++ b/src/components/Navbar copy 2.tsx @@ -0,0 +1,100 @@ +// å¯¼å…¥å›¾æ ‡ +import Nav from "react-bootstrap/Nav"; +import BootstrapNavbar from "react-bootstrap/Navbar"; +import NavDropdown from "react-bootstrap/NavDropdown"; +import { Link } from "react-router-dom"; +import Pages from "../pages.ts"; +import { Container } from "react-bootstrap"; +import "./Navbar.css"; +// å¯¼å…¥æ›´å¤šå›¾æ ‡ +import { + FaHome, + FaFolder, + FaInfo, + FaFlask, + FaUsers, + FaCog, + FaBook, + FaTrophy, + FaLightbulb, + FaChartBar +} from "react-icons/fa"; + +// åˆ›å»ºä¸€ä¸ªå›¾æ ‡æ˜ å°„å¯¹è±¡ +const iconMap = { + Home: FaHome, + About: FaInfo, + Team: FaUsers, + Project: FaFlask, + Parts: FaCog, + Lab: FaBook, + Human: FaUsers, + Model: FaChartBar, + Results: FaTrophy, + Implementation: FaLightbulb, + // æ·»åŠ æ›´å¤šæ˜ å°„... +}; + +export function Navbar() { + const pages = Pages.map((item, pageIndex) => { + if ("folder" in item && item.folder) { + const folderItems = item.folder.map((subpage, subpageIndex) => { + if (subpage.path) { + const SubIcon = iconMap[subpage.name] || FaFolder; + return ( + <NavDropdown.Item + key={`subpage-${pageIndex}-${subpageIndex}`} + as={Link} + to={subpage.path} + className="custom-dropdown-menu" + > + <SubIcon className="nav-icon" /> {subpage.name} + </NavDropdown.Item> + ); + } + }); + return ( + <NavDropdown + key={`page-${pageIndex}`} + title={ + <> + <FaFolder className="nav-icon" /> {item.name} + </> + } + id="basic-nav-dropdown" + className="custom-dropdown-menu" + > + {folderItems} + </NavDropdown> + ); + } else if ("path" in item && item.path) { + const Icon = iconMap[item.name] || FaFolder; + return ( + <Nav.Link + key={`page-${pageIndex}`} + as={Link} + to={item.path} + className="custom-dropdown-menu" + > + <Icon className="nav-icon" /> {item.name} + </Nav.Link> + ); + } + }); + + + +return ( + <BootstrapNavbar expand="lg" className="apple-navbar" fixed="top"> + <Container fluid> + <BootstrapNavbar.Brand as={Link} to="/" className="apple-brand"> + <img src="https://static.igem.wiki/teams/5378/lesser-panda/logo.webp" className="apple-logo" alt="Logo" /> + </BootstrapNavbar.Brand> + <BootstrapNavbar.Toggle aria-controls="basic-navbar-nav" className="apple-toggler" /> + <BootstrapNavbar.Collapse id="basic-navbar-nav"> + <Nav className="ms-auto apple-nav">{pages}</Nav> + </BootstrapNavbar.Collapse> + </Container> + </BootstrapNavbar> +); +} \ No newline at end of file diff --git a/src/components/Navbar.tsx b/src/components/Navbar.tsx index b3dd8fbf9e6cf2abb7afa8513f8361137239f6ee..6ffa8b2730767691ba033aad55bc2c591bfc6287 100644 --- a/src/components/Navbar.tsx +++ b/src/components/Navbar.tsx @@ -1,46 +1,17 @@ -// å¯¼å…¥å›¾æ ‡ + import Nav from "react-bootstrap/Nav"; import BootstrapNavbar from "react-bootstrap/Navbar"; import NavDropdown from "react-bootstrap/NavDropdown"; import { Link } from "react-router-dom"; import Pages from "../pages.ts"; import { Container } from "react-bootstrap"; -import "./Navbar.css"; -// å¯¼å…¥æ›´å¤šå›¾æ ‡ -import { - FaHome, - FaFolder, - FaInfo, - FaFlask, - FaUsers, - FaCog, - FaBook, - FaTrophy, - FaLightbulb, - FaChartBar -} from "react-icons/fa"; - -// åˆ›å»ºä¸€ä¸ªå›¾æ ‡æ˜ å°„å¯¹è±¡ -const iconMap = { - Home: FaHome, - About: FaInfo, - Team: FaUsers, - Project: FaFlask, - Parts: FaCog, - Lab: FaBook, - Human: FaUsers, - Model: FaChartBar, - Results: FaTrophy, - Implementation: FaLightbulb, - // æ·»åŠ æ›´å¤šæ˜ å°„... -}; +import "./Navbar.css"; // æ·»åŠ è¿™è¡Œæ¥å¼•å…¥è‡ªå®šä¹‰ CSS 文件的 export function Navbar() { const pages = Pages.map((item, pageIndex) => { if ("folder" in item && item.folder) { const folderItems = item.folder.map((subpage, subpageIndex) => { if (subpage.path) { - const SubIcon = iconMap[subpage.name] || FaFolder; return ( <NavDropdown.Item key={`subpage-${pageIndex}-${subpageIndex}`} @@ -48,7 +19,7 @@ export function Navbar() { to={subpage.path} className="custom-dropdown-menu" > - <SubIcon className="nav-icon" /> {subpage.name} + {subpage.name} </NavDropdown.Item> ); } @@ -56,11 +27,7 @@ export function Navbar() { return ( <NavDropdown key={`page-${pageIndex}`} - title={ - <> - <FaFolder className="nav-icon" /> {item.name} - </> - } + title={item.name} id="basic-nav-dropdown" className="custom-dropdown-menu" > @@ -68,33 +35,28 @@ export function Navbar() { </NavDropdown> ); } else if ("path" in item && item.path) { - const Icon = iconMap[item.name] || FaFolder; return ( <Nav.Link - key={`page-${pageIndex}`} - as={Link} - to={item.path} - className="custom-dropdown-menu" + key={`page-${pageIndex}`} as={Link} to={item.path} + className="custom-dropdown-menu" > - <Icon className="nav-icon" /> {item.name} + {item.name} </Nav.Link> ); } }); - - -return ( - <BootstrapNavbar expand="lg" className="apple-navbar" fixed="top"> - <Container fluid> - <BootstrapNavbar.Brand as={Link} to="/" className="apple-brand"> - <img src="https://static.igem.wiki/teams/5378/lesser-panda/logo.webp" className="apple-logo" alt="Logo" /> - </BootstrapNavbar.Brand> - <BootstrapNavbar.Toggle aria-controls="basic-navbar-nav" className="apple-toggler" /> - <BootstrapNavbar.Collapse id="basic-navbar-nav"> - <Nav className="ms-auto apple-nav">{pages}</Nav> - </BootstrapNavbar.Collapse> - </Container> - </BootstrapNavbar> -); + return ( + <BootstrapNavbar expand="lg" className="apple-navbar" fixed="top"> + <Container fluid> + <BootstrapNavbar.Brand as={Link} to="/" className="apple-brand"> + <img src="https://static.igem.wiki/teams/5378/lesser-panda/logo.webp" className="apple-logo" alt="Logo" /> + </BootstrapNavbar.Brand> + <BootstrapNavbar.Toggle aria-controls="basic-navbar-nav" className="apple-toggler" /> + <BootstrapNavbar.Collapse id="basic-navbar-nav"> + <Nav className="ms-auto apple-nav">{pages}</Nav> + </BootstrapNavbar.Collapse> + </Container> + </BootstrapNavbar> + ); } \ No newline at end of file