@props([ 'type' => 'button', 'tag' => 'button', 'disabled' => false, 'color' => null, 'icon' => null, 'iconOnly' => false, 'square' => false, 'pill' => false, 'iconPosition' => 'left', 'outlined' => false, 'size' => null, 'loading' => false, 'loadingOverlay' => false, 'tooltip' => null, 'tooltipPlacement' => 'top', 'ghost' => false, ]) @php $class = Arr::toCssClasses([ 'btn', 'disabled' => $disabled, 'btn-square' => $square, 'btn-pill' => $pill, 'btn-icon' => $iconOnly, 'btn-loading' => $loading && $loadingOverlay, ...$outlined ? [$color ? "btn-outline-$color" : null] : [$color ? "btn-$color" : null], match ($size) { 'sm' => 'btn-sm', 'lg' => 'btn-lg', default => null, }, "btn-ghost-$color" => $ghost && $color, ]); $spinnerClasses = Arr::toCssClasses(['spinner-border', 'spinner-border-sm', 'me-2' => $iconPosition === 'left', 'ms-2' => $iconPosition === 'right']); @endphp <{{ $tag }} {{ $attributes->merge([ 'type' => $type, 'disabled' => $disabled, ])->class($class) }} @if ($tooltip) data-bs-toggle="tooltip" data-bs-placement="{{ $tooltipPlacement }}" title="{{ $tooltip }}" @endif > @if ($icon && $iconPosition === 'left') @if ($loading) @else @endif @endif @if ($slot->isNotEmpty()) @if ($iconOnly) {{ $slot }} @else {{ $slot }} @endif @endif @if ($icon && $iconPosition === 'right') @if ($loading) @else @endif @endif