@use 'functions/color' as *;
@use 'functions/get-var' as *;
@use 'variables' as *;

// Off canvas menus
// TODO: canvas
$off-canvas-breakpoint: $size-lg !default;

.off-canvas {
  display: flex;
  flex-flow: nowrap;
  height: 100%;
  position: relative;
  width: 100%;

  .off-canvas-toggle {
    display: block;
    position: absolute;
    // top: $layout-spacing; // old spectre.css
    top: get-var('layout-spacing', $unit: 1);
    transition: none;
    // z-index: $zindex-0; // old spectre.css
    z-index: get-var('z-index-0');
    @if $rtl == true {
      // right: $layout-spacing; // old spectre.css
      right: get-var('layout-spacing', $unit: 1);
    } @else {
      // left: $layout-spacing; // old spectre.css
      left: get-var('layout-spacing', $unit: 1);
    }
  }

  .off-canvas-sidebar {
    // background: $bg-color; // old spectre.css
    background: color('bg-color');
    bottom: 0;
    min-width: 10rem;
    overflow-y: auto;
    position: fixed;
    top: 0;
    // transition: transform 0.25s; // old spectre.css
    transition: transform calc(get-var('transition-duration') + 0.05s );
    // z-index: $zindex-2; // old spectre.css
    z-index: get-var('z-index-2');
    @if $rtl == true {
      right: 0;
      transform: translateX(100%);
    } @else {
      left: 0;
      transform: translateX(-100%);
    }
  }

  .off-canvas-content {
    flex: 1 1 auto;
    height: 100%;
    // padding: $layout-spacing $layout-spacing $layout-spacing 4rem; // old spectre.css
    padding: get-var('layout-spacing', $unit: 1) get-var('layout-spacing', $unit: 1) get-var('layout-spacing', $unit: 1) 4rem;
  }

  .off-canvas-overlay {
    // background: rgba($dark-color, .1); // old spectre.css
    background: color('dark-color', $alpha: 0.1);
    border-color: transparent;
    border-radius: 0;
    bottom: 0;
    display: none;
    height: 100%;
    left: 0;
    position: fixed;
    right: 0;
    top: 0;
    width: 100%;
  }

  .off-canvas-sidebar {
    &:target,
    &.active {
      transform: translateX(0);
    }

    &:target ~ .off-canvas-overlay,
    &.active ~ .off-canvas-overlay {
      display: block;
      // z-index: $zindex-1; // old spectre.css
      z-index: get-var('z-index-1');
    }
  }
}

// Responsive layout
@media (min-width: $off-canvas-breakpoint) {
  .off-canvas {
    &.off-canvas-sidebar-show {
      .off-canvas-toggle {
        display: none;
      }

      .off-canvas-sidebar {
        flex: 0 0 auto;
        position: relative;
        transform: none;
      }

      .off-canvas-overlay {
        display: none !important;
      }
    }
  }
}
