@@ -455,7 +455,7 @@ export async function exporter(argument: ProjectExportArguments, json: any) {
455455 <footer class="text-muted py-3">
456456 <div class="container">
457457 <p class="float-end">
458- <a href="#">Back to top</a>
458+ <a href="#" aria-label="Go to top">↑ Top </a>
459459 </p>
460460 <p>${
461461 json . footer ||
@@ -630,6 +630,7 @@ function generateNavbar(navbar: any, hasSearch: boolean = false): string {
630630 const bg = navbar ?. background || '#0B6E75'
631631 const theme = navbar ?. theme === 'light' ? 'navbar-light' : 'navbar-dark'
632632 const brand = navbar ?. brand || ''
633+ const brandUrl = navbar ?. url || '#'
633634 const links : any [ ] = navbar ?. links || [ ]
634635
635636 let linkItems = ''
@@ -651,20 +652,52 @@ function generateNavbar(navbar: any, hasSearch: boolean = false): string {
651652 : ''
652653
653654 return `
654- <nav class="navbar navbar-expand-lg ${ theme } sticky-top" style="background-color: ${ bg } ;">
655- <div class="container">
656- <a class="navbar-brand" href="# ">${ brand } </a>
657- <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
655+ <nav class="navbar navbar-expand ${ theme } sticky-top" id="mainNavbar " style="background-color: ${ bg } ;">
656+ <div class="container-fluid px-4 ">
657+ <a class="navbar-brand" href="${ brandUrl } ">${ brand } </a>
658+ <button class="navbar-toggler d-none " type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
658659 <span class="navbar-toggler-icon"></span>
659660 </button>
660661 <div class="collapse navbar-collapse" id="navbarNav">
661- <ul class="navbar-nav ms-auto">
662+ <ul class="navbar-nav ms-auto flex-nowrap" style="white-space:nowrap; ">
662663 ${ linkItems }
663664 ${ searchItem }
664665 </ul>
665666 </div>
666667 </div>
667- </nav>`
668+ </nav>
669+ <script>
670+ (function() {
671+ var nav = document.getElementById('mainNavbar');
672+ var toggler = nav.querySelector('.navbar-toggler');
673+ var collapse = document.getElementById('navbarNav');
674+ var brand = nav.querySelector('.navbar-brand');
675+
676+ function check() {
677+ // Measure in expanded state (navbar-expand makes collapse display:flex via Bootstrap CSS)
678+ nav.classList.add('navbar-expand');
679+ collapse.classList.remove('show');
680+
681+ var navWidth = nav.offsetWidth;
682+ var brandWidth = brand ? brand.offsetWidth : 0;
683+ var listWidth = collapse.scrollWidth;
684+
685+ var overflows = (brandWidth + listWidth + 48) > navWidth;
686+ if (overflows) {
687+ nav.classList.remove('navbar-expand');
688+ toggler.classList.remove('d-none');
689+ collapse.classList.remove('show');
690+ } else {
691+ // navbar-expand already set above; Bootstrap CSS shows collapse as flex automatically
692+ toggler.classList.add('d-none');
693+ }
694+ }
695+
696+ document.addEventListener('DOMContentLoaded', check);
697+ var ro = new ResizeObserver(check);
698+ ro.observe(nav);
699+ })();
700+ </script>`
668701}
669702
670703function removeContext ( obj ) {
0 commit comments