@@ -10,7 +10,7 @@ import {
1010 AiOutlineDownload ,
1111 AiFillStar
1212} from "react-icons/ai" ;
13- import { MdWorkOutline } from "react-icons/md" ;
13+ import { MdWorkOutline , MdDarkMode , MdLightMode } from "react-icons/md" ;
1414import { FiSidebar , FiMapPin , FiMail , FiPhone } from "react-icons/fi" ;
1515import { FaLinkedinIn , FaWeixin } from "react-icons/fa" ;
1616import { SiBilibili } from "react-icons/si" ;
@@ -155,7 +155,7 @@ function NavLinks({ items = NAV_ITEMS, linkClassName, iconClassName, onClick, na
155155 } ) ;
156156}
157157
158- function NavBar ( { triggerPreloader } ) {
158+ function NavBar ( { triggerPreloader, theme , toggleTheme } ) {
159159 const [ isExpanded , setIsExpanded ] = useState ( false ) ;
160160 const { isSideNavVisible, toggleSideNav } = useNavMode ( ) ;
161161 const { isScrolled, isTopNavHidden, isBottomNavHidden } = useScrollHideNav ( { isExpanded, setIsExpanded } ) ;
@@ -326,8 +326,16 @@ function NavBar({ triggerPreloader }) {
326326 </ Navbar . Collapse >
327327 </ div >
328328
329- { /* Right Column: GitHub */ }
330- < div className = "navbar-right-col" >
329+ { /* Right Column: GitHub & Theme Toggle */ }
330+ < div className = "navbar-right-col" style = { { display : 'flex' , gap : '12px' , alignItems : 'center' } } >
331+ < button
332+ type = "button"
333+ className = "theme-toggle-btn"
334+ onClick = { toggleTheme }
335+ aria-label = "Toggle Theme"
336+ >
337+ { theme === "dark" ? < MdLightMode /> : < MdDarkMode /> }
338+ </ button >
331339 < a
332340 href = "https://github.com/Magicherry/Bits-of-Me"
333341 target = "_blank"
@@ -347,12 +355,18 @@ function NavBar({ triggerPreloader }) {
347355 < div className = { `floating-nav-container ${ isSideNavVisible ? "show" : "" } ` } >
348356 < div className = "floating-nav-panel" >
349357 < div className = "floating-nav-header" >
350- < span className = "floating-nav-brand" onClick = { ( ) => { navigate ( "/" ) ; if ( triggerPreloader ) { triggerPreloader ( ) ; } } } >
351- Bits of Me
352- </ span >
353358 < button type = "button" className = "floating-nav-close" onClick = { toggleSideNav } aria-label = "Collapse to top navigation" >
354359 < FiSidebar />
355360 </ button >
361+ < button
362+ type = "button"
363+ className = "theme-toggle-btn"
364+ onClick = { toggleTheme }
365+ aria-label = "Toggle Theme"
366+ style = { { width : '40px' , height : '40px' , fontSize : '1.1rem' } }
367+ >
368+ { theme === "dark" ? < MdLightMode /> : < MdDarkMode /> }
369+ </ button >
356370 </ div >
357371
358372 < div className = "floating-nav-profile" >
@@ -480,6 +494,16 @@ function NavBar({ triggerPreloader }) {
480494 />
481495 </ Nav >
482496 </ div >
497+
498+ { /* Mobile Theme Toggle Button */ }
499+ < button
500+ type = "button"
501+ className = "mobile-theme-toggle-btn"
502+ onClick = { toggleTheme }
503+ aria-label = "Toggle Theme"
504+ >
505+ { theme === "dark" ? < MdLightMode /> : < MdDarkMode /> }
506+ </ button >
483507 </ div >
484508
485509 < Modal show = { showWechatModal } onHide = { ( ) => setShowWechatModal ( false ) } centered >
0 commit comments