@props(['variant' => 'secondary', 'icon' => false, 'href' => null])
@php
// One button style for the whole app — compact, consistent (R10).
$variants = [
'primary' => 'bg-accent text-void hover:bg-accent-bright',
'accent' => 'border border-accent/25 bg-accent/10 text-accent-text hover:bg-accent/15',
'secondary' => 'border border-line bg-inset text-ink-2 hover:bg-raised hover:text-ink',
'danger' => 'bg-offline text-void hover:bg-offline/90',
'ghost' => 'text-ink-2 hover:bg-raised hover:text-ink',
'ghost-danger' => 'text-ink-3 hover:bg-offline/10 hover:text-offline',
];
$shape = $icon ? 'h-8 w-8 justify-center' : 'h-8 px-3';
$classes = 'inline-flex items-center gap-1.5 rounded-md text-xs font-medium transition-colors '
.'disabled:opacity-50 disabled:pointer-events-none '
.$shape.' '.($variants[$variant] ?? $variants['secondary']);
@endphp
@if ($href)
merge(['class' => $classes]) }}>{{ $slot }}
@else
@endif