2025-03-07 00:29:07 -06:00

55 lines
1.7 KiB
PHP

@props([
'uid' => uniqid(),
'id' => '',
'model' => '',
'name' => '',
'type' => 'checkbox', // checkbox o radio
'title' => '',
'description' => '',
'icon' => null, // Clases de iconos (ej: ti ti-rocket)
'image' => null, // URL de imagen
'checked' => false,
'disabled' => false,
'helperText' => '', // Texto de ayuda opcional
])
@php
$livewireModel = $attributes->get('wire:model', $model);
$name = $name ?: $livewireModel;
$inputId = $id ?: ($uid ? $name . '_' . $uid : $name);
$errorClass = $errors->has($model) ? 'is-invalid' : '';
$checkedAttribute = $checked ? 'checked' : '';
$visualContent = $icon
? "<i class='{$icon}'></i>"
: ($image ? "<img src='{$image}' alt='{$title}' class='img-fluid rounded'>" : '');
@endphp
<div class="mb-4 form-check custom-option custom-option-icon {{ $checked ? 'checked' : '' }}">
<label class="form-check-label custom-option-content" for="{{ $inputId }}">
<span class="custom-option-body">
{!! $visualContent !!}
<span class="custom-option-title">{{ $title }}</span>
@if($description)
<small>{{ $description }}</small>
@endif
</span>
<input
type="{{ $type }}"
class="form-check-input {{ $errorClass }}"
id="{{ $inputId }}"
name="{{ $name }}"
wire:model="{{ $model }}"
{{ $checked ? 'checked' : '' }}
{{ $disabled ? 'disabled' : '' }}
>
</label>
@if ($helperText)
<div class="form-text">{{ $helperText }}</div>
@endif
@error($model)
<span class="text-danger">{{ $message }}</span>
@enderror
</div>