mixin menuItem(link, text, isExpClass = "")
    if global.pageHref == link
        li 
            a(href="/" + link, class="hdrmenu__current " + (isExpClass ? "hdrmenu--expanded":""), data-panel=isExpClass) #{text}
    else
        li 
            a(href="/" + link, class=(isExpClass ? "hdrmenu--expanded":""), data-panel=isExpClass) #{text}


include mobmenu.html
header(class="hdr " + (config.hdrClassName ? config.hdrClassName : "hdr__white")).jsHdrBase
    .hdr__wrap.flexi.jsHdrLine
        button.hdr__burger(data-menumodal="#jsMenuModal")
            img(src="/public/img/menu.svg", alt="")
        a.hdr__logo(href="/")
            img(src="/public/img/logo-white.svg", alt="").hdr__logoimg.hdr__logo--white
            img(src="/public/img/logo.svg", alt="").hdr__logoimg.hdr__logo--black
        a.button.hdr__button(href="/download.html") Download Ignite 2.11 
        nav.hdrmenu
            ul.flexi
                +menuItem("", "Get started", "getStarted")
                +menuItem("features", "Features", "features")
                +menuItem("community.html", "Community", "community")
                +menuItem("use-cases/provenusecases.html", "Powered by")
                +menuItem("//ignite.apache.org/docs/latest/", "Docs")
        .dropmenu
            .dropmenu__panel(data-menupanel="getStarted")
                .container.dropmenu1__grid
                    .dropmenu__box.dropmenu--left
                        ul.dropmenu__menu 
                            li 
                                a.dropmenu__iconitem(href="/resources.html")
                                    img(src="/public/img/menu/icon-resources.svg", alt="")
                                    span Resources
                            li
                                a.dropmenu__iconitem(href="/faq.html")
                                    img(src="/public/img/menu/icon-question.svg", alt="")
                                    span FAQ
                    .dropmenu1__center
                        .dropmenu__box
                            p.capstext USE CASES
                            ul.dropmenu__menu 
                                li 
                                    a.dropmenu__iconitem(href="/use-cases/in-memory-cache.html")
                                        img(src="/public/img/menu/icon-folder.svg", alt="")
                                        span In-Memory Cache
                                li
                                    a.dropmenu__iconitem(href="/use-cases/in-memory-data-grid.html")
                                        img(src="/public/img/menu/icon-folder.svg", alt="")
                                        span In-Memory Data Grid
                                li
                                    a.dropmenu__iconitem(href="/use-cases/in-memory-database.html")
                                        img(src="/public/img/menu/icon-folder.svg", alt="")
                                        span In-Memory Database
                                li
                                    a.dropmenu__iconitem(href="/use-cases/key-value-store.html")
                                        img(src="/public/img/menu/icon-folder.svg", alt="")
                                        span Key-Value Store
                        .dropmenu__box
                            ul.dropmenu__menu 
                                li 
                                    a.dropmenu__iconitem(href="/use-cases/high-performance-computing.html")
                                        img(src="/public/img/menu/icon-folder.svg", alt="")
                                        span High-Performance Computing
                                li
                                    a.dropmenu__iconitem(href="/use-cases/digital-integration-hub.html")
                                        img(src="/public/img/menu/icon-folder.svg", alt="")
                                        span Digital Integration Hub
                                li
                                    a.dropmenu__iconitem(href="/use-cases/spark-acceleration.html")
                                        img(src="/public/img/menu/icon-folder.svg", alt="")
                                        span Spark Acceleration
                                li
                                    a.dropmenu__iconitem(href="/use-cases/hadoop-acceleration.html")
                                        img(src="/public/img/menu/icon-folder.svg", alt="")
                                        span Hadoop Acceleration
                    .dropmenu1__right
                        a.dropmenu__redbutton(href="https://ignite.apache.org/docs/latest/") 
                            img(src="/public/img/menu/icon-red-rocket.svg", alt="")
                            span Quick Start Guide
                // /.dropmenu1__grid
            // /.dropmenu__panel


            .dropmenu__panel(data-menupanel="features")
                .container.dropmenu2__grid
                    .dropmenu2__col.dropmenu__box
                        .capstext Distributed <br>Multi-Tiered Storage
                        ul.dropmenu__menu 
                            li 
                                a.dropmenu__iconitem(href="/arch/multi-tier-storage.html")
                                    img(src="/public/img/menu/icon-db.svg", alt="")
                                    span Multi-Tier Storage
                            li
                                a.dropmenu__iconitem(href="/arch/native-persistence.html")
                                    img(src="/public/img/menu/icon-db.svg", alt="")
                                    span Native Persistence
                    .dropmenu2__col.dropmenu__box
                        .capstext Essentail Developer <br>APIs
                        ul.dropmenu__menu 
                            li 
                                a.dropmenu__iconitem(href="/features/sql.html")
                                    img(src="/public/img/menu/icon-cube.svg", alt="")
                                    span Distributed SQL
                            li
                                a.dropmenu__iconitem(href="/features/distributed-key-value-store.html")
                                    img(src="/public/img/menu/icon-cube.svg", alt="")
                                    span Key-Value APIs
                            li
                                a.dropmenu__iconitem(href="/features/acid-transactions.html")
                                    img(src="/public/img/menu/icon-cube.svg", alt="")
                                    span ACID Transactions
                    .dropmenu2__col.dropmenu__box
                        .capstext High-Performance <br>Computing APIs
                        ul.dropmenu__menu 
                            li 
                                a.dropmenu__iconitem(href="/features/compute-apis.html")
                                    img(src="/public/img/menu/icon-cube.svg", alt="")
                                    span Compute APIs
                            li
                                a.dropmenu__iconitem(href="/features/servicegrid.html")
                                    img(src="/public/img/menu/icon-cube.svg", alt="")
                                    span Services
                            li
                                a.dropmenu__iconitem(href="/features/machinelearning.html")
                                    img(src="/public/img/menu/icon-cube.svg", alt="")
                                    span Machine Learning
                    .dropmenu2__col.dropmenu__box
                        .capstext Real Streaming APIs
                        ul.dropmenu__menu 
                            li 
                                a.dropmenu__iconitem(href="/features/streaming.html")
                                    img(src="/public/img/menu/icon-cube.svg", alt="")
                                    span Streaming
                            li
                                a.dropmenu__iconitem(href="https://ignite.apache.org/docs/latest/messaging")
                                    img(src="/public/img/menu/icon-cube.svg", alt="")
                                    span Messaging
                            li
                                a.dropmenu__iconitem(href="https://ignite.apache.org/docs/latest/key-value-api/continuous-queries")
                                    img(src="/public/img/menu/icon-cube.svg", alt="")
                                    span Continuous Queries
                    .dropmenu1__right.dropmenu2__col
                        a.dropmenu__redbutton(href="https://ignite.apache.org/docs/latest/") 
                            img(src="/public/img/menu/icon-red-rocket.svg", alt="")
                            span Quick Start Guide
                // /.dropmenu2__grid
                .panelmorelinkwrap 
                    a.panellink(href="/features/") View all
            // /.dropmenu__panel-2


            .dropmenu__panel(data-menupanel="community")
                .container.dropmenu1__grid.dropmenu3__grid
                    .dropmenu__box.dropmenu--left.dropmenu3--left
                        ul.dropmenu__menu 
                            li 
                                a.dropmenu__iconitem(href="/community.html#story")
                                    img(src="/public/img/menu/icon-clip.svg", alt="")
                                    span Apache Ignite Story
                            li
                                a.dropmenu__iconitem(href="/community.html#community")
                                    img(src="/public/img/menu/icon-comment.svg", alt="")
                                    span Meet The Community
                            li 
                                a.dropmenu__iconitem(href="/community.html#contributing")
                                    img(src="/public/img/menu/icon-puzzle.svg", alt="")
                                    span Start Contributing
                            li
                                a.dropmenu__iconitem(href="/community.html#faq")
                                    img(src="/public/img/menu/icon-question.svg", alt="")
                                    span Ask A Question
                    .dropmenu1__center
                        .dropmenu__box
                            p.capstext Events
                            ul.dropmenu__menu 
                                li 
                                    a.dropmenu__iconitem(href="/events.html#summit")
                                        img(src="/public/img/menu/icon-calendar.svg", alt="")
                                        span Apache Ignite Summit
                                li
                                    a.dropmenu__iconitem(href="/events.html#meetups")
                                        img(src="/public/img/menu/icon-calendar.svg", alt="")
                                        span Meetups
                                
                        .dropmenu__box
                            ul.dropmenu__menu 
                                li
                                    a.dropmenu__iconitem(href="/events.html#upcoming")
                                        img(src="/public/img/menu/icon-calendar.svg", alt="")
                                        span Upcoming Events
                                li
                                    a.dropmenu__iconitem(href="/events.html#past")
                                        img(src="/public/img/menu/icon-calendar.svg", alt="")
                                        span Past Events
                    .dropmenu1__right
                        a.dropmenu__redbutton(href="https://ignite.apache.org/docs/latest/") 
                            img(src="/public/img/menu/icon-red-rocket.svg", alt="")
                            span Quick Start Guide
                // /.dropmenu1__grid
            // /.dropmenu__panel
        // /.dropmeu
.dropmenu__back


header.hdrfloat.hdr__white.jsHdrFloatBase

//- header.hdrfloat
//-     .hdr__wrap.flexi
//-         button.hdr__burger(data-menumodal="#jsMenuModal")
//-             img(src="/public/img/menu.svg", alt="")
//-         a.hdr__logo(href="/")
//-             img(src="/public/img/logo.svg", alt="").hdr__logoimg
//-         a.button.hdr__button(href="/download.html") Download Ignite 2.11 
//-         nav.hdrmenu
//-             ul.flexi
//-                 +menuItem("", "Get started")
//-                 +menuItem("features", "Features")
//-                 +menuItem("community.html", "Community")
//-                 +menuItem("use-cases/provenusecases.html", "Powered by")
//-                 +menuItem("docs.html", "Docs")