@props([ 'title', 'description' => null, 'type' => 'radio', // radio | checkbox 'name', 'options' => [], 'selected' => [], 'columns' => 1, ]) @php // Normalize selected values if ($type === 'checkbox') { $selected = is_array($selected) ? $selected : []; } else { $selected = is_array($selected) ? ($selected[0] ?? null) : $selected; } $columnClass = match((int) $columns) { 2 => 'col-md-6', 3 => 'col-md-4', 4 => 'col-md-3', default => 'col-12', }; @endphp

{{ $title }}

@if($description)

{{ $description }}

@endif
@foreach($options as $option) @php $checked = $type === 'checkbox' ? in_array($option['value'], $selected) : $selected == $option['value']; @endphp
except(['class'])->merge(['class' => 'form-check-input mt-1']) }} type="{{ $type }}" id="{{ $name }}_{{ $loop->index }}" name="{{ $type === 'checkbox' ? $name.'[]' : $name }}" value="{{ $option['value'] }}" @checked($checked) >
@endforeach
@if($errors->has($name))
{{ $errors->first($name) }}
@endif