@php
    $variant = $variant ?? 'primary';
    $type = $type ?? 'submit';
    $tag = ! empty($href) ? 'a' : 'button';
    $ariaLabel = $ariaLabel ?? $label ?? '';
    $desktopLabel = $desktopLabel ?? $label ?? '';
    $showDesktopIcon = $showDesktopIcon ?? ($variant === 'primary');

    $mobileClass = match ($variant) {
        'primary' => 'btn-fab h-10 w-10 lg:hidden',
        'outline' => 'inline-flex h-10 w-10 items-center justify-center rounded-full border border-slate-200 bg-white text-slate-700 shadow-sm transition hover:border-slate-300 hover:bg-slate-50 lg:hidden',
        'dark' => 'inline-flex h-10 w-10 items-center justify-center rounded-full bg-gray-900 text-white shadow-sm transition hover:bg-gray-800 lg:hidden',
        'indigo' => 'inline-flex h-10 w-10 items-center justify-center rounded-full bg-indigo-600 text-white shadow-sm transition hover:bg-indigo-700 lg:hidden',
        default => 'btn-fab h-10 w-10 lg:hidden',
    };

    $desktopClass = match ($variant) {
        'primary' => 'btn-primary hidden items-center lg:inline-flex',
        'outline' => 'hidden items-center rounded-lg border border-gray-200 bg-white px-4 py-2 text-sm font-medium text-gray-700 shadow-sm transition hover:bg-gray-50 lg:inline-flex',
        'dark' => 'hidden items-center gap-1.5 rounded-lg bg-gray-900 px-3.5 py-2 text-sm font-medium text-white transition hover:bg-gray-800 lg:inline-flex',
        'indigo' => 'hidden items-center justify-center rounded-xl bg-indigo-600 px-4 py-2.5 text-sm font-semibold text-white transition hover:bg-indigo-700 lg:inline-flex',
        default => 'btn-primary hidden items-center lg:inline-flex',
    };

    $extraClass = $class ?? '';
@endphp

<{{ $tag }}
    @if ($tag === 'a') href="{{ $href }}" @endif
    @if ($tag === 'button') type="{{ $type }}" @endif
    aria-label="{{ $ariaLabel }}"
    title="{{ $ariaLabel }}"
    @if (! empty($attributes)) {!! $attributes !!} @endif
    class="{{ trim($mobileClass.' '.$extraClass) }}"
>
    <svg class="h-5 w-5" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24" aria-hidden="true">
        <path stroke-linecap="round" stroke-linejoin="round" d="M12 4.5v15m7.5-7.5h-15"/>
    </svg>
</{{ $tag }}>

<{{ $tag }}
    @if ($tag === 'a') href="{{ $href }}" @endif
    @if ($tag === 'button') type="{{ $type }}" @endif
    @if (! empty($attributes)) {!! $attributes !!} @endif
    class="{{ trim($desktopClass.' '.$extraClass) }}"
>
    @if ($showDesktopIcon)
        <svg class="h-4 w-4 shrink-0" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24" aria-hidden="true">
            <path stroke-linecap="round" stroke-linejoin="round" d="M12 4.5v15m7.5-7.5h-15"/>
        </svg>
    @endif
    {{ $desktopLabel }}
</{{ $tag }}>
