$pagination-context: "Pagination";
$pagination-margin-x: 0.5 !default;
$pagination-margin-y: 2 !default;
$pagination-margin-padding: 1 !default;
$pagination-target-size: 5 !default;

$pagination-current-color: get-color-token-from-bg(
  $theme-pagination-background-color
);
$pagination-link-tokens: get-link-tokens-from-bg(
  $theme-pagination-background-color,
  $theme-link-reverse-color,
  $theme-link-color,
  $context: $pagination-context
);

$pagination-link-token: nth($pagination-link-tokens, 1);
$pagination-hover-token: nth($pagination-link-tokens, 2);

// Pagination
// ---------------------------------
.usa-pagination {
  @include u-margin-y($pagination-margin-y);
  @include typeset($theme-pagination-font-family);
  display: flex;
  justify-content: center;
}

// TODO: Pull out magic number into vars? Could this better?
.usa-pagination .usa-icon {
  height: px-to-rem(18px);
  width: px-to-rem(18px);
}

// Shared styles
// ---------------------------------

// Pagination nav
// ---------------------------------
.usa-pagination__list {
  @include add-list-reset;
  align-items: center;
  display: flex;
  flex-flow: row nowrap;
  justify-content: center;
  width: auto;
}

// Pagination nav items
// 1. Prevents chromium browsers from adding additional vertical whitespace
.usa-pagination__item {
  display: inline-flex; // 1
  height: units($pagination-target-size);
  justify-content: center;
  line-height: 1;
  margin-left: units($pagination-margin-x);
  margin-right: units($pagination-margin-x);
  min-width: units($pagination-target-size);

  @include at-media($theme-pagination-breakpoint) {
    flex: 1 0 auto; // flex: 1 won't work in IE11
  }
}

// Don't show previous and next at mobile.
// Functionality exists with page buttons.
.usa-pagination__arrow {
  display: none;
  @include at-media($theme-pagination-breakpoint) {
    display: inherit;
  }
}

.usa-pagination__previous-page {
  @include at-media($theme-pagination-breakpoint) {
    margin-right: units(divide($pagination-target-size, 2));
  }
}

.usa-pagination__next-page {
  @include at-media($theme-pagination-breakpoint) {
    margin-left: units(divide($pagination-target-size, 2));
  }
}

.usa-pagination__link {
  align-items: center;
  color: color($pagination-link-token);
  display: inline-flex;
  text-decoration: none;

  &[disabled] {
    opacity: 0.4 !important;
    pointer-events: none;
  }

  &:hover,
  &:focus,
  &:active {
    color: color($pagination-hover-token);
    text-decoration: underline;
  }

  &:visited {
    color: color($pagination-link-token);
  }
}

.usa-pagination__button {
  align-items: center;
  border-color: adjust-color(color($pagination-current-color), $alpha: -0.8);
  border-radius: radius($theme-pagination-button-border-radius);
  border-style: solid;
  border-width: units($theme-pagination-button-border-width);
  color: color($pagination-link-token);
  display: inline-flex;
  justify-content: center;
  padding: units($pagination-margin-padding);
  text-decoration: none;
  width: 100%;

  &:hover,
  &:focus,
  &:active {
    color: color($pagination-hover-token);
    border-color: color($pagination-hover-token);

    @media (forced-colors: active) {
      border: 2px solid buttonText;
    }
  }
}

.usa-pagination .usa-current {
  $text-color: if(
    $theme-pagination-background-color == "default",
    $theme-body-background-color,
    $theme-pagination-background-color
  );
  background-color: color($pagination-current-color);
  border-color: transparent;
  color: color($text-color);

  @media (forced-colors: active) {
    outline: 2px solid buttonText;
    color: buttonText;
  }

  &:hover,
  &:focus,
  &:active {
    background-color: color($pagination-current-color);
    color: color($text-color);
    text-decoration: none;

    @media (forced-colors: active) {
      color: buttontext;
    }
  }
}

.usa-pagination__overflow {
  align-items: center;
  align-self: stretch;
  display: inherit;
  user-select: none;
  padding: units($pagination-margin-padding);
  opacity: 0.5;
}

// ---------------------------------
// Variants
// ---------------------------------
