@@ -15,6 +15,35 @@ console.log('main.js loaded');
1515 badge . setAttribute ( 'aria-hidden' , 'true' ) ;
1616 } ) ;
1717
18+ // Enable in-panel SPA navigation for data-page elements inside .content too
19+ document . addEventListener ( 'click' , function ( event ) {
20+ const target = event . target . closest ( '[data-page]' ) ;
21+ if ( ! target ) return ;
22+
23+ // Prevent full page reload
24+ event . preventDefault ( ) ;
25+
26+ const page = target . getAttribute ( 'data-page' ) ;
27+ if ( ! page ) return ;
28+
29+ // Highlight selected state if you want
30+ document . querySelectorAll ( '.submenu li' ) . forEach ( li => li . classList . remove ( 'selected' ) ) ;
31+
32+ // Load the HTML into the main content area
33+ fetch ( page )
34+ . then ( response => response . text ( ) )
35+ . then ( html => {
36+ const content = document . querySelector ( '.content' ) ;
37+ if ( content ) {
38+ content . innerHTML = html ;
39+ // Optional: scroll to top after load
40+ content . scrollTo ( { top : 0 , behavior : 'smooth' } ) ;
41+ }
42+ } )
43+ . catch ( err => console . error ( 'Error loading page:' , err ) ) ;
44+ } ) ;
45+
46+
1847 // --- fuzzy matching helpers (used by search overlay) ---
1948 const _norm = ( s ) => String ( s || '' )
2049 . toLowerCase ( )
@@ -226,4 +255,40 @@ console.log('main.js loaded');
226255 setTimeout ( ( ) => li . classList . remove ( 'spotlight' ) , 1100 ) ;
227256 } ) ;
228257
258+ // --- Role-card spotlight navigation (for Logging In page) ---
259+ document . addEventListener ( 'click' , ( e ) => {
260+ const card = e . target . closest ( '.role-card[data-page]' ) ;
261+ if ( ! card ) return ;
262+
263+ e . preventDefault ( ) ;
264+ const page = card . getAttribute ( 'data-page' ) ;
265+ if ( ! page ) return ;
266+
267+ // Find matching sidebar item
268+ const li = document . querySelector ( `.submenu li[data-page="${ page } "]` ) ;
269+ if ( ! li ) {
270+ console . warn ( 'No matching sidebar item for:' , page ) ;
271+ return ;
272+ }
273+
274+ // Expand the section if collapsed
275+ const submenu = li . closest ( '.submenu' ) ;
276+ if ( submenu && submenu . classList . contains ( 'collapsed' ) ) {
277+ const header = submenu . previousElementSibling ;
278+ if ( header ) header . click ( ) ;
279+ }
280+
281+ // Select and trigger load
282+ li . classList . add ( 'selected' ) ;
283+ li . click ( ) ;
284+
285+ // Smooth scroll and spotlight (uses your existing functions)
286+ const container = getScrollContainer ( li ) ;
287+ scrollIntoViewWithin ( container , li ) ;
288+
289+ li . classList . add ( 'spotlight' ) ;
290+ setTimeout ( ( ) => li . classList . remove ( 'spotlight' ) , 1100 ) ;
291+ } ) ;
292+
293+
229294} ) ( ) ;
0 commit comments