components/navigation/02-menu/menu.html (62 lines of code) (raw):

{# @menu #} <nav class="mzp-c-menu mzp-is-basic"> <ul class="mzp-c-menu-category-list"> <li class="mzp-c-menu-category"> <a class="mzp-c-menu-title" href="https://www.mozilla.org/">Sample Link</a> </li> <li class="mzp-c-menu-category mzp-has-drop-down mzp-js-expandable"> <a class="mzp-c-menu-title" href="#" aria-haspopup="true" aria-controls="mzp-c-menu-panel-example">Sample Link with Popup</a> <div class="mzp-c-menu-panel mzp-has-card" id="mzp-c-menu-panel-example"> <div class="mzp-c-menu-panel-container"> <button class="mzp-c-menu-button-close" type="button" aria-controls="mzp-c-menu-panel-example" > Close menu </button> <div class="mzp-c-menu-panel-content"> <ul> <li> {% render '@menu-item', { link: '' }, merge=True %} </li> <li> {% render '@menu-item', { link: '' }, merge=True %} </li> </ul> <ul> <li> {% render '@menu-item', { description: 'This is a short description with only a single sentence and no more.' } %} </li> <li> {% render '@menu-item', { description: 'This is a short description with only a single sentence and no more.' } %} </li> <li> {% render '@menu-item', { description: 'This is a short description with only a single sentence and no more.' } %} </li> </ul> </div> <div class="mzp-c-menu-panel-card"> {% render '@card--extra-small', { class: 'mzp-c-card-extra-small mzp-has-aspect-3-2', image: '/img/image-3-2.jpg', link: '#', title: 'A short title', desc: 'This is an optional card included in the menu. Only visible on wide viewports.' } %} </div> </div> </div> </li> </ul> </nav> <script src="{{ '/protocol/js/menu.js' | path }}"></script> <script> window.MzpMenu.init({ onMenuOpen: function () { console.log('Menu opened'); }, onMenuClose: function () { console.log('Menu closed'); }, onMenuButtonClose: function () { console.log( 'Menu close button clicked'); } }); </script>