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="/img/menu.svg", alt="")
        a.hdr__logo(href="/")
            img(src="/img/logo-white.svg", alt="").hdr__logoimg.hdr__logo--white
            img(src="/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
                    .dropmenu1__buttonwrap
                        a.dropmenu__redbutton(href="https://ignite.apache.org/docs/latest/") 
                            img(src="/img/menu/icon-red-rocket.svg", alt="")
                            span Quick Start Guide
                    .dropmenu__box
                        ul.dropmenu__menu 
                            li 
                                a.dropmenu__iconitem(href="/resources.html")
                                    img(src="/img/menu/icon-resources.svg", alt="")
                                    span Resources
                            li
                                a.dropmenu__iconitem(href="/faq.html")
                                    img(src="/img/menu/icon-question.svg", alt="")
                                    span FAQ
                    .dropmenu__box
                        p.capstext
                            a(href="/use-cases.html").dropmenu__capslink USE CASES
                        ul.dropmenu__menu 
                            li 
                                a.dropmenu__iconitem(href="/use-cases/in-memory-cache.html")
                                    img(src="/img/menu/icon-folder.svg", alt="")
                                    span In-Memory Cache
                            li
                                a.dropmenu__iconitem(href="/use-cases/in-memory-data-grid.html")
                                    img(src="/img/menu/icon-folder.svg", alt="")
                                    span In-Memory Data Grid
                            li
                                a.dropmenu__iconitem(href="/use-cases/in-memory-database.html")
                                    img(src="/img/menu/icon-folder.svg", alt="")
                                    span In-Memory Database
                            li
                                a.dropmenu__iconitem(href="/use-cases/key-value-store.html")
                                    img(src="/img/menu/icon-folder.svg", alt="")
                                    span Key-Value Store
                    .dropmenu__box.no-border
                        ul.dropmenu__menu 
                            li 
                                a.dropmenu__iconitem(href="/use-cases/high-performance-computing.html")
                                    img(src="/img/menu/icon-folder.svg", alt="")
                                    span High-Performance Computing
                            li
                                a.dropmenu__iconitem(href="/use-cases/digital-integration-hub.html")
                                    img(src="/img/menu/icon-folder.svg", alt="")
                                    span Digital Integration Hub
                            li
                                a.dropmenu__iconitem(href="/use-cases/spark-acceleration.html")
                                    img(src="/img/menu/icon-folder.svg", alt="")
                                    span Spark Acceleration
                            li
                                a.dropmenu__iconitem(href="/use-cases/hadoop-acceleration.html")
                                    img(src="/img/menu/icon-folder.svg", alt="")
                                    span Hadoop Acceleration
                // /.dropmenu1__grid
                .panelmorelinkwrap 
                    a.panellink(href="/use-cases.html") View all
            // /.dropmenu__panel


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


            .dropmenu__panel(data-menupanel="community")
                .container.dropmenu3__grid
                    .dropmenu__box
                        .capstext 
                            a(href="/community.html").dropmenu__capslink Project Info
                        ul.dropmenu__menu 
                            li 
                                a.dropmenu__iconitem(href="/community.html#story")
                                    img(src="/img/menu/icon-clip.svg", alt="")
                                    span Apache Ignite Story
                            li
                                a.dropmenu__iconitem(href="/community.html#community")
                                    img(src="/img/menu/icon-comment.svg", alt="")
                                    span Meet The Community
                    .dropmenu__box.no-border
                        .capstext &nbsp;
                        ul.dropmenu__menu
                            li
                                a.dropmenu__iconitem(href="/community.html#contributing")
                                    img(src="/img/menu/icon-puzzle.svg", alt="")
                                    span Start Contributing
                            li
                                a.dropmenu__iconitem(href="/community.html#faq")
                                    img(src="/img/menu/icon-question.svg", alt="")
                                    span Ask Questions
                    .dropmenu__box
                        .capstext 
                            a(href="/events.html").dropmenu__capslink Events
                        ul.dropmenu__menu 
                            li 
                                a.dropmenu__iconitem(href="/events.html#summit")
                                    img(src="/img/menu/icon-calendar.svg", alt="")
                                    span Apache Ignite Summit
                            li
                                a.dropmenu__iconitem(href="/events.html#meetups")
                                    img(src="/img/menu/icon-calendar.svg", alt="")
                                    span Meetups
                    .dropmenu__box.no-border
                        .capstext &nbsp;
                        ul.dropmenu__menu 
                            li
                                a.dropmenu__iconitem(href="/events.html#upcoming")
                                    img(src="/img/menu/icon-calendar.svg", alt="")
                                    span Upcoming Events
                            li
                                a.dropmenu__iconitem(href="/events.html#past")
                                    img(src="/img/menu/icon-calendar.svg", alt="")
                                    span Past Events
                // /.dropmenu3__grid
            // /.dropmenu__panel
        // /.dropmeu
.dropmenu__back


header.hdrfloat.hdr__white.jsHdrFloatBase

//- header.hdrfloat
//-     .hdr__wrap.flexi
//-         button.hdr__burger(data-menumodal="#jsMenuModal")
//-             img(src="/img/menu.svg", alt="")
//-         a.hdr__logo(href="/")
//-             img(src="/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")