@import 'variables';

.magnet-indicator {
  display: inline-flex;
  justify-content: center;
  align-items: center;
  border-radius: 9999px;
  flex-shrink: 0;

  &--has-children {
    font-weight: 700;
  }

  &--invert {
    background-color: var(--jfv-white);
  }

  &--outline {
    outline: 2px solid;
  }

  &--outline.magnet-indicator--dark {
    outline-color: var(--jfv-gray-600);
  }

  &--outline.magnet-indicator--light {
    outline-color: var(--jfv-white);
  }

  // Sizes without children
  &:not(.magnet-indicator--has-children):not(.magnet-indicator--has-icon) {
    &.magnet-indicator--x-small,
    &.magnet-indicator--small {
      width: 8px;
      height: 8px;
    }

    &.magnet-indicator--medium {
      width: 10px;
      height: 10px;
    }

    &.magnet-indicator--large {
      width: 12px;
      height: 12px;
    }
  }

  // Sizes with children
  &.magnet-indicator--has-children {
    &.magnet-indicator--x-small {
      min-width: 12px;
      height: 12px;
      padding: 0 2px;
      font-size: 10px;
      gap: 2px;
    }

    &.magnet-indicator--small {
      min-width: 16px;
      height: 16px;
      padding: 0 4px;
      font-size: 10px;
      gap: 2px;
    }

    &.magnet-indicator--medium {
      min-width: 20px;
      height: 20px;
      padding: 0 6px;
      font-size: 12px;
      gap: 4px;
    }

    &.magnet-indicator--large {
      min-width: 24px;
      height: 24px;
      padding: 0 8px;
      font-size: 14px;
      gap: 6px;
    }
  }

  // Icon sizes
  &:not(.magnet-indicator--has-children).magnet-indicator--has-icon {
    &.magnet-indicator--x-small {
      width: 12px;
      height: 12px;
    }

    &.magnet-indicator--small {
      width: 16px;
      height: 16px;
    }

    &.magnet-indicator--medium {
      width: 20px;
      height: 20px;
    }

    &.magnet-indicator--large {
      width: 24px;
      height: 24px;
    }
  }

  &__icon {
    width: 12px;
    height: 12px;

    .magnet-indicator--small & {
      width: 12px;
      height: 12px;
    }

    .magnet-indicator--medium & {
      width: 16px;
      height: 16px;
    }

    .magnet-indicator--large & {
      width: 20px;
      height: 20px;
    }
  }

  // Color styles - filled (invert false)
  &:not(.magnet-indicator--invert) {
    &.magnet-indicator--primary {
      background-color: var(--jfv-blue-500);
      color: var(--jfv-white);
    }

    &.magnet-indicator--success {
      background-color: var(--jfv-green-500);
      color: var(--jfv-white);
    }

    &.magnet-indicator--error {
      background-color: var(--jfv-red-500);
      color: var(--jfv-white);
    }

    &.magnet-indicator--warning {
      background-color: #f97316;
      color: var(--jfv-white);
    }

    &.magnet-indicator--secondary {
      background-color: var(--jfv-navy-25);
      color: var(--jfv-navy-700);
    }
  }

  // Color styles - invert (for use on colored buttons)
  &.magnet-indicator--invert {
    &.magnet-indicator--primary {
      color: var(--jfv-blue-500);
    }

    &.magnet-indicator--success {
      color: var(--jfv-green-500);
    }

    &.magnet-indicator--error {
      color: var(--jfv-red-500);
    }

    &.magnet-indicator--warning {
      color: #f97316;
    }

    &.magnet-indicator--secondary {
      color: var(--jfv-navy-600);
    }
  }
}
