charlieetienne/filament-font-picker
composer require charlieetienne/filament-font-picker
@source '../../../../vendor/charlieetienne/filament-font-picker/resources/**/*.blade.php';
AppServiceProvider:
use CharlieEtienne\FilamentFontPicker\FilamentFontPickerPlugin;
public function boot(): void
{
FilamentFontPickerPlugin::make()
->register();
}
Add the component to a Filament form:
use CharlieEtienne\FilamentFontPicker\Components\FontPicker;
FontPicker::make('font_family')
->label('Select a Google Font')
->required(),
Basic Integration:
FontPicker::make('primary_font')
->label('Primary Font')
->default('Roboto') // Optional default
->required(),
Category Filtering:
FontPicker::make('heading_font')
->label('Heading Font')
->categories(['serif', 'display']) // Restrict to specific categories
->searchable(), // Enable search (default: true)
Standalone Usage (Non-Filament Context):
FontPicker component in custom Blade views via @filamentForms directive:
@filamentForms
<x-filament-font-picker::font-picker wire:model="fontFamily" />
Validation & Rules:
FontPicker::make('body_font')
->rules(['required', 'font_family']) // Custom validation rule
->helperText('Must be a valid Google Font.'),
Dynamic Updates:
public function form(Form $form): Form
{
return $form
->schema([
FontPicker::make('font')
->live(onBlur: true), // Update on blur
]);
}
Missing Custom Theme:
Class 'FilamentFontPickerPlugin' not found or blank previews.Font Loading Delays:
app.blade.php:
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap" rel="preload" as="style" onload="this.onload=null;this.rel='stylesheet'">
<noscript><link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap" rel="stylesheet"></noscript>
Dark Mode Glitches:
font-color for dark themes:
.filament-font-picker-preview.dark {
--font-color: #ffffff;
}
Search Not Working:
searchable() method is called (enabled by default).// In a custom JS file
document.addEventListener('DOMContentLoaded', () => {
console.log('Font picker search:', document.querySelector('.filament-font-picker-search')?.addEventListener);
});
/css2?family=...) are successful.Uncaught TypeError: fontPicker is not a function.Custom Font Sources:
php artisan vendor:publish --provider="CharlieEtienne\FilamentFontPicker\FilamentFontPickerServiceProvider"
config/filament-font-picker.php to point to a custom endpoint.Add New Categories:
FontCategory enum in app/Providers/FilamentFontPickerServiceProvider.php:
use CharlieEtienne\FilamentFontPicker\Enums\FontCategory;
FontCategory::add('custom', 'Custom Category');
Styling Overrides:
/* Example: Change preview text */
.filament-font-picker-preview-text {
font-size: 2rem;
color: #3b82f6;
}
Keyboard Navigation:
document.addEventListener('filament-font-picker:mounted', (e) => {
e.detail.element.addEventListener('keydown', (e) => {
if (e.key === 'ArrowDown') {
e.preventDefault();
// Custom logic
}
});
});
How can I help you explore Laravel packages today?