@push('styles') @endpush

Productos

Gestiona los productos de tu inventario.

{{-- Badge de roles del usuario (opcional) --}}
{{-- CONTENIDO PRINCIPAL --}}
Listado de productos
{{-- Filtros --}}
@php $hasFilters = request()->filled('name') || request()->filled('category_id'); @endphp {{-- Buscar por nombre / SKU / categoría --}}
{{-- Categoría --}}
{{-- Botones --}}
@if($hasFilters) Limpiar @endif + Nuevo producto
@forelse($products as $p) @php $toUrl = function($path) { $raw = trim($path ?? ''); if ($raw === '') return null; if (preg_match('~^https?://~i',$raw)) return $raw; if (str_starts_with($raw,'public/storage/')) return asset(substr($raw,7)); if (str_starts_with($raw,'storage/')) return asset($raw); if (\Storage::disk('public')->exists($raw)) return \Storage::url($raw); if (file_exists(public_path($raw))) return asset($raw); return null; }; $media = collect($p->media ?? []); $primary = $media->firstWhere('is_primary', true) ?? $media->first(); $others = $media->filter(fn($m)=> $primary ? $m->id !== $primary->id : true); $ordered = collect($primary ? [$primary] : [])->merge($others); $imgUrls = $ordered->map(fn($m)=> $toUrl($m->path))->filter()->values(); $placeholder = asset('img/placeholder_zapato_detalle.svg'); $mainUrl = $imgUrls->first() ?: $placeholder; /** Hay galería “real” si: * - hay >1 imagen, o * - hay 1 imagen pero NO es el placeholder */ $hasRealGallery = $imgUrls->count() > 1 || ($imgUrls->count() === 1 && !\Illuminate\Support\Str::contains($imgUrls->first(), 'placeholder_zapato_detalle.svg')); @endphp {{-- Nombre + SKU (badge pequeño debajo) --}} {{-- Costo --}} {{-- Precio base --}} @empty @endforelse
Imagen Nombre Costo Precio Base
@if($hasRealGallery) {{ $p->name }} @else {{ $p->name }} @endif
{{ $p->name }}
@if($p->sku) @endif
{{-- móvil: sin miles ni decimales --}} ${{ (int) ($p->cost ?? 0) }} {{-- desde sm: tu formato normal --}} ${{ (int) ($p->base_price ?? 0) }} Editar
@csrf @method('DELETE')
Sin resultados
{{-- Con $products (paginador) --}} {{-- --}} {{-- Mostrar más páginas alrededor de la actual --}} {{-- --}} {{-- --}} {{-- Ocultar el resumen "Mostrando X–Y de Z" --}} {{-- --}} {{-- paginador con selector por pagina en el centro ejemplo 1 --}} {{-- --}} {{-- paginador con selector por pagina en el centro --}}
{{-- Modal de Galería (Tailwind + Alpine) --}} @push('scripts') @endpush