Skip to content
Snippets Groups Projects
nav.sass 5.34 KiB
Newer Older
@keyframes showIn
    0%
        opacity: 0
    100%
        opacity: 1
    0%
        opacity: 0

alexisben's avatar
alexisben committed
.menu
    @include media-breakpoint-down(desktop)
Olivia206's avatar
Olivia206 committed
        -webkit-flex-basis: 100vw
        display: none
        flex-basis: 100vw
alexisben's avatar
alexisben committed
        margin-top: $spacing1
alexisben's avatar
alexisben committed
        max-height: calc(100vh - var(--header-height) - #{$spacing4})
Olivia206's avatar
Olivia206 committed
        overflow: auto
alexisben's avatar
alexisben committed
    a,
    a:focus,
    a:active
        @include link($header-color, false)
    span
        color: $header-color
alexisben's avatar
alexisben committed
    ul
        list-style: none
        margin: 0
        padding: 0
    a,
    span
        @include meta
alexisben's avatar
alexisben committed
        cursor: pointer
        transition: text-decoration 0.15s
alexisben's avatar
alexisben committed
        display: block
        // &:not(:hover)
        //     text-decoration-color: transparent
alexisben's avatar
alexisben committed
        &[aria-expanded]
alexisben's avatar
alexisben committed
            @include icon(caret, after)
alexisben's avatar
alexisben committed
                margin-left: px2rem(5)
alexisben's avatar
alexisben committed
                transition: transform 0.15s
alexisben's avatar
alexisben committed
            &[aria-expanded="true"]
                &::after
                    transform: rotate(180deg)

        @include media-breakpoint-up(desktop)
Olivia206's avatar
Olivia206 committed
            a:hover,
            a:focus
                color: $header-hover-color
alexisben's avatar
alexisben committed

    .dropdown-menu
        display: none
        background: $header-dropdown-background
        @include media-breakpoint-down(desktop)
alexisben's avatar
alexisben committed
            padding-bottom: $spacing1
        @include media-breakpoint-up(desktop)
alexisben's avatar
alexisben committed
            padding: $spacing1
Olivia206's avatar
Olivia206 committed
            position: absolute
            max-height: calc(100vh - var(--header-height))
alexisben's avatar
alexisben committed
            max-height: calc(-webkit-fill-available - var(--header-height))
alexisben's avatar
alexisben committed
            color: $header-dropdown-color
alexisben's avatar
alexisben committed
            &:hover,
            &:focus
                text-decoration-color: $header-dropdown-color
alexisben's avatar
alexisben committed

    .nav-level-1
        display: flex
alexisben's avatar
alexisben committed
        > li
alexisben's avatar
alexisben committed
            > a, span
alexisben's avatar
alexisben committed
                @include meta
alexisben's avatar
alexisben committed
                display: block
                padding: calc(#{$spacing0} * 0.5) $spacing0
alexisben's avatar
alexisben committed
            &:last-child 
                a, span
                    padding-right: 0
alexisben's avatar
alexisben committed
        li.has-children
alexisben's avatar
alexisben committed
            [aria-expanded="true"] + .dropdown-menu
alexisben's avatar
alexisben committed
                display: block
                animation-duration: $header-dropdown-transition
                animation-fill-mode: both
                animation-name: showIn
alexisben's avatar
alexisben committed

    .nav-level-2
        > li
alexisben's avatar
alexisben committed
            > a,
            > span
alexisben's avatar
alexisben committed
                @include signature
alexisben's avatar
alexisben committed

    .nav-level-3
alexisben's avatar
alexisben committed
        display: block
alexisben's avatar
alexisben committed
        padding-top: half($spacing0)
alexisben's avatar
alexisben committed
        a,
        span
alexisben's avatar
alexisben committed
            @include meta
alexisben's avatar
alexisben committed

    @include media-breakpoint-up(desktop)
alexisben's avatar
alexisben committed
        .nav-level-3
            li
                margin-top: $spacing0
alexisben's avatar
alexisben committed
        @if $header-dropdown-full
            .dropdown-menu
                inset: 100% 0 auto 0
alexisben's avatar
alexisben committed
                padding-left: 0
                padding-right: 0
                padding-bottom: $spacing2
alexisben's avatar
alexisben committed
            .nav-level-2
                @include container
alexisben's avatar
alexisben committed
                @include grid(4, desktop)
alexisben's avatar
alexisben committed
        @else 
Arnaud Levy's avatar
Arnaud Levy committed
            .has-children
                position: relative
alexisben's avatar
alexisben committed
            .dropdown-menu
alexisben's avatar
alexisben committed
                margin-top: $header-nav-padding-y
Arnaud Levy's avatar
Arnaud Levy committed
                min-width: 400px
                padding-left: $spacing1
                padding-top: $spacing0
                padding-right: $spacing1
Arnaud Levy's avatar
Arnaud Levy committed
                right: 0
                text-align: right
alexisben's avatar
alexisben committed
            .nav-level-2
alexisben's avatar
alexisben committed
                > li 
                    > a
                        padding-bottom: half($spacing0)
                        padding-top: half($spacing0)
                        display: block
                    + li.has-children
                        margin-top: $spacing1
    @include media-breakpoint-down(desktop)
        &.is-opened
            display: block
alexisben's avatar
alexisben committed
        a, span
            text-decoration: none
        .nav-level-1
            display: block
            li 
                a, span
alexisben's avatar
alexisben committed
                    padding: half($spacing0) 0
alexisben's avatar
alexisben committed
                    display: block
alexisben's avatar
alexisben committed
            > li:not(:last-child) 
                border-bottom: 1px solid #adb5bd
alexisben's avatar
alexisben committed
            > li
alexisben's avatar
alexisben committed
                > a, > span
                    padding-bottom: $spacing1
                    padding-top: $spacing1
alexisben's avatar
alexisben committed
            li.has-children
                [role="button"]
                    align-items: center
                    display: flex
                    justify-content: space-between
alexisben's avatar
alexisben committed
                    text-decoration: none
                    @include icon(caret-bottom, after)
                        display: block
alexisben's avatar
alexisben committed
                    &::after
                        line-height: 1
                .dropdown-menu
                    display: none
                    padding-top: 0
                [aria-expanded=true] + .dropdown-menu
                    display: block
alexisben's avatar
alexisben committed
        .dropdown-menu
            padding-left: 0

        .nav-level-2
alexisben's avatar
alexisben committed
            > .has-children + .has-children
                margin-top: $spacing1
alexisben's avatar
alexisben committed
        .nav-level-3
            padding-top: 0
alexisben's avatar
alexisben committed

.share
    display: flex
    list-style: none
    margin: 0
    padding: 0
    li:not(:last-child)
        margin-right: 1rem
    a
        text-decoration: none
alexisben's avatar
alexisben committed
        padding: $spacing0
alexisben's avatar
alexisben committed
        font-size: px2rem(24)
alexisben's avatar
alexisben committed
        &:hover
            opacity: 0.7
        &::after
            content: none
    span
        display: none
        vertical-align: middle

alexisben's avatar
alexisben committed

[aria-expanded="false"] + .dropdown-menu
    display: none
[aria-expanded="true"] + .dropdown-menu
    display: block
    animation-duration: 0.3s
    animation-fill-mode: both
    animation-name: showIn