@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