@props([
'variant' => 'primary',
'size' => 'md',
'type' => 'button',
'href' => null,
'icon' => null,
'iconRight' => null,
'loading' => false,
'block' => false,
'disabled' => false,
])
@php
$variantClass = match($variant) {
'primary' => 'btn-primary',
'secondary' => 'btn-secondary',
'success' => 'btn-success',
'danger' => 'btn-danger',
'warning' => 'btn-warning',
'info' => 'btn-info',
'light' => 'btn-light',
'dark' => 'btn-dark',
'ghost' => 'btn-ghost',
'link' => 'btn-link',
'outline' => 'btn-outline-primary',
default => 'btn-primary',
};
$sizeClass = match($size) {
'xs' => 'btn-xs',
'sm' => 'btn-sm',
'md' => '',
'lg' => 'btn-lg',
default => '',
};
$classes = trim("btn {$variantClass} {$sizeClass}" . ($block ? ' w-100' : '') . ($loading ? ' is-loading' : ''));
@endphp
@if ($href)
merge(['class' => $classes]) }} @if($disabled) aria-disabled="true" tabindex="-1" @endif>
@if($loading)@endif
@if($icon){!! icon($icon) !!}@endif
{{ $slot }}
@if($iconRight){!! icon($iconRight) !!}@endif
@else
@endif