<div>
    {{-- Header fijo --}}
    <div class="fixed top-0 left-0 right-0 w-full bg-white flex items-center justify-between p-4 z-50 border-b border-gray-200">
        <div class="flex items-center">
            <img src="{{ Storage::url('images_static/tresipunt-square.svg') }}" alt="Logo" class="w-10 h-10 mr-3">
            <h1 class="text-2xl font-bold">Agregar archivos JS</h1>
        </div>
        <div class="flex items-center gap-3">
            <a href="{{ route('products.js.version.show', [$product, $jsVersion]) }}"
                class="text-gray-700 hover:text-gray-900 px-4 py-2">
                Cancelar
            </a>
            <button type="submit" form="js-create-form"
                    wire:loading.attr="disabled"
                    class="bg-3ip hover:bg-3ip-light text-white px-4 py-2 rounded-lg disabled:opacity-50 disabled:cursor-not-allowed">
                <span wire:loading.remove>Guardar archivos</span>
                <span wire:loading>Guardando...</span>
            </button>
        </div>
    </div>

    {{-- Contenido --}}
    <div class="w-full px-20 pt-24 pb-8">
        <div class="mx-auto max-w-4xl">
            <div class="w-full rounded-lg bg-white border border-gray-200 px-8 py-6">

                {{-- Información del producto y versión --}}
                <div class="mb-6 pb-6 border-b border-gray-200">
                    <div class="grid grid-cols-1 md:grid-cols-2 gap-4">
                        <div>
                            <label class="block text-xs text-gray-500 mb-1">Producto</label>
                            <p class="font-semibold text-gray-900">{{ $product->name }}</p>
                            <p class="text-xs text-gray-600 font-mono">{{ $product->slug }}</p>
                        </div>
                        <div>
                            <label class="block text-xs text-gray-500 mb-1">Versión</label>
                            <p class="font-mono font-semibold text-gray-900">{{ $jsVersion->version }}</p>
                            @if($jsVersion->description)
                                <p class="text-sm text-gray-600 mt-1">{{ $jsVersion->description }}</p>
                            @endif
                        </div>
                    </div>
                </div>

                {{-- **Los fallos, arriba y visibles.**

                     `save()` guarda un mensaje en la sesión cuando el archivo no se puede
                     escribir en disco, y esta vista no pintaba los flashes en ningún sitio:
                     el mensaje se perdía y el botón parecía no hacer nada. Los errores de
                     validación salen además junto a su campo, pero el editor es alto y el
                     campo que falla puede quedar fuera de la pantalla. --}}
                @if (session('error'))
                    <div class="mb-6 rounded-lg border border-red-300 bg-red-50 px-4 py-3 text-sm text-red-800">
                        {!! session('error') !!}
                    </div>
                @endif

                @if ($errors->any())
                    <div class="mb-6 rounded-lg border border-red-300 bg-red-50 px-4 py-3 text-sm text-red-800">
                        <p class="font-semibold">No se ha guardado nada. Falta esto:</p>
                        <ul class="mt-1 list-disc pl-5">
                            @foreach ($errors->all() as $mensaje)
                                <li>{{ $mensaje }}</li>
                            @endforeach
                        </ul>
                    </div>
                @endif

                <form wire:submit="save" id="js-create-form" class="space-y-6">
                    {{-- Archivos JS --}}
                    <div>
                        <div class="flex items-center justify-between mb-4">
                            <label class="block text-lg font-semibold text-gray-900">Archivos JS</label>
                            <button type="button"
                                    wire:click="addFile"
                                    class="flex items-center text-sm px-3 py-1.5 bg-green-600 text-white rounded-lg hover:bg-green-700">
                                <img src="{{ asset('vendor/blade-untitledui-icons/plus.svg') }}" alt="Añadir" class="w-4 h-4 mr-1 svg-fill-white">
                                Añadir otro archivo
                            </button>
                        </div>

                        @foreach($files as $index => $file)
                            <div class="mb-6 p-4 border border-gray-200 rounded-lg bg-gray-50" wire:key="file-{{ $index }}">
                                <div class="flex items-center justify-between mb-4">
                                    <h3 class="font-semibold text-gray-900">Archivo #{{ $index + 1 }}</h3>
                                    @if(count($files) > 1)
                                        <button type="button"
                                                wire:click="removeFile({{ $index }})"
                                                class="flex items-center text-sm px-3 py-1.5 bg-red-600 text-white rounded-lg hover:bg-red-700">
                                            <img src="{{ asset('vendor/blade-untitledui-icons/trash.svg') }}" alt="Eliminar" class="w-4 h-4 mr-1 svg-fill-white">
                                            Eliminar
                                        </button>
                                    @endif
                                </div>

                                {{-- Nombre del archivo --}}
                                <div class="mb-4">
                                    <label class="block text-sm font-medium text-gray-700 mb-2">Nombre del archivo *</label>
                                    <input type="text"
                                           wire:model="files.{{ $index }}.filename"
                                           placeholder="main, utils, etc."
                                           class="w-full rounded-lg border border-gray-200 px-4 py-2 font-mono text-sm focus:outline-none focus:ring-2 focus:ring-orange-300 @error('files.' . $index . '.filename') border-red-500 @enderror">
                                    @error('files.' . $index . '.filename')
                                        <p class="text-red-600 text-sm mt-1">{{ $message }}</p>
                                    @enderror
                                    {{-- Se dice **antes** de escribir, no después de fallar: la
                                         extensión se pone sola y el guion bajo delante es lo que
                                         marca un parcial. --}}
                                    <p class="text-xs text-gray-500 mt-1">
                                        Sin espacios ni acentos. La extensión <span class="font-mono">.js</span>
                                        se pone sola, y si la escribes se quita. Ejemplos: <span class="font-mono">main, utils, _helpers</span>.
                                    </p>
                                </div>

                                {{-- Editor JS --}}
                                <div>
                                    <label class="block text-sm font-medium text-gray-700 mb-2">Contenido JavaScript *</label>
                                    <x-editor-de-codigo :id="'js-editor-' . $index"
                                                        lenguaje="js"
                                                        :estado="'fileContents.' . $index"
                                                        :valor="$fileContents[$index] ?? ''"
                                                        :filas="15"
                                                        :error="$errors->has('files.' . $index . '.content')" />
                                    @error('files.' . $index . '.content')
                                        <p class="text-red-600 text-sm mt-1">{{ $message }}</p>
                                    @enderror
                                    {{-- Lo que ha encontrado la revisión **de este
                                         archivo**: los avisos llevan número de línea, y
                                         una línea sin saber de qué archivo no sirve. --}}
                                    <x-revision-del-codigo :avisos="$revision[$index] ?? []" />
                                </div>
                            </div>
                        @endforeach

                        @error('files')
                            <p class="text-red-600 text-sm mt-1">{{ $message }}</p>
                        @enderror
                    </div>
                </form>
            </div>
        </div>
    </div>

</div>
