Skip to main content
The radio component provides a radio button group for selecting a single value from a list of options.

Basic Usage

use Filament\Forms\Components\Radio;

Radio::make('status')
    ->options([
        'draft' => 'Draft',
        'scheduled' => 'Scheduled',
        'published' => 'Published',
    ])

Available Methods

options
method
Sets the available options.
Radio::make('status')
    ->options([
        'draft' => 'Draft',
        'published' => 'Published',
    ])
descriptions
method
Adds descriptions to options.
Radio::make('status')
    ->options([
        'draft' => 'Draft',
        'published' => 'Published',
    ])
    ->descriptions([
        'draft' => 'Not visible to users',
        'published' => 'Visible to everyone',
    ])
inline
method
Displays options inline instead of stacked.
Radio::make('feedback')
    ->boolean()
    ->inline()
boolean
method
Creates a boolean radio group with Yes/No options.
Radio::make('feedback')
    ->label('Like this post?')
    ->boolean()

// Customize labels
Radio::make('feedback')
    ->boolean(
        trueLabel: 'Absolutely!',
        falseLabel: 'Not at all!'
    )
disableOptionWhen
method
Disables specific options.
Radio::make('status')
    ->options([
        'draft' => 'Draft',
        'published' => 'Published',
    ])
    ->disableOptionWhen(fn (string $value): bool => $value === 'published')

Common Patterns

Simple Choice

Radio::make('status')
    ->options([
        'active' => 'Active',
        'inactive' => 'Inactive',
    ])
    ->required()

With Descriptions

Radio::make('plan')
    ->options([
        'basic' => 'Basic',
        'premium' => 'Premium',
        'enterprise' => 'Enterprise',
    ])
    ->descriptions([
        'basic' => '$9/month - Perfect for individuals',
        'premium' => '$29/month - Great for small teams',
        'enterprise' => '$99/month - For large organizations',
    ])
    ->required()

Boolean Radio

Radio::make('newsletter_subscription')
    ->label('Subscribe to our newsletter?')
    ->boolean()
    ->inline()

Inline Options

Radio::make('size')
    ->options([
        'sm' => 'Small',
        'md' => 'Medium',
        'lg' => 'Large',
        'xl' => 'Extra Large',
    ])
    ->inline()

Build docs developers (and LLMs) love