/* * AussomNavbar - Reusable site navigation bar. * * Usage: * nav = new AussomNavbar('docs'); * Doc.body().add(nav.getEl().obj); * * ActiveLink values: 'docs', 'download', 'playground', or '' for none. */ class AussomNavbar { public navEl = null; public AussomNavbar(string ActiveLink) { navbar = new BsNavbar('dark', 'dark', 'lg'); navbar.addClass('aussom-navbar'); navbar.addClass('sticky-top'); cont = new BsContainer('fluid'); /* Brand: logo image + text */ brand = new BsNavbarBrand('', '.'); brand.addClass('aussom-navbar-brand'); logoImg = new Img(); logoImg.setAttr('src', 'aussom-logo.png'); logoImg.setAttr('alt', 'Aussom Logo'); logoImg.setAttr('height', '36'); brand.add(logoImg); brand.add(new Text(' Aussom')); toggler = new BsNavbarToggler('aussomNavMenu'); collapse = new BsNavbarCollapse('aussomNavMenu'); navList = new BsNavbarNav(); navList.addClass('ms-lg-auto'); /* Products section - mobile only (hidden on desktop) */ prodHeader = new Li(); prodHeader.setAttr('class', 'nav-item d-lg-none'); prodHeaderLink = new Span(); prodHeaderLink.setAttr('class', 'nav-link nav-menu-header'); prodHeaderLink.add(new Text('Products')); prodHeader.add(prodHeaderLink); navList.add(prodHeader); products = [ ['Aussom Base', 'docsProduct?product=aussom-base', 'icons/aussom-logo-chip.png'], ['Aussom CLI', 'docsProduct?product=aussom', 'icons/aussom-logo-plain-a.png'], ['Aussom-Script', 'docsProduct?product=aussom-script', 'icons/aussom-logo-cloud.png'], ['Aussom Server', 'docsProduct?product=aussom-server', 'icons/aussom-server.png'] ]; for (p : products) { pItem = new Li(); pItem.setAttr('class', 'nav-item nav-product-item d-lg-none'); pLink = new A(); pLink.setAttr('class', 'nav-link'); pLink.setAttr('href', p[1]); pIcon = new Img(); pIcon.setAttr('src', p[2]); pIcon.setAttr('alt', p[0]); pIcon.setAttr('class', 'nav-product-icon'); pLink.add(pIcon); pLink.add(new Text(' ' + p[0])); pItem.add(pLink); navList.add(pItem); } /* Docs link */ docsItem = new Li(); docsItem.setAttr('class', 'nav-item'); docsActive = ActiveLink.equals('docs'); docsItem.add(new BsNavLink('Docs', 'docs', docsActive)); navList.add(docsItem); /* Download link */ dlItem = new Li(); dlItem.setAttr('class', 'nav-item'); dlActive = ActiveLink.equals('download'); dlItem.add(new BsNavLink('Download', 'download', dlActive)); navList.add(dlItem); /* Playground link - opens in new tab */ pgItem = new Li(); pgItem.setAttr('class', 'nav-item'); pgLink = new A(); pgLink.setAttr('class', 'nav-link nav-cta-btn'); pgLink.setAttr('href', 'https://playground.aussom-lang.com'); pgLink.setAttr('target', '_blank'); pgLink.setAttr('rel', 'noopener noreferrer'); pgLink.add(new Text('Playground')); pgItem.add(pgLink); navList.add(pgItem); collapse.add(navList); cont.add(brand); cont.add(toggler); cont.add(collapse); navbar.add(cont); this.navEl = navbar; } public getEl() { return this.navEl; } }