libra/resources/views/components/spinner.blade.php

42 lines
1005 B
PHP

@props([
'size' => 'md',
'label' => null,
'inline' => false,
])
@php
$sizes = [
'sm' => 'h-4 w-4',
'md' => 'h-5 w-5',
'lg' => 'h-8 w-8',
];
$sizeClass = $sizes[$size] ?? $sizes['md'];
@endphp
<div {{ $attributes->merge(['class' => $inline ? 'inline-flex items-center gap-2' : 'flex items-center gap-2']) }}>
<svg
class="animate-spin {{ $sizeClass }} text-primary"
xmlns="http://www.w3.org/2000/svg"
fill="none"
viewBox="0 0 24 24"
aria-hidden="true"
>
<circle
class="opacity-25"
cx="12"
cy="12"
r="10"
stroke="currentColor"
stroke-width="4"
></circle>
<path
class="opacity-75"
fill="currentColor"
d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"
></path>
</svg>
@if($label !== false)
<span>{{ $label ?? __('common.loading') }}</span>
@endif
</div>