@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
{{ $tag }}>