@props([
'question', // App\Support\Witness\WitnessQuestion
'sectionKey',
'value' => null, // current buffer value
'meta' => null, // App\Models\Witness\WitnessStatementAnswer|null
'showOrigin' => true,
'validationRequested' => false,
'touched' => [],
])
@php
$model = "answers.$sectionKey.{$question->key}";
$fieldId = "wq-$sectionKey-{$question->key}";
$key = "$sectionKey.{$question->key}";
$isSuggested = $meta && $meta->review_status === 'suggested';
$isRequiredMissing = $question->required && ! $question->isAnswered($value) && ! $isSuggested;
// Validation stays neutral until requested or the field has been interacted with.
$showError = $isRequiredMissing && ($validationRequested || in_array($key, $touched, true));
$describedBy = collect([$question->help ? "$fieldId-help" : null, $showError ? "$fieldId-error" : null])->filter()->implode(' ');
$isProvenance = $meta && $meta->origin === 'evidence' && in_array($meta->review_status, ['accepted', 'edited'], true);
@endphp
@if($question->help)
{{ $question->help }}
@endif
@switch($question->type)
@case('long_text')
@break
@case('date')
@break
@case('select')
@break
@case('boolean')
@case('declaration')
@break
@case('multiselect')
{{-- Selectable chips with large touch targets. --}}
@foreach($question->options as $opt)
@endforeach
@break
@case('repeater')
@php $rows = is_array($value) ? $value : []; @endphp
@forelse($rows as $index => $row)
@foreach($question->fields as $sub)
@endforeach
@empty
No entries yet.
@endforelse
@break
@default
@endswitch
{{-- Provenance: an accepted evidence answer keeps a compact trace. --}}
@if($isProvenance && ($meta->provenance['excerpt'] ?? null))
Accepted from {{ $meta->provenance['document'] ?? 'evidence' }}@if($meta->provenance['page'] ?? null), page {{ $meta->provenance['page'] }}@endif
@endif
@if($showError)
This answer is required before the statement can be generated.
@elseif($isRequiredMissing)
Required for generation
@endif