mixin menuItem(link, text, isExpClass = "")
    if global.pageHref == link
        li(class=(isExpClass ? "js-hasdrop": null))
            a(href="/" + link, class="hdrmenu__current " + (isExpClass ? "hdrmenu--expanded":""), data-panel=isExpClass) #{text}
    else
        li(class=(isExpClass ? "js-hasdrop": null))
            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.cgi") Download Ignite 2.12.0
        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 &nbsp;
                    .dropmenu__box.dropmenu__box--buttonin
                        a.dropmenu__redbutton(href="https://ignite.apache.org/docs/latest/") 
                            img(src="/img/menu/icon-red-rocket.svg", alt="")
                            span Quick Start Guide
                        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.panelmorelinkwrap--end.container
                    a.panellink(href="/use-cases.html") View all
            // /.dropmenu__panel


            .dropmenu__panel(data-menupanel="features")
                .container.dropmenu2__grid
                    .dropmenu__box
                        .capstext MULTI-TIER 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 ESSENTIAL 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 Real-Time Streaming APIs
                            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")
