{{ Str::limit($product->title, 50) }}
Updated {{ $product->updated_at->diffForHumans() }}
← Back
@if(session('success'))
✓ {{ session('success') }}
@endif @if(session('error'))
{{ session('error') }}
@endif @if($errors->any())
⚠ Please fix the following errors:
    @foreach ($errors->all() as $error)
  • {{ $error }}
  • @endforeach
@endif {{-- Status Banner (full-width, above form) --}} @if($product->status === 'pending')
⏳
In Review — Awaiting Admin Approval
Editing is disabled while under review. Go back to products
@elseif($product->status === 'rejected')
❌ Rejected — Please revise and resubmit
@if($product->rejection_reason)
Admin feedback: {{ $product->rejection_reason }}
@endif
@elseif($product->status === 'published')
✅
Published & Live
Published on {{ $product->published_at?->format('M j, Y') ?? 'N/A' }}
@endif
status === 'pending' ? 'style=pointer-events:none;opacity:.7;' : '' }}> @csrf @method('PUT')
{{-- ════ MAIN ════ --}}
{{-- ─── GENERAL ─── --}}
📝 Product Details
@error('title')
{{ $message }}
@enderror
/products/
@error('description')
{{ $message }}
@enderror
🏷️ Classification
Tags
🔗 Links
{{-- ─── PRICING ─── --}}
💰 Pricing
@error('price')
{{ $message }}
@enderror
{{-- ─── FILES ─── --}}
📦 Download Type
💾
Local Upload
☁️
S3 Storage (Compatible)
🌐
External URL
{{-- S3 Source Selection --}}
🌐 S3 Source Selection
📤 Replace Product File
@if($product->files->count())
Current Files
@foreach ($product->files as $file)
📄 {{ $file->display_name ?? basename($file->path ?? 'File') }} v{{ $file->version ?? '1.0' }} · {{ number_format($file->download_count ?? 0) }} downloads
⬇
@endforeach
@endif
📦
Leave empty to keep existing file — max 200MB
📦
{{-- Direct S3 Upload Pulse Loader --}}
Encrypting & Transferring directly to bucket...
{{-- Success/Error Alerts --}}
✓ Upload Complete! Syncing with database...
✕ Upload Failed
{{-- S3 Path Input --}}
🔗 Existing S3 Path
Make sure the file exists in your configured S3 bucket.
🔗 External Download URL
📋 File Details
{{-- ─── MEDIA ─── --}}
🖼️ Thumbnail
@if($product->thumbnail) Current thumbnail
Current thumbnail — upload a new one to replace it
@endif
🖼️
PNG, JPG, WebP — max 2MB · 1200×630px recommended
Preview
🎬 Gallery & Video
@if($product->images->count()) @endif
🗃️
Add more images
PNG, JPG, WebP · Multiple allowed
{{-- ─── SEO ─── --}}
🔍 SEO
❓ FAQ Builder
✨ Highlights
{{-- ─── SETTINGS ─── --}}
⚙️ Visibility
{{-- ════ SIDEBAR ════ --}}
{{-- Submit for Review (only draft / rejected) --}} @if(in_array($product->status, ['draft', 'rejected']))
🚀 Submit for Review

Once submitted, admin will review and publish your product.

@csrf
@endif {{-- Save --}}
@if($product->status === 'pending') Editing disabled while under review @else Save before submitting for review @endif
{{-- Stats mini-card --}}
Performance
{{ number_format($product->views_count ?? 0) }}
Views
{{ number_format($product->sales_count ?? 0) }}
Sales
{{-- Danger zone - MUST BE OUTSIDE main form to avoid nested form bug --}} @if(!in_array($product->status, ['published', 'pending']))
Danger Zone
@csrf @method('DELETE')
@endif
{{-- Page data injected as a JSON island to avoid Blade-in-JS linter noise --}} @foreach ($product->files as $file) @endforeach