/*
* Avatar component
*
*/

@use '../../../style/core/utilities.scss' as utilities;

.dnb-avatar {
  --avatar-font-size--small: var(--font-size-x-small);
  --avatar-font-size--medium: var(--font-size-basis);
  --avatar-font-size--large: var(--font-size-x-large);
  --avatar-font-size--x-large: var(--font-size-x-large);
  --avatar-line-height--small: var(--line-height-x-small);
  --avatar-line-height--medium: var(--line-height-basis);
  --avatar-line-height--large: var(--line-height-large);
  --avatar-line-height--x-large: var(--line-height-large);
  --avatar-width--small: 1.5rem;
  --avatar-height--small: 1.5rem;
  --avatar-width--medium: 2rem;
  --avatar-height--medium: 2rem;
  --avatar-width--large: 4rem;
  --avatar-height--large: 4rem;
  --avatar-width--x-large: 5rem;
  --avatar-height--x-large: 5rem;

  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;

  overflow: hidden;
  user-select: none;
  white-space: nowrap;

  border-radius: 50%;
  font-weight: var(--font-weight-medium);
  line-height: 1;
  background-color: var(--background-color);
  color: var(--color);

  &[style*='--background-color'] {
    background-color: var(--background-color, var(--color-emerald-green));
  }
  &[style*='--color'] {
    color: var(--color, var(--color-pistachio));
  }

  // Safari needs a correct CSS specificity
  &,
  .dnb-core-style & {
    line-height: var(--line-height-large);
  }

  &--size-small {
    width: var(--avatar-width--small);
    height: var(--avatar-height--small);
    font-size: var(--avatar-font-size--small);

    // Safari needs a correct CSS specificity
    &,
    .dnb-core-style & {
      line-height: var(--avatar-line-height--small);
    }

    .dnb-icon--auto {
      font-size: 0.75rem;
    }
  }

  &--size-medium {
    width: var(--avatar-width--medium);
    height: var(--avatar-height--medium);
    font-size: var(--avatar-font-size--medium);

    // Safari needs a correct CSS specificity
    &,
    .dnb-core-style & {
      line-height: var(--avatar-line-height--medium);
    }
    .dnb-icon--auto {
      font-size: 1.25rem;
    }
  }

  &--size-large {
    width: var(--avatar-width--large);
    height: var(--avatar-height--large);
    font-size: var(--avatar-font-size--large);

    // Safari needs a correct CSS specificity
    &,
    .dnb-core-style & {
      line-height: var(--avatar-line-height--large);
    }

    .dnb-icon--auto {
      font-size: 2.5rem;
    }
  }

  &--size-x-large {
    width: var(--avatar-width--x-large);
    height: var(--avatar-height--x-large);
    font-size: var(--avatar-font-size--x-large);

    // Safari needs a correct CSS specificity
    &,
    .dnb-core-style & {
      line-height: var(--avatar-line-height--x-large);
    }
    .dnb-icon--auto {
      font-size: 2.75rem;
    }
  }

  &__group {
    --avatar-font-size-left--small: var(--font-size-x-small);
    --avatar-font-size-left--medium: var(--font-size-small);
    --avatar-font-size-left--large: var(--font-size-large);
    --avatar-font-size-left--x-large: var(--font-size-large);

    display: inline-flex;
    justify-content: flex;
    flex-direction: row;

    .dnb-avatar {
      @include utilities.fakeBorder(var(--color-black-3), 0.125rem);

      &--size-small {
        margin-left: -0.5rem;
      }

      &--size-medium {
        margin-left: -0.75rem;
      }

      &--size-large {
        margin-left: -1rem;
      }

      &--size-x-large {
        margin-left: -1.5rem;
      }

      &:nth-of-type(2) {
        margin-left: 0;
      }
    }

    &--elements-left {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      flex-shrink: 0;
      color: var(--color-black-55);

      &--size-small {
        font-size: var(--avatar-font-size-left--small);
        margin-left: 0.125rem;
      }

      &--size-medium {
        font-size: var(--avatar-font-size-left--medium);
        margin-left: 0.125rem;
      }

      &--size-large {
        font-size: var(--avatar-font-size-left--large);
        margin-left: var(--spacing-xx-small);
      }

      &--size-x-large {
        font-size: var(--avatar-font-size-left--x-large);
        margin-left: var(--spacing-xx-small);
      }
    }
  }
}
