/**
 * @file
 * Styles for action links.
 *
 * Contains Action link component and the action-links layout styles.
 */

/**
 * Action links layout.
 */
.action-links {
  margin: var(--admin-space-l) 0;
  list-style: none;
}

.action-links__item {
  display: inline-block;

  & + .action-links__item {
    & > .action-link {
      margin-inline-start: var(--admin-space-s);
    }

    & > .action-link--small {
      margin-inline-start: var(--admin-space-xs);
    }
  }
}

/**
 * The action link component.
 */
.action-link {
  display: inline-block;
  padding: calc(var(--admin-space-m) - ((var(--admin-space-l) - var(--admin-space-m)) / 2)) var(--admin-space-m);
  cursor: pointer;
  text-decoration: none;
  color: var(--admin-color-primary);
  border-radius: var(--admin-radius-s);
  background: transparent;
  font-size: var(--admin-font-size-m);
  font-weight: 700;
  line-height: var(--admin-space-l);
  /* Bigger line-height needed to prevent the icon from increasing the height */
  -webkit-font-smoothing: antialiased;

  /* Action link states */
  &:hover {
    text-decoration: none;
    color: var(--admin-color-primary-hover);
    background: var(--admin-color-bg-item-hover);
  }

  &:focus {
    position: relative;
    z-index: 1;
    text-decoration: none;
    color: var(--admin-color-primary-active);
    background: var(--admin-color-primary-soft-hover);
  }

  &:active {
    color: var(--admin-color-link-active);
    background-color: var(--admin-color-bg-item-hover);
  }

  &.action-link--extrasmall {
    font-size: var(--admin-font-size-2xs);
  }

  /**
  * Action link icons with states.
  *
  * We use parent-relative units here to follow the .action-link's font size.
  */

  /* Defaults for icons */
  &::before {
    position: relative;
    inset-block-start: 0.125rem;
    /* Set the proper vertical alignment */
    display: inline-block;
    width: 1em;
    height: 1em;
    margin-inline: calc(var(--admin-space-s) - var(--admin-space-m)) 0.5em;
    background: currentColor;
    background-image: none;
    mask-size: contain;
    mask-repeat: no-repeat;
    mask-position: center;
  }

  & + .action-link {
    margin-inline-start: var(--admin-space-s);
  }

  /**
   * Action links inside form-actions.
   *
   * Add the same margin for action-link inside form-actions as button has.
   */
  .form-actions &,
  .field-actions & {
    margin-inline: 0 var(--admin-space-s);
  }

  @media (forced-colors: active) {
    &::before {
      background: linktext;
    }
  }
}

.no-touchevents {
  /* Small variant. */
  & .action-link--small {
    padding: calc(var(--admin-space-s) - ((var(--admin-space-l) - var(--admin-space-s)) / 2)) var(--admin-space-s);
    font-size: var(--admin-font-size-s);
  }

  /* Extra small variant. */
  & .action-link--extrasmall {
    padding: 0 var(--admin-space-xs);
    font-size: var(--admin-font-size-2xs);
  }

  & .action-link--small + .action-link--small,
  & .action-link--extrasmall + .action-link--extrasmall {
    margin-inline-start: var(--admin-space-xs);
  }
}

/**
 * Action link variants.
 */
/* Danger. */
.action-link--danger {
  color: var(--admin-color-text-error);

  &:hover {
    color: var(--admin-color-bg-surface);
    background-color: var(--admin-color-error);
  }
}

.no-touchevents .action-link--small::before,
.no-touchevents .action-link--extrasmall::before {
  inset-block-start: 0.0625rem;
  width: var(--admin-space-s);
  height: var(--admin-space-s);
  margin-inline: -0.125rem 0.4em;
}

.action-link--icon-trash {
  &::before {
    content: "";
    mask-image: url(../../images/icons/545560/trash.svg);
  }

  /* Trash action link rendered as a button. */
  &.action-link--danger {
    border: 2px solid var(--admin-color-error);
    border-radius: var(--admin-radius-m);
    font-size: var(--admin-font-size-s);
    line-height: 1;
    padding-block: calc(var(--admin-space-s) - 2px);
    padding-inline: var(--admin-space-m);

    &::before {
      content: none;
    }
  }
}

.action-link--icon-plus::before {
  content: "";
  mask-image: var(--admin-icon-add);
}

.action-link--icon-ex::before {
  content: "";
  mask-image: var(--admin-icon-remove);
}

.action-link--icon-checkmark::before {
  content: "";
  mask-image: var(--admin-icon-checkmark);
}

.action-link--icon-cog::before {
  content: "";
  mask-image: var(--admin-icon-config);
}

.action-link--icon-show::before {
  content: "";
  mask-image: var(--admin-icon-show);
}

.action-link--icon-hide::before {
  content: "";
  mask-image: var(--admin-icon-hide);
}

.action-link--icon-key::before {
  content: "";
  mask-image: var(--admin-icon-devel);
}

.action-link--icon-questionmark::before {
  content: "";
  mask-image: var(--admin-icon-help);
}

.action-link--icon-chevron-left::before {
  content: "";
  mask-image: url("../../images/icons/545560/pager-prev.svg");
}

/* @todo Maybe move these styles over to button. */

.button.button--danger {
  min-height: 0;
  color: var(--admin-color-error);
  border-color: var(--admin-color-error);
  box-shadow: 0 1px 2px light-dark(#fdd9d9, #483439);

  &:hover,
  &:focus,
  &:active {
    color: var(--admin-color-bg-surface);
    background-color: var(--admin-color-error);
  }
}
