1-
21import React , { useState , useEffect } from 'react' ;
32
43import { NavLink , Link , useLocation } from 'react-router-dom' ;
54
65import { motion } from 'framer-motion' ;
76
8- import { House , User , BookOpen , Wrench , Article , CaretDown , GameController , List , GithubLogo } from '@phosphor-icons/react' ;
7+ import { House , User , BookOpen , Wrench , Article , CaretDown , GameControllerIcon , List , GithubLogo , GlobeSimple , ArrowSquareOutIcon } from '@phosphor-icons/react' ;
98
109import Fez from './Fez' ;
1110
1211import { version } from '../version' ;
1312
14-
15-
1613const Sidebar = ( { isOpen, toggleSidebar } ) => {
17-
1814 const [ isMainOpen , setIsMainOpen ] = useState ( true ) ;
1915 const [ isContentOpen , setIsContentOpen ] = useState ( true ) ;
20- const [ isGamesOpen , setIsGamesOpen ] = useState ( true ) ;
21- const [ isExternalLinksOpen , setIsExternalLinksOpen ] = useState ( true ) ;
16+ const [ isGamesOpen , setIsGamesOpen ] = useState ( false ) ;
17+ const [ isExternalLinksOpen , setIsExternalLinksOpen ] = useState ( false ) ;
2218 const [ allSectionsOpen , setAllSectionsOpen ] = useState ( true ) ; // New state for collapse all
2319
2420 const location = useLocation ( ) ;
@@ -37,42 +33,22 @@ const Sidebar = ({ isOpen, toggleSidebar }) => {
3733 setIsExternalLinksOpen ( newState ) ;
3834 } ;
3935
40-
41-
4236 const getLinkClass = ( { isActive } ) =>
4337
44-
45-
4638 `flex items-center space-x-3 px-3 py-1 rounded-md transition-colors ${
4739
48-
49-
5040 isActive
5141
52-
53-
5442 ? 'text-primary-400 bg-gray-800 font-bold'
5543
56-
57-
5844 : 'text-gray-300 hover:text-white hover:bg-gray-800'
5945
60-
61-
6246 } `;
6347
64-
65-
66-
67-
68-
69-
7048 const isMainActive = location . pathname === '/' || location . pathname === '/about' ;
7149
7250 const isContentActive = location . pathname . startsWith ( '/blog' ) || location . pathname . startsWith ( '/projects' ) || location . pathname . startsWith ( '/logs' ) ;
7351
74-
75-
7652 const variants = {
7753
7854 open : { x : 0 } ,
@@ -81,8 +57,6 @@ const Sidebar = ({ isOpen, toggleSidebar }) => {
8157
8258 } ;
8359
84-
85-
8660 return (
8761
8862 < >
@@ -97,8 +71,6 @@ const Sidebar = ({ isOpen, toggleSidebar }) => {
9771
9872 > </ div >
9973
100-
101-
10274 { /* Sidebar */ }
10375
10476 < motion . aside
@@ -138,19 +110,19 @@ const Sidebar = ({ isOpen, toggleSidebar }) => {
138110
139111 onClick = { ( ) => setIsMainOpen ( ! isMainOpen ) }
140112
141- className = { `flex items-center justify-between w-full text-sm font-semibold uppercase tracking-wider mb-4 focus:outline-none ${
113+ className = { `flex items-center justify-between w-full text-sm font-normal uppercase tracking-wider mb-4 focus:outline-none ${
142114
143115 isMainActive ? 'text-red-400' : 'text-gray-300'
144116
145117 } `}
146118
147119 >
148120
149- < span > Main</ span >
121+ < span className = "font-arvo" > Main</ span >
150122
151- < CaretDown size = { 20 } className = { `transition-transform ${ isMainOpen ? 'transform rotate-180' : '' } ` } />
123+ < CaretDown size = { 20 } className = { `transition-transform ${ isMainOpen ? 'transform rotate-180' : '' } ` } />
152124
153- </ button >
125+ </ button >
154126
155127 { isMainOpen && (
156128
@@ -184,19 +156,19 @@ const Sidebar = ({ isOpen, toggleSidebar }) => {
184156
185157 onClick = { ( ) => setIsContentOpen ( ! isContentOpen ) }
186158
187- className = { `flex items-center justify-between w-full text-sm font-semibold uppercase tracking-wider mb-4 focus:outline-none ${
159+ className = { `flex items-center justify-between w-full text-sm font-normal uppercase tracking-wider mb-4 focus:outline-none ${
188160
189161 isContentActive ? 'text-red-400' : 'text-gray-300'
190162
191163 } `}
192164
193165 >
194166
195- < span > Content</ span >
167+ < span className = "font-arvo" > Content</ span >
196168
197- < CaretDown size = { 20 } className = { `transition-transform ${ isContentOpen ? 'transform rotate-180' : '' } ` } />
169+ < CaretDown size = { 20 } className = { `transition-transform ${ isContentOpen ? 'transform rotate-180' : '' } ` } />
198170
199- </ button >
171+ </ button >
200172
201173 { isContentOpen && (
202174
@@ -234,35 +206,47 @@ const Sidebar = ({ isOpen, toggleSidebar }) => {
234206
235207 < div className = "mt-8" >
236208
237- < button
209+ < button
210+
211+ onClick = { ( ) => setIsGamesOpen ( ! isGamesOpen ) }
212+
213+ className = { `flex items-center justify-between w-full text-sm font-normal uppercase tracking-wider mb-4 focus:outline-none ${ isGamesOpen ? 'text-gray-300' : 'text-gray-300' } ` }
214+
215+ >
216+ < span className = "flex items-center gap-2 font-arvo" >
217+
218+ < span > Games</ span >
219+
220+ < ArrowSquareOutIcon size = { 16 } />
221+
222+ </ span >
223+
224+ < CaretDown size = { 20 } className = { `transition-transform ${ isGamesOpen ? 'transform rotate-180' : '' } ` } />
225+
226+ </ button >
227+ { isGamesOpen && (
238228
239- onClick = { ( ) => setIsGamesOpen ( ! isGamesOpen ) }
229+ < nav className = "space-y-2 border-l-2 border-gray-700 ml-3 pl-3" >
240230
241- className = { `flex items-center justify-between w-full text-sm font-semibold uppercase tracking-wider mb-4 focus:outline-none ${ isGamesOpen ? ' text-gray-300' : ' text-gray-300' } ` }
231+ < a href = "https://www.nytimes.com/games/wordle/index.html" target = "_blank" rel = "noopener noreferrer" className = { `flex items-center space-x-3 px-3 py-1 rounded-md transition-colors text-gray-300 hover: text-white hover:bg- gray-800` } >
242232
243- >
233+ < GameControllerIcon size = { 24 } / >
244234
245- < span > Games </ span >
235+ < span > Wordle </ span >
246236
247- < CaretDown size = { 20 } className = { `transition-transform ${ isGamesOpen ? 'transform rotate-180' : '' } ` } />
248-
249- </ button >
250-
251- { isGamesOpen && (
252-
253- < nav className = "space-y-2 border-l-2 border-gray-700 ml-3 pl-3" >
237+ </ a >
254238
255- < a href = "https://www.nytimes.com/games/wordle/index.html " target = "_blank" rel = "noopener noreferrer" className = { `flex items-center space-x-3 px-3 py-1 rounded-md transition-colors text-gray-300 hover:text-white hover:bg-gray-800` } >
239+ < a href = "https://openfront.io " target = "_blank" rel = "noopener noreferrer" className = { `flex items-center space-x-3 px-3 py-1 rounded-md transition-colors text-gray-300 hover:text-white hover:bg-gray-800` } >
256240
257- < GameController size = { 24 } />
241+ < GlobeSimple size = { 24 } />
258242
259- < span > Play Wordle </ span >
243+ < span > Openfront.io </ span >
260244
261- </ a >
245+ </ a >
262246
263- </ nav >
247+ </ nav >
264248
265- ) }
249+ ) }
266250
267251 </ div >
268252
@@ -272,11 +256,14 @@ const Sidebar = ({ isOpen, toggleSidebar }) => {
272256
273257 onClick = { ( ) => setIsExternalLinksOpen ( ! isExternalLinksOpen ) }
274258
275- className = { `flex items-center justify-between w-full text-sm font-semibold uppercase tracking-wider mb-4 focus:outline-none ${ isExternalLinksOpen ? 'text-gray-300' : 'text-gray-300' } ` }
259+ className = { `flex items-center justify-between w-full text-sm font-normal uppercase tracking-wider mb-4 focus:outline-none ${ isExternalLinksOpen ? 'text-gray-300' : 'text-gray-300' } ` }
276260
277261 >
278262
279- < span > External Links</ span >
263+ < span className = "flex items-center gap-2 font-arvo" >
264+ < span > External Links</ span >
265+ < ArrowSquareOutIcon size = { 16 } />
266+ </ span >
280267
281268 < CaretDown size = { 20 } className = { `transition-transform ${ isExternalLinksOpen ? 'transform rotate-180' : '' } ` } />
282269
@@ -302,7 +289,7 @@ const Sidebar = ({ isOpen, toggleSidebar }) => {
302289
303290 </ div >
304291
305- < div className = "p-4 text-xs text-gray-500" >
292+ < div className = "p-4 text-xs text-gray-500 text-left " >
306293 < button
307294 onClick = { toggleAllSections }
308295 className = "flex items-center justify-center w-full text-sm font-medium uppercase tracking-wider mb-4 focus:outline-none bg-gray-700 text-white hover:bg-gray-600 rounded-md p-2"
@@ -320,22 +307,17 @@ const Sidebar = ({ isOpen, toggleSidebar }) => {
320307
321308 </ div >
322309
323- < p className = "mt-4" > © { new Date ( ) . getFullYear ( ) } fezcode </ p >
324-
325- < p > Version { version } </ p >
326-
310+ < div className = "flex justify-between items-center mt-4" >
311+ < p > © { new Date ( ) . getFullYear ( ) } fezcode </ p >
312+ < p > Version { version } </ p >
313+ </ div >
327314 </ div >
328315
329316 </ motion . aside >
330317
331318 </ >
332319
333320 ) ;
334-
335321} ;
336322
337-
338-
339323export default Sidebar ;
340-
341-
0 commit comments