extend _components/base.pug

block pagetitle
    | Main Page 



block main
    - global.pageHref = "test"
    - var user = {description: 'foo bar baz'}
    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}


    header(class="hdr " + config.hdrClassName)
        .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-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("test", "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="#") 
                                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 Essentail Developer <br>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
                        .dropmenu1__right.dropmenu2__col
                            a.dropmenu__redbutton(href="#") 
                                img(src="/public/img/menu/icon-red-rocket.svg", alt="")
                                span Quick Start Guide
                    // /.dropmenu2__grid
                    .panelmorelinkwrap 
                        a.panellink(href="#") 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="/")
                                        img(src="/public/img/menu/icon-clip.svg", alt="")
                                        span Apache Ignite Story
                                li
                                    a.dropmenu__iconitem(href="/community.html")
                                        img(src="/public/img/menu/icon-comment.svg", alt="")
                                        span Meet The Community
                                li 
                                    a.dropmenu__iconitem(href="/")
                                        img(src="/public/img/menu/icon-puzzle.svg", alt="")
                                        span Start Contributing
                                li
                                    a.dropmenu__iconitem(href="/")
                                        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="/use-cases/in-memory-cache.html")
                                            img(src="/public/img/menu/icon-calendar.svg", alt="")
                                            span Apache Ignite Summit
                                    li
                                        a.dropmenu__iconitem(href="/use-cases/in-memory-data-grid.html")
                                            img(src="/public/img/menu/icon-calendar.svg", alt="")
                                            span Meetups
                                    
                            .dropmenu__box
                                ul.dropmenu__menu 
                                    li
                                        a.dropmenu__iconitem(href="/use-cases/in-memory-database.html")
                                            img(src="/public/img/menu/icon-calendar.svg", alt="")
                                            span Upcoming Events
                                    li
                                        a.dropmenu__iconitem(href="/use-cases/key-value-store.html")
                                            img(src="/public/img/menu/icon-calendar.svg", alt="")
                                            span Past Events
                        .dropmenu1__right
                            a.dropmenu__redbutton(href="#") 
                                img(src="/public/img/menu/icon-red-rocket.svg", alt="")
                                span Quick Start Guide
                    // /.dropmenu1__grid
                // /.dropmenu__panel
            // /.dropmeu
    .dropmenu__back
    h1.h1 TEST
        

            