@props([ 'id' => 'pdf-download-btn', 'label' => 'Download PDF', 'type' => 'client', // 'client' for JavaScript generation or 'server' for backend generation 'route' => null, // For server-side PDF generation 'icon' => true, 'variant' => 'indigo', // indigo, gray, blue, green 'size' => 'md', // sm, md, lg ]) @php $variants = [ 'indigo' => 'bg-indigo-700 hover:bg-indigo-800 focus:ring-indigo-500', 'gray' => 'bg-gray-700 hover:bg-gray-800 focus:ring-gray-500', 'blue' => 'bg-blue-700 hover:bg-blue-800 focus:ring-blue-500', 'green' => 'bg-green-700 hover:bg-green-800 focus:ring-green-500', ]; $sizes = [ 'sm' => 'px-3 py-1.5 text-xs', 'md' => 'px-4 py-2 text-xs', 'lg' => 'px-5 py-2.5 text-sm', ]; $variantClass = $variants[$variant] ?? $variants['indigo']; $sizeClass = $sizes[$size] ?? $sizes['md']; // Base classes for consistent styling $baseClasses = "{$sizeClass} {$variantClass} inline-flex items-center px-4 py-2 bg-blue-950 border border-transparent rounded-md font-semibold text-xs text-white uppercase tracking-widest hover:bg-green-800 focus:bg-green-800 active:bg-green-800 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 transition ease-in-out duration-150"; @endphp @if($type === 'server' && $route) merge(['class' => $baseClasses]) }}> @if($icon) @endif {{ $label }} @else @endif