66 < title > ProStore Web</ title >
77 < link rel ="stylesheet " href ="styles.css ">
88 < link rel ="stylesheet " href ="certStyles.css ">
9- <!-- Google Font -->
10- < link href ="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;600;700&display=swap " rel ="stylesheet ">
119 </ head >
1210 < body >
1311 < div class ="content-area ">
14- < button class ="hamburger " aria-label ="Toggle sidebar " aria-expanded ="false ">
15- < svg width ="22 " height ="16 " viewBox ="0 0 22 16 " fill ="none " xmlns ="http://www.w3.org/2000/svg " aria-hidden ="true ">
16- < rect width ="22 " height ="2 " rx ="1 " fill ="currentColor "/>
17- < rect y ="7 " width ="22 " height ="2 " rx ="1 " fill ="currentColor "/>
18- < rect y ="14 " width ="22 " height ="2 " rx ="1 " fill ="currentColor "/>
19- </ svg >
20- </ button >
21-
2212 < div class ="sidebar ">
2313 < div onclick ="window.location.href = 'index.html'; " class ="sidebar-item "> ProStore Installer</ div >
2414 < div onclick ="window.location.href = 'cert.html'; " class ="sidebar-item active "> Certificate Manager & Status</ div >
@@ -39,7 +29,6 @@ <h1 class="title">Certificate Manager</h1>
3929 <!-- Cards container -->
4030 < div id ="certList " class ="cert-list " aria-live ="polite "> </ div >
4131
42- <!-- Updates -->
4332<!-- Updates -->
4433< div id ="updates " class ="updates-box ">
4534 < div class ="updates-header ">
@@ -65,65 +54,5 @@ <h2 id="modalName"></h2>
6554 </ div >
6655
6756 < script src ="certManager.js "> </ script >
68- < script >
69- // sidebar-toggle (minimal) — add to certManager.js end
70- ( function ( ) {
71- const body = document . body ;
72- const hamburger = document . querySelector ( '.hamburger' ) ;
73- if ( ! hamburger ) return ;
74- // create overlay node if missing
75- let overlay = document . querySelector ( '.sidebar-overlay' ) ;
76- if ( ! overlay ) {
77- overlay = document . createElement ( 'div' ) ;
78- overlay . className = 'sidebar-overlay' ;
79- document . body . appendChild ( overlay ) ;
80- }
81-
82- function openSidebar ( ) {
83- body . classList . add ( 'sidebar-open' ) ;
84- hamburger . setAttribute ( 'aria-expanded' , 'true' ) ;
85- // focus first item for keyboard users
86- const first = document . querySelector ( '.sidebar .sidebar-item' ) ;
87- if ( first ) first . focus ( ) ;
88- }
89- function closeSidebar ( ) {
90- body . classList . remove ( 'sidebar-open' ) ;
91- hamburger . setAttribute ( 'aria-expanded' , 'false' ) ;
92- hamburger . focus ( ) ;
93- }
94- function toggleSidebar ( ) {
95- if ( body . classList . contains ( 'sidebar-open' ) ) closeSidebar ( ) ;
96- else openSidebar ( ) ;
97- }
98-
99- hamburger . addEventListener ( 'click' , ( e ) => {
100- e . stopPropagation ( ) ;
101- toggleSidebar ( ) ;
102- } ) ;
103-
104- overlay . addEventListener ( 'click' , closeSidebar ) ;
105- document . addEventListener ( 'keydown' , ( e ) => {
106- if ( e . key === 'Escape' && body . classList . contains ( 'sidebar-open' ) ) closeSidebar ( ) ;
107- } ) ;
108-
109- // auto-close on menu item click for small screens
110- document . addEventListener ( 'click' , ( e ) => {
111- const item = e . target . closest ( '.sidebar-item' ) ;
112- if ( ! item ) return ;
113- if ( window . innerWidth <= 860 ) {
114- setTimeout ( closeSidebar , 160 ) ;
115- }
116- } ) ;
117-
118- // keep state sane when resizing/rotating
119- window . addEventListener ( 'resize' , ( ) => {
120- if ( window . innerWidth > 860 ) {
121- body . classList . remove ( 'sidebar-open' ) ;
122- hamburger . setAttribute ( 'aria-expanded' , 'false' ) ;
123- }
124- } ) ;
125- } ) ( ) ;
126-
127- </ script >
12857 </ body >
12958</ html >
0 commit comments