// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package icons;

import com.intellij.ui.IconManager;
import org.jetbrains.annotations.NotNull;

import javax.swing.*;

/**
 * NOTE THIS FILE IS AUTO-GENERATED
 * DO NOT EDIT IT BY HAND, run "Generate icon classes" configuration instead
 */
public final class GithubIcons {
  private static @NotNull Icon load(@NotNull String path) {
    return IconManager.getInstance().getIcon(path, GithubIcons.class);
  }

  /** 16x16 */ public static final @NotNull Icon Branch = load("/org/jetbrains/plugins/github/branch.svg");
  /** 16x16 */ public static final @NotNull Icon Close = load("/org/jetbrains/plugins/github/close.svg");
  /** 16x16 */ public static final @NotNull Icon DefaultAvatar = load("/org/jetbrains/plugins/github/defaultAvatar.svg");
  /** 16x16 */ public static final @NotNull Icon Delete = load("/org/jetbrains/plugins/github/delete.svg");
  /** 16x16 */ public static final @NotNull Icon DeleteHovered = load("/org/jetbrains/plugins/github/deleteHovered.svg");
  /** 16x16 */ public static final @NotNull Icon PullRequestClosed = load("/org/jetbrains/plugins/github/pullRequestClosed.svg");
  /** 16x16 */ public static final @NotNull Icon PullRequestMerged = load("/org/jetbrains/plugins/github/pullRequestMerged.svg");
  /** 16x16 */ public static final @NotNull Icon PullRequestOpen = load("/org/jetbrains/plugins/github/pullRequestOpen.svg");
  /** 13x13 */ public static final @NotNull Icon PullRequestsToolWindow = load("/org/jetbrains/plugins/github/pullRequestsToolWindow.svg");
  /** 16x16 */ public static final @NotNull Icon Review = load("/org/jetbrains/plugins/github/review.svg");
  /** 16x16 */ public static final @NotNull Icon ReviewAccepted = load("/org/jetbrains/plugins/github/reviewAccepted.svg");
  /** 16x16 */ public static final @NotNull Icon ReviewRejected = load("/org/jetbrains/plugins/github/reviewRejected.svg");
  /** 16x16 */ public static final @NotNull Icon Send = load("/org/jetbrains/plugins/github/send.svg");
  /** 16x16 */ public static final @NotNull Icon SendHovered = load("/org/jetbrains/plugins/github/sendHovered.svg");
  /** 16x16 */ public static final @NotNull Icon Timeline = load("/org/jetbrains/plugins/github/timeline.svg");
}
