Actualizacion de plantillas de layout

This commit is contained in:
BryamE
2026-01-05 00:10:43 -03:00
parent 39cb070b6a
commit 1cc848fb13
4 changed files with 79 additions and 119 deletions
+12 -69
View File
@@ -1,61 +1,4 @@
{{-- <x-layout title="Lauck - Agregar">
<div class="w-full h-fit flex flex-col justify-start items-center gap-3 p-18">
<form class="w-lg mx-auto" action="{{route('productos.store')}}" method="POST">
@csrf
<x-forms.input></x-forms>
<div class="relative z-0 w-full mb-5 group">
<input type="text" value="{{old('nombre')}}" name="nombre" id="nombre" class="block py-2.5 px-0 w-full text-sm text-gray-300 bg-transparent border-0 border-b-2 border-gray-300 appearance-none dark:text-white dark:border-gray-600 dark:focus:border-blue-500 focus:outline-none focus:ring-0 focus:border-blue-600 peer" placeholder=" "/>
<label for="nombre" class="peer-focus:font-medium absolute text-sm text-gray-300 dark:text-gray-300 duration-300 transform -translate-y-6 scale-75 top-3 -z-10 origin-[0] peer-focus:start-0 rtl:peer-focus:translate-x-1/4 rtl:peer-focus:left-auto peer-focus:text-blue-600 peer-focus:dark:text-blue-500 peer-placeholder-shown:scale-100 peer-placeholder-shown:translate-y-0 peer-focus:scale-75 peer-focus:-translate-y-6">Titulo</label>
</div>
<div class="relative z-0 w-full mb-5 group">
<input type="text" value="{{old('marca')}}" name="marca" id="marca" class="block py-2.5 px-0 w-full text-sm text-gray-300 bg-transparent border-0 border-b-2 border-gray-300 appearance-none dark:text-white dark:border-gray-600 dark:focus:border-blue-500 focus:outline-none focus:ring-0 focus:border-blue-600 peer" placeholder=" "/>
<label for="marca" class="peer-focus:font-medium absolute text-sm text-gray-300 dark:text-gray-300 duration-300 transform -translate-y-6 scale-75 top-3 -z-10 origin-[0] peer-focus:start-0 rtl:peer-focus:translate-x-1/4 peer-focus:text-blue-600 peer-focus:dark:text-blue-500 peer-placeholder-shown:scale-100 peer-placeholder-shown:translate-y-0 peer-focus:scale-75 peer-focus:-translate-y-6">Marca</label>
</div>
<div class="relative z-0 w-full mb-5 group">
<input type="text" value="{{old('modelo')}}" name="modelo" id="modelo" class="block py-2.5 px-0 w-full text-sm text-gray-300 bg-transparent border-0 border-b-2 border-gray-300 appearance-none dark:text-white dark:border-gray-600 dark:focus:border-blue-500 focus:outline-none focus:ring-0 focus:border-blue-600 peer" placeholder=" "/>
<label for="modelo" class="peer-focus:font-medium absolute text-sm text-gray-300 dark:text-gray-300 duration-300 transform -translate-y-6 scale-75 top-3 -z-10 origin-[0] peer-focus:start-0 rtl:peer-focus:translate-x-1/4 peer-focus:text-blue-600 peer-focus:dark:text-blue-500 peer-placeholder-shown:scale-100 peer-placeholder-shown:translate-y-0 peer-focus:scale-75 peer-focus:-translate-y-6">Modelo</label>
</div>
<div class="relative z-0 w-full mb-5 group">
<textarea type="text" name="descripcion" id="descripcion" class="block py-2.5 px-0 w-full text-sm text-gray-300 bg-transparent border-0 border-b-2 border-gray-300 appearance-none dark:text-white dark:border-gray-600 dark:focus:border-blue-500 focus:outline-none focus:ring-0 focus:border-blue-600 peer" placeholder=" ">{{old('descripcion')}}</textarea>
<label for="descripcion" class="peer-focus:font-medium absolute text-sm text-gray-300 dark:text-gray-300 duration-300 transform -translate-y-6 scale-75 top-3 -z-10 origin-[0] peer-focus:start-0 rtl:peer-focus:translate-x-1/4 peer-focus:text-blue-600 peer-focus:dark:text-blue-500 peer-placeholder-shown:scale-100 peer-placeholder-shown:translate-y-0 peer-focus:scale-75 peer-focus:-translate-y-6">Descripcion</label>
</div>
<div class="grid md:grid-cols-2 md:gap-6">
<div class="relative z-0 w-full mb-5 group">
<input type="number" value="{{old('rodado')}}" name="rodado" id="rodado" class="block py-2.5 px-0 w-full text-sm text-gray-300 bg-transparent border-0 border-b-2 border-gray-300 appearance-none dark:text-white dark:border-gray-600 dark:focus:border-blue-500 focus:outline-none focus:ring-0 focus:border-blue-600 peer" placeholder=" "/>
<label for="rodado" class="peer-focus:font-medium absolute text-sm text-gray-300 dark:text-gray-300 duration-300 transform -translate-y-6 scale-75 top-3 -z-10 origin-[0] peer-focus:start-0 rtl:peer-focus:translate-x-1/4 peer-focus:text-blue-600 peer-focus:dark:text-blue-500 peer-placeholder-shown:scale-100 peer-placeholder-shown:translate-y-0 peer-focus:scale-75 peer-focus:-translate-y-6">Rodado</label>
</div>
<div class="relative z-0 w-full mb-5 group">
<input type="text" value="{{old('color')}}" name="color" id="color" class="block py-2.5 px-0 w-full text-sm text-gray-300 bg-transparent border-0 border-b-2 border-gray-300 appearance-none dark:text-white dark:border-gray-600 dark:focus:border-blue-500 focus:outline-none focus:ring-0 focus:border-blue-600 peer" placeholder=" "/>
<label for="color" class="peer-focus:font-medium absolute text-sm text-gray-300 dark:text-gray-300 duration-300 transform -translate-y-6 scale-75 top-3 -z-10 origin-[0] peer-focus:start-0 rtl:peer-focus:translate-x-1/4 peer-focus:text-blue-600 peer-focus:dark:text-blue-500 peer-placeholder-shown:scale-100 peer-placeholder-shown:translate-y-0 peer-focus:scale-75 peer-focus:-translate-y-6">Color</label>
</div>
</div>
<div class="grid md:grid-cols-2 md:gap-6">
<div class="relative z-0 w-full mb-5 group">
<input type="text" value="{{old('tipo')}}" name="tipo" id="tipo" class="block py-2.5 px-0 w-full text-sm text-gray-300 bg-transparent border-0 border-b-2 border-gray-300 appearance-none dark:text-white dark:border-gray-600 dark:focus:border-blue-500 focus:outline-none focus:ring-0 focus:border-blue-600 peer" placeholder=" "/>
<label for="tipo" class="peer-focus:font-medium absolute text-sm text-gray-300 dark:text-gray-300 duration-300 transform -translate-y-6 scale-75 top-3 -z-10 origin-[0] peer-focus:start-0 rtl:peer-focus:translate-x-1/4 peer-focus:text-blue-600 peer-focus:dark:text-blue-500 peer-placeholder-shown:scale-100 peer-placeholder-shown:translate-y-0 peer-focus:scale-75 peer-focus:-translate-y-6">Tipo</label>
</div>
<div class="relative z-0 w-full mb-5 group">
<input type="number" value="{{old('precio')}}" name="precio" id="precio" class="block py-2.5 px-0 w-full text-sm text-gray-300 bg-transparent border-0 border-b-2 border-gray-300 appearance-none dark:text-white dark:border-gray-600 dark:focus:border-blue-500 focus:outline-none focus:ring-0 focus:border-blue-600 peer" placeholder=" " step="0.01"/>
<label for="precio" class="peer-focus:font-medium absolute text-sm text-gray-300 dark:text-gray-300 duration-300 transform -translate-y-6 scale-75 top-3 -z-10 origin-[0] peer-focus:start-0 rtl:peer-focus:translate-x-1/4 peer-focus:text-blue-600 peer-focus:dark:text-blue-500 peer-placeholder-shown:scale-100 peer-placeholder-shown:translate-y-0 peer-focus:scale-75 peer-focus:-translate-y-6">Precio (Ej. $9999)</label>
</div>
</div>
<div class="flex w-full gap-5 mt-5">
<button type="submit" class="w-full sm:w-auto px-4 py-2 rounded-full text-white font-semibold bg-blue-700 hover:bg-blue-800">
Agregar
</button>
<a href="{{route('productos.index')}}" class="w-full sm:w-auto px-5 py-2 rounded-full text-white font-semibold bg-stone-500">
Volver
</a>
</div>
</form>
</div>
</x-layout> --}}
<x-layout title="Nuevo Producto">
<x-layout title="Lauck - Nuevo Producto">
<x-section-header subtitle="Inventario" title="Nuevo " highlight="Producto" />
@@ -65,22 +8,22 @@
@csrf
<!-- Grid Layout -->
<div class="grid grid-cols-1 md:grid-cols-2 gap-6 mb-6">
<div class="grid grid-cols-1 md:grid-cols-4 gap-6 mb-6">
<!-- Nombre (Ocupa 2 columnas) -->
<div class="md:col-span-2">
<div class="md:col-span-4">
<x-forms.label for="name" value="Nombre del Producto" />
<x-forms.input id="name" name="name" type="text" :value="old('name')" required autofocus placeholder="Ej: Cámara 29 Válvula Auto" :error="$errors->first('name')" />
</div>
<!-- SKU -->
<div>
<div class="md:col-span-2">
<x-forms.label for="sku" value="Código SKU (Opcional)" />
<x-forms.input id="sku" name="sku" type="text" :value="old('sku')" placeholder="Dejar vacío para generar auto" :error="$errors->first('sku')" />
</div>
<!-- Tipo -->
<div>
<div class="md:col-span-2">
<x-forms.label for="type" value="Tipo de Producto" />
<select id="type" name="type" class="bg-neutral-800 border-neutral-700 text-white text-sm rounded-lg focus:ring-neon-lime focus:border-neon-lime block w-full p-2.5">
<option value="accessory" {{ old('type') == 'accessory' ? 'selected' : '' }}>Accesorio / Repuesto</option>
@@ -90,39 +33,39 @@
</div>
<!-- Precios -->
<div>
<div class="">
<x-forms.label for="price" value="Precio Venta ($)" />
<x-forms.input id="price" name="price" type="number" step="0.01" :value="old('price')" required :error="$errors->first('price')" />
</div>
<div>
<div class="">
<x-forms.label for="cost" value="Costo ($) - Solo Admin" />
<x-forms.input id="cost" name="cost" type="number" step="0.01" :value="old('cost')" :error="$errors->first('cost')" />
</div>
<!-- Stock -->
<div>
<div class="">
<x-forms.label for="stock_quantity" value="Cantidad Inicial" />
<x-forms.input id="stock_quantity" name="stock_quantity" type="number" :value="old('stock_quantity', 0)" required :error="$errors->first('stock_quantity')" />
</div>
<div>
<div class="">
<x-forms.label for="min_stock_alert" value="Alerta de Stock Mínimo" />
<x-forms.input id="min_stock_alert" name="min_stock_alert" type="number" :value="old('min_stock_alert', 5)" required />
</div>
<!-- Descripción (2 columnas) -->
<div class="md:col-span-2">
<div class="md:col-span-4">
<x-forms.label for="description" value="Descripción / Notas" />
<textarea id="description" name="description" rows="3" class="bg-neutral-800 border-neutral-700 text-white text-sm rounded-lg focus:ring-neon-lime focus:border-neon-lime block w-full p-2.5 placeholder-gray-500">{{ old('description') }}</textarea>
</div>
</div>
<!-- Botones Acción -->
<div class="flex items-center justify-end space-x-4 border-t border-neutral-800 pt-6">
<div class="flex items-center justify-between md:justify-end space-x-4 border-t border-neutral-800 pt-6">
<a href="{{ route('productos.index') }}" class="text-gray-400 hover:text-white font-medium text-sm transition-colors">Cancelar</a>
<button type="submit" class="px-6 py-2.5 bg-neon-lime text-neutral-900 font-bold rounded-lg hover:bg-[#b3e600] transition-colors shadow-lg shadow-neon-lime/20">
Guardar Producto
Guardar
</button>
</div>
+64 -2
View File
@@ -1,4 +1,4 @@
<x-appc>
{{-- <x-appc>
<x-slot name="title">Lauck - Editar</x-slot>
<x-slot name="navTitle">Editar - {{$product->nombre}}</x-slot>
@@ -53,4 +53,66 @@
</form>
</div>
</x-appc>
</x-appc> --}}
<x-layout title="Lauck - Editar Producto">
<x-section-header subtitle="Inventario" title="Edicion de " highlight="Producto" />
<div class="w-full max-w-4xl mx-auto bg-panel-bg border border-neutral-800 rounded-xl p-8 shadow-lg">
<form action="{{route('productos.update',$product)}}" method="POST">
@csrf
@method('PUT')
<div class="grid grid-cols-1 md:grid-cols-4 gap-6 mb-6">
<!-- Nombre -->
<div class="md:col-span-4">
<x-forms.label for="name" value="Nombre del Producto" />
<x-forms.input id="name" name="name" type="text" value="{{$product->name}}" required autofocus placeholder="Ej: Cámara 29 Válvula Auto" :error="$errors->first('name')" />
</div>
<!-- SKU -->
<div class="md:col-span-2">
<x-forms.label for="sku" value="Código SKU (Opcional)" />
<x-forms.input id="sku" name="sku" type="text" value="{{$product->sku}}" placeholder="Dejar vacío para generar auto" :error="$errors->first('sku')" />
</div>
<!-- Tipo -->
<div class="md:col-span-2">
<x-forms.label for="type" value="Tipo de Producto" />
<select id="type" name="type" class="bg-neutral-800 border-neutral-700 text-white text-sm rounded-lg focus:ring-neon-lime focus:border-neon-lime block w-full p-2.5">
<option value="accessory" {{ $product->type == 'accessory' ? 'selected' : '' }}>Accesorio / Repuesto</option>
<option value="bike" {{ $product->type == 'bike' ? 'selected' : '' }}>Bicicleta</option>
<option value="service" {{ $product->type == 'service' ? 'selected' : '' }}>Servicio / Mano de Obra</option>
</select>
</div>
<!-- Precios -->
<div class="">
<x-forms.label for="price" value="Precio Venta ($)" />
<x-forms.input id="price" name="price" type="number" step="0.01" value="{{$product->price}}" required :error="$errors->first('price')" />
</div>
<div class="">
<x-forms.label for="cost" value="Costo ($) - Solo Admin" />
<x-forms.input id="cost" name="cost" type="number" step="0.01" value="{{$product->cost}}" :error="$errors->first('cost')" />
</div>
<!-- Stock -->
<div class="">
<x-forms.label for="stock_quantity" value="Cantidad Inicial" />
<x-forms.input id="stock_quantity" name="stock_quantity" type="number" value="{{$product->stock_quantity}}" required :error="$errors->first('stock_quantity')" />
</div>
<div class="">
<x-forms.label for="min_stock_alert" value="Alerta de Stock Mínimo" />
<x-forms.input id="min_stock_alert" name="min_stock_alert" type="number" value="{{$product->min_stock_alert}}" required />
</div>
<!-- Descripción (2 columnas) -->
<div class="md:col-span-4">
<x-forms.label for="description" value="Descripción / Notas" />
<textarea id="description" name="description" rows="3" class="bg-neutral-800 border-neutral-700 text-white text-sm rounded-lg focus:ring-neon-lime focus:border-neon-lime block w-full p-2.5 placeholder-gray-500">{{$product->description}}</textarea>
</div>
</div>
<!-- Botones Acción -->
<div class="flex items-center justify-between md:justify-end space-x-4 border-t border-neutral-800 pt-6">
<a href="{{ route('productos.index') }}" class="text-gray-400 hover:text-white font-medium text-sm transition-colors">Cancelar</a>
<button type="submit" class="px-6 py-2.5 bg-neon-lime text-neutral-900 font-bold rounded-lg hover:bg-[#b3e600] transition-colors shadow-lg shadow-neon-lime/20">
Guardar
</button>
</div>
</form>
</div>
</x-layout>
+1 -46
View File
@@ -1,49 +1,4 @@
{{-- <x-appc>
<x-slot name="title">Lauck - Home - Productos</x-slot>
<x-slot name="navTitle">Productos</x-slot>
<div class="w-6xl mx-auto flex flex-col justify-start items-stretch gap-5 my-5">
<a href="{{route('productos.create')}}" class="w-fit mx-auto px-4 py-2 rounded-full text-white font-semibold bg-stone-500 hover:scale-105 transition">
Agregar Producto
</a>
<div class="overflow-x-auto rounded-lg shadow-xl">
<table class="w-full min-w-xl text-sm text-left rtl:text-right text-neutral-500 dark:text-neutral-400">
<thead class="text-xs text-neutral-700 uppercase bg-neutral-50 dark:bg-neutral-700 dark:text-neutral-400">
<tr>
<th scope="col" class="px-6 py-3">Nombre</th>
<th scope="col" class="px-6 py-3">Marca</th>
<th scope="col" class="px-6 py-3">Modelo</th>
<th scope="col" class="px-6 py-3">Rodado</th>
<th scope="col" class="px-6 py-3">Color</th>
<th scope="col" class="px-6 py-3">Tipo</th>
<th scope="col" class="px-6 py-3">Precio</th>
</tr>
</thead>
<tbody>
@foreach ($products as $prod)
<tr class="bg-white border-b dark:bg-neutral-800 dark:border-neutral-700 border-neutral-200">
<th scope="row"
class="px-6 py-4 font-medium text-neutral-900 whitespace-nowrap dark:text-white">
<a href="{{route('productos.show',$prod)}}">{{ $prod->name }}</a>
</th>
<td class="px-6 py-4">{{ $prod->marca }}</td>
<td class="px-6 py-4">{{ $prod->modelo }}</td>
<td class="px-6 py-4">{{ $prod->rodado }}</td>
<td class="px-6 py-4">{{ $prod->color }}</td>
<td class="px-6 py-4">{{ $prod->tipo }}</td>
<td class="px-6 py-4">{{ $prod->precio }}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
{{$products->links()}}
</div>
</x-appc> --}}
<x-layout title="Stock - Lauck">
<x-layout title="Lauck - Stock">
<x-section-header subtitle="Gestión de Inventario" title="Listado de " highlight="Productos" />
+2 -2
View File
@@ -1,7 +1,7 @@
<x-layout title="Productos - Lauck">
<x-layout title="Lauck - Ver Producto">
<!-- Header -->
<x-section-header subtitle="Panel de Control" title="¡Bienvenido, " highlight="Jose!"/>
<x-section-header subtitle="Producto" title=" " highlight="{{$product->name}}"/>
<div class="w-full min-h-7/12 mx-auto px-4 my-5 flex flex-col gap-5 items-center justify-center">
<dl class="w-lg text-gray-900 dark:text-white *:border-b *:border-gray-200 *:dark:border-gray-400">