@props([ 'entityType' => 'items', 'entityConfig' => [], 'items' => collect(), 'filters' => [], 'statistics' => [], 'viewModes' => ['grid', 'list'], 'currentViewMode' => 'grid', 'searchPlaceholder' => 'Search...', 'title' => 'Items', 'description' => 'Browse and discover items', 'emptyStateMessage' => 'No items found', 'emptyStateDescription' => 'Try adjusting your search or filters.', 'livewireComponent' => null ]) @php $config = collect($entityConfig); $cardFields = $config->get('cardFields', []); $filterConfig = $config->get('filters', []); $statisticsConfig = $config->get('statistics', []); $badgeConfig = $config->get('badges', []); $sortOptions = $config->get('sortOptions', []); $colorScheme = $config->get('colorScheme', [ 'primary' => 'blue', 'secondary' => 'green', 'accent' => 'purple' ]); @endphp
{{-- Mobile Layout (320px - 767px) --}}
{{-- Mobile Header with Search --}}
{{-- Search Input --}}
{{-- Quick Filter Buttons --}} @if(isset($filterConfig['quickFilters']))
@foreach($filterConfig['quickFilters'] as $filter) @endforeach
@endif
{{-- Statistics Banner --}} @if(!empty($statistics))

{{ $statistics['title'] ?? 'Overview' }}

@foreach(array_slice($statistics['items'] ?? [], 0, 2) as $stat)
{{ $stat['value'] }}
{{ $stat['label'] }}
@endforeach
@endif {{-- Item Cards --}}
@forelse($items as $item)
{{-- Item Header --}}

{{ data_get($item, $cardFields['title'] ?? 'name') }}

@if(isset($cardFields['subtitle']) && data_get($item, $cardFields['subtitle']))

{{ data_get($item, $cardFields['subtitle']) }}

@endif
@if(isset($cardFields['score']) && data_get($item, $cardFields['score']))
{{ data_get($item, $cardFields['score']) }}
{{ $cardFields['scoreLabel'] ?? 'Score' }}
@endif
{{-- Badges --}} @if(isset($badgeConfig['fields']))
@foreach($badgeConfig['fields'] as $badgeField) @if(data_get($item, $badgeField['field'])) {{ $badgeField['prefix'] ?? '' }}{{ data_get($item, $badgeField['field']) }}{{ $badgeField['suffix'] ?? '' }} @endif @endforeach
@endif {{-- Key Metrics --}} @if(isset($cardFields['metrics']))
@foreach(array_slice($cardFields['metrics'], 0, 3) as $metric) @if(data_get($item, $metric['field']))
{{ $metric['format'] ? sprintf($metric['format'], data_get($item, $metric['field'])) : data_get($item, $metric['field']) }}
{{ $metric['label'] }}
@endif @endforeach
@endif
@empty

{{ $emptyStateMessage }}

{{ $emptyStateDescription }}

@endforelse
{{-- Mobile Pagination --}} @if(method_exists($items, 'hasPages') && $items->hasPages())
{{ $items->links('pagination.mobile') }}
@endif
{{-- Tablet Layout (768px - 1023px) --}} {{-- Desktop Layout (1024px+) --}}