$pf-c-sidebar--breakpoint-map--width: build-breakpoint-map("base", "sm", "md", "lg", "xl", "2xl");
$pf-c-sidebar__panel--list--width: ("default", 25, 33, 50, 66, 75, 100);


.pf-c-sidebar {
  --pf-c-sidebar--BackgroundColor: var(--pf-global--BackgroundColor--100);

  // Main
  --pf-c-sidebar__main--FlexDirection: column;
  --pf-c-sidebar__main--md--FlexDirection: row;
  --pf-c-sidebar__main--AlignItems: stretch;
  --pf-c-sidebar__main--md--AlignItems: start;
  --pf-c-sidebar__main--child--MarginTop: 0;
  --pf-c-sidebar__main--child--MarginLeft: 0;

  // Gutter
  --pf-c-sidebar--m-gutter__main--Gap: var(--pf-global--spacer--md);
  --pf-c-sidebar--m-gutter__main--xl--Gap: var(--pf-global--spacer--lg);

  // Panel right
  --pf-c-sidebar--m-panel-right__panel--Order: 0;
  --pf-c-sidebar--m-panel-right__panel--md--Order: 1;

  // Stack
  --pf-c-sidebar--m-stack__main--FlexDirection: column;
  --pf-c-sidebar--m-stack__main--AlignItems: stretch;
  --pf-c-sidebar--m-stack__panel--Position: sticky;
  --pf-c-sidebar--m-stack__panel--Top: 0;
  --pf-c-sidebar--m-stack__panel--BoxShadow: var(--pf-c-sidebar__panel--BoxShadow--base);
  --pf-c-sidebar--m-stack--m-panel-right__panel--Order: 0;

  // Split
  --pf-c-sidebar--m-split__main--AlignItems: start;
  --pf-c-sidebar--m-split__main--FlexDirection: row;
  --pf-c-sidebar--m-split__panel--Position: static;
  --pf-c-sidebar--m-split__panel--Top: auto;
  --pf-c-sidebar--m-split--m-panel-right__panel--Order: 1;

  // Panel
  --pf-c-sidebar__panel--FlexBasis--base: auto;
  --pf-c-sidebar__panel--BoxShadow--base: #{0 pf-size-prem(4px) pf-size-prem(4px) pf-size-prem(-4px) rgba($pf-color-black-1000, .16)}; // modified so the shadow is only visible on the bottom of the element
  --pf-c-sidebar__panel--BoxShadow: var(--pf-c-sidebar__panel--BoxShadow--base);
  --pf-c-sidebar__panel--Top: 0;
  --pf-c-sidebar__panel--md--Top: auto;
  --pf-c-sidebar__panel--Position: sticky;
  --pf-c-sidebar__panel--md--Position: static;
  --pf-c-sidebar__panel--FlexBasis-base: auto;
  --pf-c-sidebar__panel--FlexBasis: var(--pf-c-sidebar__panel--FlexBasis-base);
  --pf-c-sidebar__panel--md--FlexBasis: #{pf-size-prem(250px)};
  --pf-c-sidebar__panel--m-split--FlexBasis: #{pf-size-prem(250px)};
  --pf-c-sidebar__panel--m-stack--FlexBasis: auto;
  --pf-c-sidebar__panel--ZIndex: var(--pf-global--ZIndex--xs);
  --pf-c-sidebar__panel--Order: 0;
  --pf-c-sidebar__panel--BackgroundColor: var(--pf-global--BackgroundColor--100);

  // Content
  --pf-c-sidebar__content--BackgroundColor: var(--pf-global--BackgroundColor--100);

  // Sticky
  --pf-c-sidebar__panel--m-sticky--Top: 0;
  --pf-c-sidebar__panel--m-sticky--Position: sticky;

  @media (min-width: $pf-global--breakpoint--md) {
    --pf-c-sidebar__main--FlexDirection: var(--pf-c-sidebar__main--md--FlexDirection);
    --pf-c-sidebar__panel--BoxShadow: none;
    --pf-c-sidebar__panel--FlexBasis: var(--pf-c-sidebar__panel--md--FlexBasis);
    --pf-c-sidebar__main--AlignItems: var(--pf-c-sidebar__main--md--AlignItems);
    --pf-c-sidebar__panel--Top: var(--pf-c-sidebar__panel--md--Top);
    --pf-c-sidebar__panel--Position: var(--pf-c-sidebar__panel--md--Position);
  }

  @media (min-width: $pf-global--breakpoint--xl) {
    --pf-c-sidebar--m-gutter__main--Gap: var(--pf-c-sidebar--m-gutter__main--xl--Gap);
  }

  &.pf-m-gutter {
    --pf-c-sidebar__main--child--MarginTop: var(--pf-c-sidebar--m-gutter__main--Gap);
    --pf-c-sidebar__main--child--MarginLeft: 0;

    > .pf-c-sidebar__main > * + * {
      margin-top: var(--pf-c-sidebar__main--child--MarginTop);
      margin-left: var(--pf-c-sidebar__main--child--MarginLeft);
    }

    @media (min-width: $pf-global--breakpoint--md) {
      --pf-c-sidebar__main--child--MarginTop: 0;
      --pf-c-sidebar__main--child--MarginLeft: var(--pf-c-sidebar--m-gutter__main--Gap);
    }
  }

  &.pf-m-panel-right {
    --pf-c-sidebar__panel--Order: var(--pf-c-sidebar--m-panel-right__panel--Order);

    @media (min-width: $pf-global--breakpoint--md) {
      --pf-c-sidebar--m-panel-right__panel--Order: var(--pf-c-sidebar--m-panel-right__panel--md--Order);
    }
  }

  &.pf-m-stack {
    --pf-c-sidebar__main--FlexDirection: var(--pf-c-sidebar--m-stack__main--FlexDirection);
    --pf-c-sidebar__main--AlignItems: var(--pf-c-sidebar--m-stack__main--AlignItems);
    --pf-c-sidebar__main--child--MarginTop: var(--pf-c-sidebar--m-gutter__main--Gap);
    --pf-c-sidebar__main--child--MarginLeft: 0;
    --pf-c-sidebar__panel--Position: var(--pf-c-sidebar--m-stack__panel--Position);
    --pf-c-sidebar__panel--Top: var(--pf-c-sidebar--m-stack__panel--Top);
    --pf-c-sidebar__panel--BoxShadow: var(--pf-c-sidebar--m-stack__panel--BoxShadow);
    --pf-c-sidebar__panel--FlexBasis: var(--pf-c-sidebar__panel--m-stack--FlexBasis);
    --pf-c-sidebar--m-panel-right__panel--Order: var(--pf-c-sidebar--m-stack--m-panel-right__panel--Order);
  }

  &.pf-m-split {
    --pf-c-sidebar__main--FlexDirection: var(--pf-c-sidebar--m-split__main--FlexDirection);
    --pf-c-sidebar__main--AlignItems: var(--pf-c-sidebar--m-split__main--AlignItems);
    --pf-c-sidebar__main--child--MarginTop: 0;
    --pf-c-sidebar__main--child--MarginLeft: var(--pf-c-sidebar--m-gutter__main--Gap);
    --pf-c-sidebar__panel--Position: var(--pf-c-sidebar--m-split__panel--Position);
    --pf-c-sidebar__panel--Top: var(--pf-c-sidebar--m-split__panel--Top);
    --pf-c-sidebar__panel--BoxShadow: none;
    --pf-c-sidebar__panel--FlexBasis: var(--pf-c-sidebar__panel--m-split--FlexBasis);
    --pf-c-sidebar--m-panel-right__panel--Order: var(--pf-c-sidebar--m-split--m-panel-right__panel--Order);
  }

  height: 100%;
}

.pf-c-sidebar__main {
  display: flex;
  flex-direction: var(--pf-c-sidebar__main--FlexDirection);
  align-items: var(--pf-c-sidebar__main--AlignItems);
}

.pf-c-sidebar__panel {
  position: var(--pf-c-sidebar__panel--Position);
  top: var(--pf-c-sidebar__panel--Top);
  z-index: var(--pf-c-sidebar__panel--ZIndex);
  flex-shrink: 0;
  flex-basis: var(--pf-c-sidebar__panel--FlexBasis);
  order: var(--pf-c-sidebar__panel--Order);
  background-color: var(--pf-c-sidebar__panel--BackgroundColor);
  box-shadow: var(--pf-c-sidebar__panel--BoxShadow);

  &.pf-m-sticky {
    --pf-c-sidebar__panel--Position: var(--pf-c-sidebar__panel--m-sticky--Position);
    --pf-c-sidebar__panel--Top: var(--pf-c-sidebar__panel--m-sticky--Top);
  }

  &.pf-m-static {
    --pf-c-sidebar__panel--Position: static;
    --pf-c-sidebar__panel--Top: auto;
  }
}

.pf-c-sidebar__content {
  flex-grow: 1;
  background-color: var(--pf-c-sidebar__content--BackgroundColor);

  &.pf-m-no-background {
    --pf-c-sidebar__content--BackgroundColor: transparent;
  }
}

.pf-c-sidebar,
.pf-c-sidebar__panel,
.pf-c-sidebar__content {
  &.pf-m-no-background {
    background-color: transparent;
  }
}


// Responsive width modifiers
@each $breakpoint, $breakpoint-value in $pf-c-sidebar--breakpoint-map--width {
  $breakpoint-name: if($breakpoint != "base", -on-#{$breakpoint}, "");

  @include pf-apply-breakpoint($breakpoint) {
    @each $width-value in $pf-c-sidebar__panel--list--width {
      .pf-c-sidebar__panel.pf-m-width-#{$width-value}#{$breakpoint-name} {
        @if $width-value == "default" {
          --pf-c-sidebar__panel--FlexBasis: var(--pf-c-sidebar__panel--FlexBasis--base);
        } @else {
          --pf-c-sidebar__panel--FlexBasis: #{percentage(div($width-value, 100))};
        }
      }
    }
  }
}
