@props([
'type' => 'primary',
'size' => 'medium',
'disabled' => false,
'withLoading' => false,
'isLink' => false,
'submit' => false,
'href' => null,
'swap' => false,
'swapTarget' => '#main',
'swapSwap' => 'outerHTML transition:true',
])
@php
$baseClasses = 'btn';
$typeClasses = [
'accent' => 'btn-accent',
'primary' => 'btn-primary',
'error' => 'btn-error',
'warning' => 'btn-warning',
'success' => 'btn-success',
'outline-accent' => 'btn-outline-accent',
'outline-primary' => 'btn-outline-primary',
'outline-error' => 'btn-outline-error',
'outline-warning' => 'btn-outline-warning',
'outline-success' => 'btn-outline-success',
];
$sizeClasses = [
'tiny' => 'btn-tiny',
'small' => 'btn-small',
'medium' => 'btn-medium',
'large' => 'btn-large',
];
$classes =
$baseClasses .
' ' .
($typeClasses[(string) $type] ?? $typeClasses['primary']) .
' ' .
($sizeClasses[(string) $size] ?? $sizeClasses['medium']);
@endphp
@if ($isLink || (isset($href) && !empty($href)))
merge(['class' => $classes, 'role' => $isLink ? 'button' : null, 'aria-disabled' => $disabled ? 'true' : 'false']) }}
@if ($href) href="{{ $href }}" @endif
@if ($withLoading) data-loading-aria-busy @endif
@if ($disabled) tabindex="-1" aria-disabled="true" @endif>
{{ $slot }}
@else
@endif