import { FaIconLibrary } from '@fortawesome/angular-fontawesome';
import { 
  faUser, 
  faHome, 
  faCog, 
  faSearch,
  faPlus,
  faEdit,
  faTrash,
  faSave,
  faCancel,
  faCheck,
  faTimes,
  faArrowLeft,
  faArrowRight,
  faChevronLeft,
  faChevronRight,
  faChevronUp,
  faChevronDown,
  faBars,
  faEllipsisV,
  faEye,
  faEyeSlash,
  faDownload,
  faUpload,
  faRefresh,
  faSpinner,
  faExclamationTriangle,
  faInfoCircle,
  faCheckCircle,
  faTimesCircle,
  faEnvelope,
  faWindowMaximize,
  faUserCircle,
  faCertificate,
  faHandPointer,
  faIdCard,
  faTags,
  faCheckSquare,
  faKeyboard,
  faThLarge,
  faList,
  faDotCircle,
  faToggleOn,
  faTable,
  faCirclePlus
} from '@fortawesome/free-solid-svg-icons';
import {
  faHeart,
  faBookmark,
  faComment,
  faThumbsUp
} from '@fortawesome/free-regular-svg-icons';
import {
  faGithub,
  faTwitter,
  faLinkedin,
  faGoogle
} from '@fortawesome/free-brands-svg-icons';

/**
 * Configuration function to add commonly used Font Awesome icons to the library
 * Call this function in your application's initialization to register icons
 */
export function configureFontAwesome(library: FaIconLibrary): void {
  // Add solid icons
  library.addIcons(
    faUser,
    faHome,
    faCog,
    faSearch,
    faPlus,
    faEdit,
    faTrash,
    faSave,
    faCancel,
    faCheck,
    faTimes,
    faArrowLeft,
    faArrowRight,
    faChevronLeft,
    faChevronRight,
    faChevronUp,
    faChevronDown,
    faBars,
    faEllipsisV,
    faEye,
    faEyeSlash,
    faDownload,
    faUpload,
    faRefresh,
    faSpinner,
    faExclamationTriangle,
    faInfoCircle,
    faCheckCircle,
    faTimesCircle,
    faEnvelope,
    faWindowMaximize,
    faUserCircle,
    faCertificate,
    faHandPointer,
    faIdCard,
    faTags,
    faCheckSquare,
    faKeyboard,
    faThLarge,
    faList,
    faDotCircle,
    faToggleOn,
    faTable,
    faCirclePlus
  );

  // Add regular icons
  library.addIcons(
    faHeart,
    faBookmark,
    faComment,
    faThumbsUp
  );

  // Add brand icons
  library.addIcons(
    faGithub,
    faTwitter,
    faLinkedin,
    faGoogle
  );
}