()
| 534 | } |
| 535 | |
| 536 | function bindTabs(){ |
| 537 | $('navTabs').addEventListener('click', e => { |
| 538 | if(e.target.tagName !== 'BUTTON') return; |
| 539 | const tab = e.target.dataset.tab; |
| 540 | S.activeTab = tab; |
| 541 | document.querySelectorAll('.nav button').forEach(btn => btn.classList.toggle('active', btn === e.target)); |
| 542 | document.querySelectorAll('.panel').forEach(panel => panel.classList.toggle('active', panel.id === 'panel-' + tab)); |
| 543 | $('serversToolbar').style.display = tab === 'servers' ? 'flex' : 'none'; |
| 544 | if(tab === 'config') ensureAdminChecked(); |
| 545 | }); |
| 546 | } |
| 547 | function bindTheme(){ |
| 548 | const btn = $('themeToggle'); |
| 549 | const mql = window.matchMedia('(prefers-color-scheme: light)'); |
no test coverage detected