@extends('admin.layouts.admin')
@section('title', 'Receta · Pasos e ingredientes')
@section('content')
{{ $recipe->name }}
El proceso vive en la guía ({{ $recipe->guide?->name }}). La receta solo decide
qué pasos opcionales entran y qué ingredientes lleva cada paso.
@include('admin.recetas.wizard._stepper', ['active' => 'steps'])
@php
$general = $recipe->ingredients->whereNull('guide_step_id');
$byStep = $recipe->ingredients->whereNotNull('guide_step_id')->groupBy('guide_step_id');
$optionals = $process->where('is_optional', true);
@endphp
{{-- ── Pasos opcionales: interruptor (presencia = encendido) ── --}}
@if($optionals->isNotEmpty())
Pasos opcionales
Marca los que esta receta incluye. Los obligatorios van siempre.
@endif
{{-- Los ingredientes se ELIGEN del catálogo. Si falta uno (chucrut/kimchi), se crea
aquí mismo sin salir de la pantalla. --}}
+ Crear ingrediente en el catálogo
{{-- ── Ingredientes generales (sin paso) ── --}}
Ingredientes generales (sin paso)
@foreach($general as $ing)
@include('admin.recetas.wizard._ingredient', ['ing' => $ing])
@endforeach
@include('admin.recetas.wizard._ingredient_add', ['guideStepId' => ''])
{{-- ── El proceso de la guía, con sus ingredientes por paso ── --}}
@foreach($process as $step)
@php $skipped = $step->is_optional && ! in_array($step->id, $onOptionals); @endphp
{{ $step->step_number }}
{{ $step->title }}
@if($step->is_optional)
opcional · {{ $skipped ? 'apagado' : 'encendido' }}
@endif
@unless($skipped)
@foreach(($byStep[$step->id] ?? collect()) as $ing)
@include('admin.recetas.wizard._ingredient', ['ing' => $ing])
@endforeach
@include('admin.recetas.wizard._ingredient_add', ['guideStepId' => $step->id, 'ingredients' => $ingredients])
@endunless
@endforeach
{{-- Crear ingrediente del catálogo en línea. Se pide el padre (el árbol es de
profundidad libre) y la unidad; el perfil se hereda del padre. --}}
Crear ingrediente
Se añade al catálogo. El perfil se hereda del padre; lo rellenas después si hace falta.
@endsection
@push('scripts')
@endpush