@props([
'variant' => 'primary', // primary, secondary, success, danger, warning, info, outline
'size' => 'md', // sm, md, lg
'icon' => null,
'type' => 'button',
'href' => null,
])
@php
$base = 'inline-flex items-center justify-center gap-2 font-semibold rounded-xl transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed';
$sizes = [
'sm' => 'px-3 py-1.5 text-xs',
'md' => 'px-4 py-2.5 text-sm',
'lg' => 'px-5 py-3 text-base',
];
$variants = [
'primary' => 'bg-primary-600 hover:bg-primary-700 text-white shadow-soft hover:shadow-glow focus:ring-primary-500',
'secondary' => 'bg-slate-100 hover:bg-slate-200 dark:bg-slate-800 dark:hover:bg-slate-700 text-slate-700 dark:text-slate-200 focus:ring-slate-400',
'success' => 'bg-emerald-600 hover:bg-emerald-700 text-white shadow-soft hover:shadow-lg focus:ring-emerald-500',
'danger' => 'bg-rose-600 hover:bg-rose-700 text-white shadow-soft hover:shadow-lg focus:ring-rose-500',
'warning' => 'bg-amber-500 hover:bg-amber-600 text-white shadow-soft focus:ring-amber-400',
'info' => 'bg-sky-600 hover:bg-sky-700 text-white shadow-soft focus:ring-sky-500',
'outline' => 'border border-slate-200 dark:border-slate-700 text-slate-700 dark:text-slate-200 hover:bg-slate-50 dark:hover:bg-slate-800 focus:ring-slate-400',
'ghost' => 'text-slate-600 dark:text-slate-300 hover:bg-slate-100 dark:hover:bg-slate-800 focus:ring-slate-400',
];
$cls = "$base {$sizes[$size]} {$variants[$variant]}";
@endphp
@if($href)
merge(['class' => $cls]) }}>
@if($icon)@endif
{{ $slot }}
@else
@endif