Install via Composer
composer require fortawesome/font-awesome
Basic Usage in Blade
<i class="fa-solid fa-user"></i>
@vite(['resources/css/app.css', 'node_modules/@fortawesome/fontawesome-free/css/all.min.css'])
First Use Case: Icons in Navigation
<nav>
<a href="/dashboard"><i class="fa-solid fa-gauge"></i> Dashboard</a>
</nav>
Solid vs. Regular vs. Brands
Use fa-solid, fa-regular, or fa-brands prefixes (e.g., fa-brands fa-github).
Dynamic Icons via Blade Components
<x-icon name="fa-solid fa-{!! $icon !!}" />
$icon = 'user').Customize Build
Add to webpack.mix.js:
mix.copy('node_modules/@fortawesome/fontawesome-free/webfonts', 'public/fonts/fontawesome');
/public.SVG Icons (Advanced)
Use @fortawesome/free-solid-svg-icons for inline SVGs:
import { library, dom } from '@fortawesome/fontawesome-svg-core';
import { faUser } from '@fortawesome/free-solid-svg-icons';
library.add(faUser);
dom.watch();
.fa-user {
color: var(--primary-color);
}
<i class="fa-solid fa-search" style="font-size: 1.5rem; margin-right: 0.5rem;"></i>
<i class="fa-solid fa-bell" aria-hidden="true"></i>
<span class="sr-only">Notifications</span>
fa-language (e.g., fa-flag-us) for flags.Missing Font Files
npm install and rebuild assets (npm run dev/prod).Version Conflicts
font-awesome (v4) with @fortawesome (v5/6).composer remove fortawesome/font-awesome
npm uninstall font-awesome
SVG vs. Font Performance
Blade Cache Issues
php artisan view:clear
font-awesome CSS is loaded (look for fa-layers classes).npm ls @fortawesome
Custom Icons
webpack.mix.js:
mix.copy('path/to/custom-icons', 'public/icons');
<i class="custom-icon fa-custom"></i>
Lazy Loading
import { faUser } from '@fortawesome/free-solid-svg-icons';
// Add to DOM as needed
Dark Mode Support
fa-light or CSS variables:
@media (prefers-color-scheme: dark) {
.fa-solid { color: #ccc; }
}
Shortcut for Common Icons Create a Blade directive:
Blade::directive('icon', function ($icon) {
return "<i class=\"fa-solid fa-{$icon}\"></i>";
});
Usage:
@icon('user')
Icon Search Tool Use the Font Awesome Icon Picker for quick lookups.
Offline Development
Mock icons with placeholder text in app.js:
document.addEventListener('DOMContentLoaded', () => {
document.querySelectorAll('.fa').forEach(el => {
el.textContent = el.className.split(' ')[1] || '?';
});
});
How can I help you explore Laravel packages today?