Files
portal-api/app/View/Components/AdminBadge.php
T

74 lines
2.0 KiB
PHP

<?php
namespace App\View\Components;
use Closure;
use Illuminate\Contracts\View\View;
use Illuminate\View\Component;
class AdminBadge extends Component
{
/**
* Create a new component instance.
*/
public $variant;
public $icon;
public $class;
/**
* Create a new component instance.
*
* @param string $variant
* @param string $icon
*/
public function __construct($variant = 'info', $icon = 'circle')
{
$this->variant = $variant;
$styles = [
'success' => 'bg-success-subtle text-success border border-success-subtle',
'danger' => 'bg-danger-subtle text-danger border border-danger-subtle',
'warning' => 'bg-warning-subtle text-warning border border-warning-subtle',
'info' => 'bg-info-subtle text-info border border-info-subtle',
'secondary' => 'bg-secondary-subtle text-secondary border border-secondary-subtle',
];
// Status aliases
$aliases = [
1 => 'success',
0 => 'danger',
2 => 'warning',
3 => 'info',
'active' => 'success',
'inactive' => 'danger',
'pending' => 'warning'
];
// Resolve alias if exists
$resolvedVariant = $aliases[$variant] ?? $variant;
// Auto-icon logic if default 'circle' is used and we have a specific mapping
if ($icon === 'circle') {
$iconMap = [
'success' => 'check-circle',
'danger' => 'x-circle',
'warning' => 'alert-circle',
'info' => 'info',
];
$this->icon = $iconMap[$resolvedVariant] ?? 'circle';
} else {
$this->icon = $icon;
}
$this->class = $styles[$resolvedVariant] ?? $styles['info'];
}
/**
* Get the view / contents that represent the component.
*/
public function render(): View|Closure|string
{
return view('components.admin-badge');
}
}