@@ -5,11 +5,16 @@ import Link from 'next/link'
55
66export default function Header ( ) {
77 const [ isMenuOpen , setIsMenuOpen ] = useState ( false )
8+ const [ isResourcesOpen , setIsResourcesOpen ] = useState ( false )
89
910 const toggleMenu = ( ) => {
1011 setIsMenuOpen ( ! isMenuOpen )
1112 }
1213
14+ const toggleResources = ( ) => {
15+ setIsResourcesOpen ( ! isResourcesOpen )
16+ }
17+
1318 return (
1419 < >
1520 < header
@@ -44,18 +49,77 @@ export default function Header() {
4449 >
4550 Services
4651 </ Link >
47- < Link
48- href = "/resources"
49- className = "text-white hover:text-brand-green-accent transition-colors focus:outline-none focus:ring-2 focus:ring-brand-green-accent focus:ring-offset-2 rounded-lg px-2 py-1"
50- >
51- Resources
52- </ Link >
53- < Link
54- href = "/network"
55- className = "text-white hover:text-brand-green-accent transition-colors focus:outline-none focus:ring-2 focus:ring-brand-green-accent focus:ring-offset-2 rounded-lg px-2 py-1"
56- >
57- Pythoness Network
58- </ Link >
52+ < div className = "relative" >
53+ < button
54+ onClick = { toggleResources }
55+ className = "text-white hover:text-brand-green-accent transition-colors focus:outline-none focus:ring-2 focus:ring-brand-green-accent focus:ring-offset-2 rounded-lg px-2 py-1 flex items-center"
56+ aria-expanded = { isResourcesOpen }
57+ aria-haspopup = "true"
58+ >
59+ Resources
60+ < svg
61+ className = { `ml-1 h-4 w-4 transition-transform ${ isResourcesOpen ? 'rotate-180' : '' } ` }
62+ fill = "none"
63+ stroke = "currentColor"
64+ viewBox = "0 0 24 24"
65+ >
66+ < path strokeLinecap = "round" strokeLinejoin = "round" strokeWidth = { 2 } d = "M19 9l-7 7-7-7" />
67+ </ svg >
68+ </ button >
69+ { isResourcesOpen && (
70+ < div className = "absolute top-full left-0 mt-2 w-64 bg-white rounded-lg shadow-lg border border-brand-green-accent/20 py-2 z-50" >
71+ < Link
72+ href = "/resources"
73+ className = "block px-4 py-2 text-brand-green-hyperlink hover:text-brand-green-accent hover:bg-brand-green-accent/10 transition-colors"
74+ onClick = { ( ) => setIsResourcesOpen ( false ) }
75+ >
76+ All Resources
77+ </ Link >
78+ < Link
79+ href = "/digital-spring-cleaning"
80+ className = "block px-4 py-2 text-brand-green-hyperlink hover:text-brand-green-accent hover:bg-brand-green-accent/10 transition-colors"
81+ onClick = { ( ) => setIsResourcesOpen ( false ) }
82+ >
83+ Digital Spring Cleaning
84+ </ Link >
85+ < Link
86+ href = "/mindful-automation"
87+ className = "block px-4 py-2 text-brand-green-hyperlink hover:text-brand-green-accent hover:bg-brand-green-accent/10 transition-colors"
88+ onClick = { ( ) => setIsResourcesOpen ( false ) }
89+ >
90+ Mindful Automation
91+ </ Link >
92+ < Link
93+ href = "/accessibility"
94+ className = "block px-4 py-2 text-brand-green-hyperlink hover:text-brand-green-accent hover:bg-brand-green-accent/10 transition-colors"
95+ onClick = { ( ) => setIsResourcesOpen ( false ) }
96+ >
97+ Accessibility Legal Guide
98+ </ Link >
99+ < Link
100+ href = "/back-to-basics"
101+ className = "block px-4 py-2 text-brand-green-hyperlink hover:text-brand-green-accent hover:bg-brand-green-accent/10 transition-colors"
102+ onClick = { ( ) => setIsResourcesOpen ( false ) }
103+ >
104+ Back to Basics
105+ </ Link >
106+ < Link
107+ href = "/ai-mythbusting"
108+ className = "block px-4 py-2 text-brand-green-hyperlink hover:text-brand-green-accent hover:bg-brand-green-accent/10 transition-colors"
109+ onClick = { ( ) => setIsResourcesOpen ( false ) }
110+ >
111+ AI Myth-Busting
112+ </ Link >
113+ < Link
114+ href = "/vibe-coding-cheatsheet"
115+ className = "block px-4 py-2 text-brand-green-hyperlink hover:text-brand-green-accent hover:bg-brand-green-accent/10 transition-colors"
116+ onClick = { ( ) => setIsResourcesOpen ( false ) }
117+ >
118+ Vibe Coding Cheatsheet
119+ </ Link >
120+ </ div >
121+ ) }
122+ </ div >
59123 < Link
60124 href = "/blog"
61125 className = "text-white hover:text-brand-green-accent transition-colors focus:outline-none focus:ring-2 focus:ring-brand-green-accent focus:ring-offset-2 rounded-lg px-2 py-1"
@@ -134,20 +198,60 @@ export default function Header() {
134198 >
135199 Services
136200 </ Link >
137- < Link
138- href = "/resources"
139- className = "text-white hover:text-brand-green-accent transition-colors focus:outline-none focus:ring-2 focus:ring-brand-green-accent focus:ring-offset-2 rounded-lg px-2 py-1"
140- onClick = { ( ) => setIsMenuOpen ( false ) }
141- >
142- Resources
143- </ Link >
144- < Link
145- href = "/network"
146- className = "text-white hover:text-brand-green-accent transition-colors focus:outline-none focus:ring-2 focus:ring-brand-green-accent focus:ring-offset-2 rounded-lg px-2 py-1"
147- onClick = { ( ) => setIsMenuOpen ( false ) }
148- >
149- Pythoness Network
150- </ Link >
201+ < div className = "space-y-2" >
202+ < div className = "text-white font-medium px-2 py-1" > Resources</ div >
203+ < div className = "ml-4 space-y-2" >
204+ < Link
205+ href = "/resources"
206+ className = "block text-white/80 hover:text-brand-green-accent transition-colors focus:outline-none focus:ring-2 focus:ring-brand-green-accent focus:ring-offset-2 rounded-lg px-2 py-1"
207+ onClick = { ( ) => setIsMenuOpen ( false ) }
208+ >
209+ All Resources
210+ </ Link >
211+ < Link
212+ href = "/digital-spring-cleaning"
213+ className = "block text-white/80 hover:text-brand-green-accent transition-colors focus:outline-none focus:ring-2 focus:ring-brand-green-accent focus:ring-offset-2 rounded-lg px-2 py-1"
214+ onClick = { ( ) => setIsMenuOpen ( false ) }
215+ >
216+ Digital Spring Cleaning
217+ </ Link >
218+ < Link
219+ href = "/mindful-automation"
220+ className = "block text-white/80 hover:text-brand-green-accent transition-colors focus:outline-none focus:ring-2 focus:ring-brand-green-accent focus:ring-offset-2 rounded-lg px-2 py-1"
221+ onClick = { ( ) => setIsMenuOpen ( false ) }
222+ >
223+ Mindful Automation
224+ </ Link >
225+ < Link
226+ href = "/accessibility"
227+ className = "block text-white/80 hover:text-brand-green-accent transition-colors focus:outline-none focus:ring-2 focus:ring-brand-green-accent focus:ring-offset-2 rounded-lg px-2 py-1"
228+ onClick = { ( ) => setIsMenuOpen ( false ) }
229+ >
230+ Accessibility Legal Guide
231+ </ Link >
232+ < Link
233+ href = "/back-to-basics"
234+ className = "block text-white/80 hover:text-brand-green-accent transition-colors focus:outline-none focus:ring-2 focus:ring-brand-green-accent focus:ring-offset-2 rounded-lg px-2 py-1"
235+ onClick = { ( ) => setIsMenuOpen ( false ) }
236+ >
237+ Back to Basics
238+ </ Link >
239+ < Link
240+ href = "/ai-mythbusting"
241+ className = "block text-white/80 hover:text-brand-green-accent transition-colors focus:outline-none focus:ring-2 focus:ring-brand-green-accent focus:ring-offset-2 rounded-lg px-2 py-1"
242+ onClick = { ( ) => setIsMenuOpen ( false ) }
243+ >
244+ AI Myth-Busting
245+ </ Link >
246+ < Link
247+ href = "/vibe-coding-cheatsheet"
248+ className = "block text-white/80 hover:text-brand-green-accent transition-colors focus:outline-none focus:ring-2 focus:ring-brand-green-accent focus:ring-offset-2 rounded-lg px-2 py-1"
249+ onClick = { ( ) => setIsMenuOpen ( false ) }
250+ >
251+ Vibe Coding Cheatsheet
252+ </ Link >
253+ </ div >
254+ </ div >
151255 < Link
152256 href = "/blog"
153257 className = "text-white hover:text-brand-green-accent transition-colors focus:outline-none focus:ring-2 focus:ring-brand-green-accent focus:ring-offset-2 rounded-lg px-2 py-1"
0 commit comments