@use "system/breakpoints";
@use "system/colors";
@use "system/typography";
@use "system/icon-map";
@use "system/spacing";
@use "sass:map";

.ods-collapsible-trigger {
  &--block {
    @extend %ods-padding-4;
    @extend %ods-text--size-kilo, %ods-text--size-juliett-breakpoint-large;
    @extend %ods-text--weight-medium;

    background-color: colors.$gray-light;
    border: none;
    color: inherit;
    display: block;
    font-family: inherit;
    position: relative;
    text-align: left;
    width: 100%;

    &:hover {
      background-color: colors.$gray;
      cursor: pointer;
    }

    &::after {
      font-family: "Oslo Icons", Arial, Helvetica, sans-serif;
      @extend %ods-text--size-golf;

      line-height: 1.75rem;
      content: map.get(icon-map.$icons, "chevron-thin-down");
      position: absolute;
    }

    &:focus-visible {
      box-shadow: 0 0 0 0.125rem colors.$blue-state;
      outline-offset: 0.125rem;
      outline: 0.25rem solid colors.$purple-light;
    }
  }

  &--big-block {
    @extend %ods-padding-horizontal-5;
    @extend %ods-padding-vertical-8;
    @extend %ods-text--size-hotel, %ods-text--size-foxtrot-breakpoint-medium, %ods-text--size-delta-breakpoint-large;
    @extend %ods-text--weight-light;

    background-color: colors.$gray-light;
    border: none;
    color: inherit;
    display: block;
    font-family: inherit;
    position: relative;
    text-align: left;
    width: 100%;

    &:hover {
      background-color: colors.$gray;
      cursor: pointer;
    }

    &:focus-visible {
      box-shadow: 0 0 0 0.125rem colors.$blue-state;
      outline-offset: 0.125rem;
      outline: 0.25rem solid colors.$purple-light;
    }

    &::after {
      font-family: "Oslo Icons", Arial, Helvetica, sans-serif;
      @extend %ods-text--size-delta;

      content: map.get(icon-map.$icons, "plus-sign");
      position: absolute;
    }
  }

  &--link {
    @extend %ods-text--size-kilo, %ods-text--size-juliett-breakpoint-large;
    @extend %ods-text--weight-medium;

    color: inherit;
    background-color: unset;
    border: none;
    display: inline-block;
    font-family: inherit;
    @extend %ods-padding-left-0;

    &:hover {
      color: colors.$blue-state;
      cursor: pointer;
    }

    &:focus-visible {
      box-shadow: 0 0 0 0.125rem colors.$blue-state;
      outline-offset: 0.125rem;
      outline: 0.25rem solid colors.$purple-light;
    }

    &::after {
      @extend %ods-margin-left-1;

      content: map.get(icon-map.$icons, "chevron-thin-down");
      font-family: "Oslo Icons", Arial, Helvetica, sans-serif;
      @extend %ods-text--size-golf;

      line-height: 1.75rem;
      vertical-align: top;
    }

    &:active,
    &:hover,
    &:focus {
      text-decoration: none !important;
    }
  }

  &--expanded {
    &.ods-collapsible-trigger--big-block::after {
      content: map.get(icon-map.$icons, "minus-sign");
    }

    &.ods-collapsible-trigger--block::after,
    &.ods-collapsible-trigger--link::after {
      content: map.get(icon-map.$icons, "chevron-thin-up");
    }
  }

  &--hidden-breakpoint-medium {
    @include breakpoints.medium {
      display: none;
    }
  }

  &--hidden-breakpoint-large {
    @include breakpoints.medium {
      display: none;
    }
  }
}

.ods-collapsible-content {
  visibility: visible;

  &--collapsed {
    border: none !important;
    margin: 0 !important;
    max-height: 0;
    overflow: hidden;
    padding: 0 !important;
    visibility: hidden;
  }

  &--expanded-breakpoint-medium {
    @include breakpoints.medium {
      border: initial !important;
      margin: initial !important;
      max-height: initial !important;
      overflow: initial !important;
      padding: initial !important;
      visibility: initial !important;
      opacity: 1 !important;
    }
  }

  &--expanded-breakpoint-large {
    @include breakpoints.large {
      border: initial !important;
      margin: initial !important;
      max-height: initial !important;
      overflow: initial !important;
      padding: initial !important;
      visibility: initial !important;
      opacity: 1 !important;
    }
  }

  &--ease {
    transition: opacity 0.3s ease-in;
    transform: translateZ(0);
    opacity: 1;

    &.ods-collapsible-content--collapsed {
      opacity: 0;
    }
  }

  &--block {
    @extend %ods-padding-4;
  }

  &--big-block {
    @extend %ods-padding-horizontal-5;
    @extend %ods-padding-vertical-4;
  }
}
