// Copyright (C) 2018 The Trustees of Indiana University
// SPDX-License-Identifier: BSD-3-Clause

@use '../core' as *;
@use 'sass:math';

.#{$prefix}-timeline {
  position: relative;
  padding: $spacing-lg 0;

  &::before {
    content: '';
    margin-left: $spacing-xxs;
    position: absolute;
    top: 0;
    left: 0;
    height: 100%;
    width: 1px;
    background: $color-black-100;
  }

  &__item {
    position: relative;
    margin: $spacing-lg 0;
  }

  /**
   *  The marker for the timeline visually only looks good at 12px (.75rem). This results in several magic numbers
   *  related to the placement of other items such as the &__item::after (above) and date labels (where applicable).
   *   This also results in cascading magic numbers for placement of elements such as &__content for variant timelines.
   */

  &__marker {
    width: $spacing-sm * .75;
    height: $spacing-sm * .75;
    position: absolute;
    color: $color-white-base;
    background: $color-crimson-500;
    border-radius: 50%;
    box-shadow: 0 0 0 $spacing-xxs $color-white-base, 0 0 0 math.div($spacing-xs, 1.5) $color-black-100;
    top: $spacing-lg;
  }

  &__content {
    padding: $spacing-md;
    margin-left: $spacing-lg;
    background-color: $color-white-base;
    border-radius: $spacing-xs;
    box-shadow: $shadow-standard;
    border: none;
  }

  &__heading {
    font-size: $ts-23;
    font-weight: $font-weight-regular;
  }

  &__date {
    font-size: $ts-14;
    color: $color-crimson-500;
    margin-top: $spacing-xxs;
    display: inline-block;
  }
}

.#{$prefix}-timeline--right {
  &::before {
    left: auto;
    right: $spacing-xxs;
  }

  .#{$prefix}-timeline__item::after {
    margin-left: 0;
    right: 0;
    border-left-color: $color-black-100;
    border-right-color: transparent;
  }

  .#{$prefix}-timeline__marker {
    margin-left: 0;
    right: 0;
  }

  .#{$prefix}-timeline__content {
    margin-left: 0;
    margin-right: $spacing-lg;
  }
}

@include mq($breakpoint-md) {
  .#{$prefix}-timeline {
    &__date--label {
      left: -$spacing-sm * 11.25;
      right: auto;
      text-align: right;
      position: absolute;
      display: block;
      top: $spacing-sm * 1.75;
      margin-left: auto;
      margin-top: auto;
      margin-right: auto;
      width: 10rem;
    }
  }

  .#{$prefix}-timeline--right {
    .#{$prefix}-timeline__date--label {
      left: auto;
      right: -$spacing-sm * 11.25;
      text-align: left;
      position: absolute;
      display: block;
      top: $spacing-sm * .75;
      margin-left: auto;
      margin-top: auto;
      margin-right: auto;
      width: 10rem;
    }
  }

  .#{$prefix}-timeline--center {
    &::before {
      left: 50%;
      margin-left: 0;
    }

    .#{$prefix}-timeline__row {
      display: flex;
      flex-wrap: wrap;
      margin-right: -$spacing-sm * .75;
      margin-left: -$spacing-sm * .75;
    }

    .#{$prefix}-timeline__item {
      flex-basis: 50%;
      max-width: 50%;
      padding: 0 $spacing-sm * .75;
      width: 100%;
    }

    .#{$prefix}-timeline__item--right {
      margin-left: auto;
    }

    .#{$prefix}-timeline__item::after {
      margin-left: -$spacing-md;
      left: 100%;
      border-left-color: $color-black-100;
      border-right-color: transparent;
    }

    .#{$prefix}-timeline__item--right::after {
      margin-left: -$spacing-sm;
      left: auto;
      border-right-color: $color-black-100;
      border-left-color: transparent;
    }

    .#{$prefix}-timeline__marker {
      margin-left: -$spacing-xxs;
      left: 100%;
    }

    .#{$prefix}-timeline__item--right .#{$prefix}-timeline__marker {
      left: auto;
      margin-left: -$spacing-sm;
    }

    .#{$prefix}-timeline__content {
      margin-left: 0;
      margin-right: $spacing-sm * .75;
    }

    .#{$prefix}-timeline__item--right .#{$prefix}-timeline__content {
      margin-right: 0;
      margin-left: $spacing-sm;
    }

    .#{$prefix}-timeline__date--label {
      left: auto;
      right: -$spacing-sm * 11.75;
      text-align: left;
      position: absolute;
      display: block;
      top: auto;
      margin-top: -$spacing-sm * 3.15;
      width: $spacing-sm * 10;
    }

    .#{$prefix}-timeline__item--right .#{$prefix}-timeline__date--label {
      left: -$spacing-sm * 11.5;
      right: auto;
      text-align: right;
      position: absolute;
      display: block;
      top: $spacing-sm * .75;
      margin-left: auto;
      margin-top: auto;
      margin-right: auto;
      width: $spacing-sm * 10;
    }
  }
}
