@props([ 'ticket' => null, 'compact' => false, 'showActions' => true, 'showFinancial' => false, 'href' => null, ]) @php $ticket = $ticket ?? \App\Support\RepairTicketPresenter::requestPreview(); $mode = $ticket['mode'] ?? 'request'; $isRequest = $mode === 'request'; $isLead = $mode === 'lead' || ! empty($ticket['is_lead']); $isAdmin = $mode === 'admin'; $steps = \App\Domain\Repair\RepairOrderStatusPresenter::customerSteps(); $currentStep = (int) ($ticket['current_step'] ?? 0); $statusClass = match ($ticket['status'] ?? 'new') { 'submitted' => 'repair-card-badge--received', 'new' => 'repair-card-badge--new', 'received' => 'repair-card-badge--received', 'diagnosed' => 'repair-card-badge--diagnosed', 'waiting_parts' => 'repair-card-badge--waiting', 'in_repair' => 'repair-card-badge--repairing', 'completed' => 'repair-card-badge--completed', 'delivered' => 'repair-card-badge--delivered', default => 'repair-card-badge--received', }; $priorityClass = match ($ticket['priority'] ?? 'medium') { 'low' => 'repair-card-priority--low', 'high' => 'repair-card-priority--high', 'critical' => 'repair-card-priority--critical', default => 'repair-card-priority--medium', }; $aiBarClass = fn (int $score) => match (true) { $score >= 90 => 'repair-card-ai-bar--red', $score >= 80 => 'repair-card-ai-bar--amber', default => 'repair-card-ai-bar--blue', }; $slaRemaining = isset($ticket['sla_remaining_seconds']) && $ticket['sla_remaining_seconds'] !== null ? sprintf( '%02d:%02d:%02d', intdiv($ticket['sla_remaining_seconds'], 3600), intdiv($ticket['sla_remaining_seconds'] % 3600, 60), $ticket['sla_remaining_seconds'] % 60 ) : null; @endphp
class([ 'repair-ticket-card group relative', 'repair-ticket-card--compact' => $compact, 'repair-ticket-card--request' => $isRequest, 'repair-ticket-card--chat' => $isRequest, 'repair-ticket-card--lead' => $isLead, 'repair-ticket-card--linked' => filled($href), ]) }}> @if ($href) {{ __('site.account_request_open') }} @endif @unless ($isRequest) {{-- Header --}}
$isLead])>
{{ $ticket['device_name'] }} @if (! empty($ticket['lead_type_label'])) {{ $ticket['lead_type_label'] }} @endif @if (! empty($ticket['repair_id'])) {{ $isLead ? __('site.account_request_id') : __('site.repair_card_id') }} {{ $ticket['repair_id'] }} @else ($ticket['status'] ?? '') === 'in_repair'])> {{ $ticket['status_label'] }} @endif @if ($isLead && ! empty($ticket['status_label'])) {{ $ticket['status_label'] }} @endif
@endunless
$isRequest])> @if ($isLead)

{{ __('assistant.summary_title') }}

@foreach (($ticket['summary_fields'] ?? []) as $field)
{{ $field['label'] }}
($field['key'] ?? '') === 'body'])>{{ $field['value'] }}
@endforeach
@if ($href)

{{ __('site.account_request_continue') }}

@endif
@endif {{-- Device grid --}} @unless ($isRequest || $isLead)

{{ __('site.repair_card_device_info') }}

{{ __('site.repair_card_device') }}
{{ $ticket['device_name'] }}
{{ __('site.repair_card_category') }}
{{ $ticket['category'] }}
{{ __('site.repair_card_serial') }}
{{ $ticket['serial'] }}
{{ __('site.repair_card_warranty') }}
$ticket['warranty_active'], ])>{{ $ticket['warranty'] }}
@endunless {{-- Timeline (hidden in request/chat mode — shown inside assistant instead) --}} @unless ($isRequest || $isLead)

{{ __('site.repair_card_timeline') }}

@php $useGridTimeline = $compact; $stepRows = array_chunk($steps, 4); $progressPct = $ticket['progress_percent'] ?? ($ticket['sla_percent'] ?? ($currentStep > 0 ? min(100, ($currentStep / max(1, count($steps) - 1)) * 100) : 0)); @endphp
$useGridTimeline])> @unless ($useGridTimeline) @endunless @if ($useGridTimeline) @foreach ($stepRows as $rowIndex => $rowSteps)
    $rowIndex === 1])> @foreach ($rowSteps as $localIndex => $rowStep) @php $index = ($rowIndex * 4) + $localIndex; $state = $index < $currentStep ? 'done' : ($index===$currentStep ? 'active' : 'pending' ); @endphp
  1. @if ($state === 'done') @else {{ $index + 1 }} @endif {{ __('site.repair_step_'.$rowStep) }}
  2. @endforeach
@endforeach @else
    @foreach ($steps as $index => $step) @php $state = $index < $currentStep ? 'done' : ($index===$currentStep ? 'active' : 'pending' ); @endphp
  1. @if ($state === 'done') @else {{ $index + 1 }} @endif {{ __('site.repair_step_'.$step) }}
  2. @endforeach
@endif
@endunless @if (! empty($ticket['status_logs']))

{{ __('site.repair_order_timeline') }}

    @foreach ($ticket['status_logs'] as $log)
  1. {{ $log['at']?->format('Y-m-d H:i') }} @if ($log['from']) {{ $log['from'] }} → @endif {{ $log['to'] }}
    @if (! empty($log['note']))

    {{ $log['note'] }}

    @endif
  2. @endforeach
@endif {{-- Chat / form slot --}} @if ($isRequest)
{{ $slot }}
@elseif (! $isLead && ! empty($ticket['issue']))

{{ __('site.repair_card_issue') }}

{{ $ticket['issue'] }}

@endif @unless ($isRequest || $isLead) {{-- AI Diagnostics --}} @if (! empty($ticket['ai_diagnostics']))

{{ __('site.repair_card_ai') }}

    @foreach ($ticket['ai_diagnostics'] as $diag)
  • {{ $diag['label'] }} {{ $diag['score'] }}%
  • @endforeach
@endif {{-- Technician + Priority + Cost --}}
@if (! empty($ticket['technician']))

{{ $ticket['technician']['name'] }}

{{ $ticket['technician']['role'] }}

{{ $ticket['technician']['badge'] }} {{ __('site.repair_card_level') }} {{ $ticket['technician']['level'] }}
@endif
{{ __('site.repair_card_priority') }} {{ __('site.repair_priority_'.$ticket['priority']) }}
@if ($showFinancial)
@if (! empty($ticket['final_cost']))
{{ __('site.repair_card_final') }} {{ $ticket['final_cost'] }}
@endif @if (! empty($ticket['estimated_cost']) && empty($ticket['final_cost']))
{{ __('site.repair_card_estimated') }} {{ $ticket['estimated_cost'] }}
@endif @if (! empty($ticket['paid_cost']) && ($ticket['paid_cost'] ?? '—') !== '—')
{{ __('site.card_paid') }} {{ $ticket['paid_cost'] }}
@endif @if (! empty($ticket['remaining_cost']))
{{ __('site.card_remaining') }} {{ $ticket['remaining_cost'] }}
@endif
@elseif ($isAdmin && (! empty($ticket['estimated_cost']) || ! empty($ticket['final_cost'])))
@if (! empty($ticket['estimated_cost']))
{{ __('site.repair_card_estimated') }} {{ $ticket['estimated_cost'] }}
@endif @if (! empty($ticket['final_cost']))
{{ __('site.repair_card_final') }} {{ $ticket['final_cost'] }}
@endif @if (! empty($ticket['profit']))
{{ __('site.repair_card_profit') }} {{ $ticket['profit'] }}
@endif
@endif
{{-- Customer --}}

{{ __('site.repair_card_customer') }}

{{ $ticket['customer_name'] }}

@if (! empty($ticket['customer_phone']))

{{ $ticket['customer_phone'] }}

@endif
@if (! empty($ticket['customer_tier'])) {{ $ticket['customer_tier'] }} @endif
{{-- Parts --}} @if (! empty($ticket['parts']))

{{ __('site.repair_card_parts') }}

    @foreach ($ticket['parts'] as $part)
  • {{ $part['name'] }} $part['status_key'] === 'installed', 'repair-card-inline-badge--warning' => $part['status_key'] === 'ordered', ])>{{ $part['status'] }}
  • @endforeach
@endif {{-- SLA --}} @if ($slaRemaining !== null)

{{ __('site.repair_card_sla') }}

{{ __('site.repair_card_sla_remaining') }}

$ticket['sla_urgent']]) dir="ltr">{{ $slaRemaining }}

@endif @endunless {{-- Actions --}} @if ($showActions && ! $isRequest) @endif