@use 'sass:map';
@use '../base/token';
@use '../abstract';

$tag-size: (
  'sm': (
    font: token.$font-size-0,
    padding: 3px 8px,
  ),
  'md': (
    font: token.$font-size-1,
    padding: 2px 9px,
  ),
  'lg': (
    font: token.$font-size-1,
    padding: 4px 10px,
  ),
);

.cds-tag {
  $this: &;

  display: inline-flex;
  align-items: center;
  border-radius: 6px;
  border: 1px solid var(--gray-200);
  color: var(--gray-500);
  line-height: 1.5;
  font-weight: abstract.font-weight-to-number(token.$font-weights-commerce-sans-1);
  background-color: var(--base-white);
  vertical-align: top;
  overflow: hidden;
  max-width: 100%;

  @each $size, $info in $tag-size {
    &--#{$size} {
      font-size: abstract.rem(map.get($info, 'font'));
      padding: map.get($info, 'padding');
    }
  } // each

  &__text {
    @include abstract.ellipsis();
  }

  &__strike-through {
    text-decoration: line-through;
    color: var(--gray-300);
  }

  & > svg {
    margin-right: 6px;
  }

  &--dot #{$this}__text {
    @include abstract.relative();

    padding-left: 12px;

    &::before {
      @include abstract.absolute($top: 50%, $left: 0);

      content: '';
      transform: translateY(-50%);
      width: 6px;
      height: 6px;
      background-color: var(--primary-red-500);
      border-radius: 50%;
    }
  } // dot

  &__count {
    margin-left: 6px;
    margin-right: -5px;
    padding: 0 5px;
    background-color: var(--gray-100);
    min-width: 20px;
    border-radius: 3px;
    text-align: center;

    & + #{$this}__close {
      margin-left: 6px;
    }
  } // count

  &__close {
    margin-left: 3px;
    margin-right: -6px;
    display: inline-flex;
    align-items: center;
    cursor: pointer;
  } // count
}
