import { Component, ChangeDetectionStrategy } from '@angular/core'; import { CommonModule } from '@angular/common'; import { FaIconComponent } from '@fortawesome/angular-fontawesome'; import { ButtonComponent } from '../../../../../ui-essentials/src/lib/components/buttons/button.component'; import { // Solid icons from shared-ui 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 } from '@fortawesome/free-solid-svg-icons'; import { // Regular icons from shared-ui faHeart, faBookmark, faComment, faThumbsUp } from '@fortawesome/free-regular-svg-icons'; import { // Brand icons from shared-ui faGithub, faTwitter, faLinkedin, faGoogle } from '@fortawesome/free-brands-svg-icons'; @Component({ selector: 'ui-fontawesome-demo', standalone: true, imports: [ CommonModule, FaIconComponent, ButtonComponent ], changeDetection: ChangeDetectionStrategy.OnPush, template: `
This demo showcases the Font Awesome icons available in the shared-ui library. Icons are pre-configured and ready to use across the application.
fa-icon [icon]="faUser"
fa-icon [icon]="faHome"
fa-icon [icon]="faCog"
size="xs"
size="sm"
size="lg"
size="2x"
size="3x"
Most commonly used icons for UI elements, actions, and navigation.
Outlined versions of icons, great for secondary actions and states.
Social media and company logos for external integrations.
style="color: #dc3545;"
size="lg", size="2x", size="3x"
import { faUser } from '@fortawesome/free-solid-svg-icons';
export class MyComponent {
faUser = faUser;
faHome = faHome;
faCog = faCog;
}
<fa-icon [icon]="faUser"></fa-icon>
<fa-icon [icon]="faHome" size="lg"></fa-icon>
<fa-icon [icon]="faCog" size="2x"></fa-icon>
<fa-icon
[icon]="faHeart"
size="2x"
style="color: #dc3545;">
</fa-icon>
<ui-button
variant="filled"
[icon]="faPlus"
iconPosition="left">
Add Item
</ui-button>
<nav class="nav-menu">
<a href="/home">
<fa-icon [icon]="faHome"></fa-icon> Home
</a>
<a href="/profile">
<fa-icon [icon]="faUser"></fa-icon> Profile
</a>
</nav>
<div class="status-success">
<fa-icon [icon]="faCheckCircle"></fa-icon>
Operation completed successfully!
</div>
<div class="status-error">
<fa-icon [icon]="faTimesCircle"></fa-icon>
Something went wrong.
</div>
<div class="loading-container">
<fa-icon [icon]="faSpinner"></fa-icon>
Loading...
</div>
<ui-button
[disabled]="isLoading"
[icon]="isLoading ? faSpinner : faSave">
{{ isLoading ? 'Saving...' : 'Save' }}
</ui-button>
Only import the specific icons you're using to keep bundle size small.
import { faUser, faHome } from '@fortawesome/free-solid-svg-icons';
Choose icons that clearly represent their function or meaning.
faTrash for delete, faEdit for edit, faPlus for add
Use consistent icon sizes throughout your application.
size="sm" for inline text, size="lg" for buttons
Add aria-labels for screen readers when icons convey important information.
<fa-icon [icon]="faUser" aria-label="User profile"></fa-icon>
faPlus - Add/Create
faEdit - Edit/Modify
faTrash - Delete/Remove
faSave - Save/Confirm
faCancel - Cancel/Dismiss
faRefresh - Reload/Update
faHome - Home page
faArrowLeft - Go back
faArrowRight - Go forward
faChevronUp - Expand up
faChevronDown - Expand down
faBars - Menu toggle
faCheckCircle - Success
faTimesCircle - Error
faExclamationTriangle - Warning
faInfoCircle - Information
faSpinner - Loading
faUser - User/Profile
faCog - Settings
faSearch - Search
faEye - View/Show
faEyeSlash - Hide
faDownload - Download