| Install | |
|---|---|
composer require ultraviolettes/filament-audio-field-column |
|
| Latest Version: | v1.1.3 |
| PHP: | ^8.2 |
A Filament plugin that provides audio player components with circular progress for forms, tables, and infolists.

composer require ultraviolettes/filament-audio-field-column
Display an audio player in your table:
use Ultraviolettes\FilamentAudio\Tables\Columns\AudioColumn;
public static function table(Table $table): Table
{
return $table
->columns([
AudioColumn::make('audio_url')
->label('Preview'),
// Or with a custom URL
AudioColumn::make('preview')
->audioUrl(fn ($record) => $record->getAudioUrl())
->size(40)
->progressColor('#10b981'),
]);
}
Display an audio player in your infolist:
use Ultraviolettes\FilamentAudio\Infolists\Components\AudioEntry;
public static function infolist(Infolist $infolist): Infolist
{
return $infolist
->schema([
AudioEntry::make('audio_url')
->label('Audio Preview')
->showDuration()
->showVolume(),
]);
}
Display an audio preview in your form (read-only player):
use Ultraviolettes\FilamentAudio\Forms\Components\AudioField;
public static function form(Form $form): Form
{
return $form
->schema([
AudioField::make('audio_url')
->label('Audio Preview')
->audioUrl(fn ($record) => $record?->audio_url)
->showDuration()
->showVolume()
->size(48),
]);
}
All components support the following options:
| Method | Description | Default |
|---|---|---|
audioUrl(string|Closure) |
Set the audio URL directly | Uses state value |
size(int) |
Size of the player in pixels | 32 (column/entry), 48 (field) |
progressColor(string) |
Color of the progress circle | #00bfff |
showDuration(bool) |
Show the duration display | false (column/entry), true (field) |
showVolume(bool) |
Show volume control | false |
AudioColumn::make('audio_file')
AudioColumn::make('preview')
->label('Audio')
->audioUrl(fn ($record) => Storage::url($record->audio_path))
->size(36)
->progressColor('#f59e0b')
->showDuration()
AudioField::make('audio_preview')
->label('Current Audio')
->audioUrl(fn ($record) => $record?->getFirstMediaUrl('audio'))
->size(56)
->progressColor('#8b5cf6')
->showDuration()
->showVolume()
AudioColumn::make('audio')
->audioUrl(fn ($record) => $record->getFirstMediaUrl('tracks'))
AudioColumn::make('sample')
->audioUrl('https://example.com/audio/sample.mp3')
The component uses Tailwind CSS classes and supports dark mode out of the box. The progress circle color can be customized using the progressColor() method with any valid CSS color value:
->progressColor('#10b981') // Hex
->progressColor('rgb(16, 185, 129)') // RGB
->progressColor('deepskyblue') // Named color
The audio player uses the native HTML5 <audio> element and supports all modern browsers. Supported audio formats depend on the browser:
Contributions are welcome! Please feel free to submit a Pull Request.
MIT License. See LICENSE.md for more information.