wireui/heroicons
Laravel package that brings Heroicons to WireUI, providing ready-to-use SVG icon components you can drop into your Blade views and WireUI components for consistent, customizable icons across your app.
composer require wireui/heroicons
tailwind.config.js:
plugins: [
require('wireui/tailwind'),
],
npm install @heroicons/tailwind
npm run dev
Replace this manual SVG:
<img src="{{ asset('images/star.svg') }}" class="h-6 w-6 text-yellow-400">
With Heroicons:
@heroicon('solid/star', class="h-6 w-6 text-yellow-400")
solid, outline, or mini).tailwind.config.js includes the WireUI plugin.@heroicon('solid/check', class="h-5 w-5 text-green-500")
@heroicon('outline/star', class="h-5 w-5 text-gray-400 hover:text-gray-500")
@heroicon('mini/arrow-right', class="h-4 w-4")
Leverage Blade directives to conditionally render icons:
@if ($user->is_active)
@heroicon('solid/check-circle', class="text-green-500")
@else
@heroicon('solid/x-circle', class="text-red-500")
@endif
Embed icons in reusable Blade components (e.g., buttons, cards):
@component('components.button', [
'icon' => 'solid/arrow-right',
'iconClasses' => 'h-5 w-5',
'text' => 'Submit'
])
@endcomponent
Use Tailwind’s dark mode classes with icons:
@heroicon('solid/moon', class="h-6 w-6 dark:text-gray-500")
Pass icon props dynamically:
<x-livewire-button wire:click="submit">
@heroicon('solid/paper-airplane', class="h-5 w-5 mr-2")
Submit
</x-livewire-button>
Render icons in Vue/React components via Blade:
<div x-data>
<button @click="$wire.submit">
@heroicon('solid/upload', class="h-5 w-5 inline")
<span>Upload</span>
</button>
</div>
Extend Tailwind’s theme to customize icon colors:
// tailwind.config.js
theme: {
extend: {
colors: {
'icon-primary': '#3b82f6',
},
},
},
Usage:
@heroicon('solid/star', class="h-6 w-6 text-icon-primary")
// vite.config.js
optimizeDeps: {
include: ['@heroicons/tailwind'],
},
Missing Tailwind Plugin
wireui/tailwind is added to tailwind.config.js plugins.Blade Cache Issues
php artisan view:clear
Version Mismatches
composer.json and package.json:
"wireui/heroicons": "^2.10.0",
"@heroicons/tailwind": "^2.0.11"
Build Step Failures
npm run build
purge config if using Tailwind JIT:
// tailwind.config.js
purge: [
'./resources/views/**/*.blade.php',
'./resources/js/**/*.js',
'./vendor/wireui/**/*.blade.php',
],
Mini Icons Scaling
h-3.5 w-3.5) or adjust Tailwind’s fontSize scale.npx tailwindcss -i input.css -o output.css --watch to debug CSS generation.@error directives to catch syntax issues:
@error
<div class="bg-red-100 border border-red-400 text-red-700 px-4 py-3 rounded">
Blade error: {{ $e->getMessage() }}
</div>
@enderror
Custom Icon Sets
php artisan vendor:publish --tag=wireui-heroicons
resources/views/vendor/wireui/heroicons.Icon Animations
@heroicon('solid/spinner', class="h-5 w-5 animate-spin")
<svg class="animate-pulse" ...>...</svg>
Accessibility
aria-hidden and focusable="false" for decorative icons:
@heroicon('solid/star', class="h-5 w-5", ['aria-hidden' => 'true', 'focusable' => 'false'])
aria-label for interactive icons:
<button aria-label="Submit form">
@heroicon('solid/paper-airplane', class="h-5 w-5")
</button>
Dark Mode Customization
tailwind.config.js:
darkMode: 'class',
theme: {
extend: {
colors: {
'icon-dark': '#9ca3af',
},
},
},
@heroicon('solid/moon', class="h-6 w-6 text-icon-dark dark:text-white")
solid/check-circle vs. outline/check-circle).h-5 w-5 for buttons, h-4 w-4 for tooltips).resolve.alias:
// vite.config.js
resolve: {
alias: {
'@heroicons': path.resolve(__dirname, 'node_modules/@heroicons/tailwind'),
},
},
How can I help you explore Laravel packages today?