@props(['variant' => 'primary', 'iconOnly' => false, 'srText' => '', 'href' => false, 'size' => 'base', 'disabled' => false, 'pill' => false, 'squared' => false])
@php
$baseClasses = 'inline-flex items-center transition-colors font-medium select-none disabled:opacity-50 disabled:cursor-not-allowed focus:outline-none focus:ring focus:ring-offset-2 focus:ring-offset-white dark:focus:ring-offset-dark-eval-2';
switch ($variant) {
case 'primary':
$variantClasses = 'bg-purple-500 text-white hover:bg-purple-600 focus:ring-purple-500';
break;
case 'secondary':
$variantClasses = 'bg-white text-gray-500 hover:bg-gray-100 focus:ring-purple-500 dark:text-gray-400 dark:bg-dark-eval-1 dark:hover:bg-dark-eval-2 dark:hover:text-gray-200';
break;
case 'success':
$variantClasses = 'bg-green-500 text-white hover:bg-green-600 focus:ring-green-500';
break;
case 'danger':
$variantClasses = 'bg-red-500 text-white hover:bg-red-600 focus:ring-red-500';
break;
case 'warning':
$variantClasses = 'bg-yellow-500 text-white hover:bg-yellow-600 focus:ring-yellow-500';
break;
case 'info':
$variantClasses = 'bg-cyan-500 text-white hover:bg-cyan-600 focus:ring-cyan-500';
break;
case 'black':
$variantClasses = 'bg-black text-gray-300 hover:text-white hover:bg-gray-800 focus:ring-black dark:hover:bg-dark-eval-3';
break;
default:
$variantClasses = 'bg-purple-500 text-white hover:bg-purple-600 focus:ring-purple-500';
}
switch ($size) {
case 'sm':
$sizeClasses = $iconOnly ? 'p-1.5' : 'px-2.5 py-1.5 text-sm';
break;
case 'base':
$sizeClasses = $iconOnly ? 'p-2' : 'px-4 py-2 text-base';
break;
case 'lg':
default:
$sizeClasses = $iconOnly ? 'p-3' : 'px-5 py-2 text-xl';
break;
}
$classes = $baseClasses . ' ' . $sizeClasses . ' ' . $variantClasses;
if(!$squared && !$pill){
$classes .= ' rounded-md';
} else if ($pill) {
$classes .= ' rounded-full';
}
@endphp
@if ($href)
merge(['class' => $classes]) }}>
{{ $slot }}
@if($iconOnly)
{{ $srText ?? '' }}
@endif
@else
@endif