CAMBIOS:
- Creada pagina de FAQ con manual de funcionalidades. - Arregladas alertas de exito y error en CDE de todos los elementos. - Creada alerta de verificacion en la eliminacion de cualquier elemento.
This commit is contained in:
@@ -102,7 +102,7 @@
|
||||
</div>
|
||||
</x-layout>
|
||||
{{-- <a href="{{ route('productos.edit', $product ) }}" class="w-full sm:w-auto px-5 py-2 rounded-full text-white font-semibold bg-blue-600 hover:bg-blue-700">Editar</a>
|
||||
<form action="{{route('productos.destroy',$product)}}" method="post">
|
||||
<form action="{{route('productos.destroy',$product)}}" method="post" class="delete-form">
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
<button type="submit" class="w-full sm:w-auto px-5 py-2 rounded-full text-white font-semibold bg-red-600 hover:bg-red-700">
|
||||
|
||||
@@ -3,12 +3,8 @@
|
||||
<x-section-header subtitle="Gestión de Clientes" title="Cartera de " highlight="Clientes" />
|
||||
|
||||
<!-- Mensajes de feedback -->
|
||||
<x-ui.alert />
|
||||
@if(session('success'))
|
||||
<div class="bg-green-900/50 border border-green-500 text-green-300 px-4 py-3 rounded-lg mb-6 shadow-sm">
|
||||
{{ session('success') }}
|
||||
</div>
|
||||
@endif
|
||||
|
||||
|
||||
|
||||
<div class="w-full flex flex-col md:flex-row justify-between items-center gap-4 mb-6">
|
||||
|
||||
@@ -70,7 +66,7 @@
|
||||
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m14.304 4.844 2.852 2.852M7 7H4a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h11a1 1 0 0 0 1-1v-4.5m2.409-9.91a2.017 2.017 0 0 1 0 2.853l-6.844 6.844L8 14l.713-3.565 6.844-6.844a2.015 2.015 0 0 1 2.852 0Z"/>
|
||||
</svg>
|
||||
</a>
|
||||
<form action="{{route('clients.destroy',$client)}}" method="post">
|
||||
<form action="{{route('clients.destroy',$client)}}" method="post" class="delete-form">
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
<button title="Eliminar" type="submit" class="w-full sm:w-auto p-2 font-bold dark:font-medium text-red-600 dark:text-red-400 border-2 border-red-600 rounded-lg hover:bg-red-600 hover:text-white dark:hover:text-white transition-colors">
|
||||
|
||||
@@ -46,6 +46,9 @@
|
||||
<!-- Footer Component -->
|
||||
<x-footer />
|
||||
|
||||
<x-ui.alert />
|
||||
<x-ui.confirm-delete />
|
||||
|
||||
<!-- Scripts globales -->
|
||||
<script>
|
||||
// Lógica del menú móvil
|
||||
|
||||
@@ -53,6 +53,12 @@
|
||||
Ventas
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{ route('faq') }}"
|
||||
class="block py-2 px-3 md:p-0 transition-colors {{ request()->routeIs('faq') ? 'text-lime-600 dark:text-neon-lime border-b-2 border-lime-600 dark:border-neon-lime' : 'dark:text-white hover:text-lime-600 hover:dark:text-neon-lime' }}">
|
||||
Ayuda/FAQ
|
||||
</a>
|
||||
</li>
|
||||
@endauth
|
||||
|
||||
<button onclick="toggleTheme()" class="p-2 text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-white transition-colors rounded-full hover:bg-gray-200 dark:hover:bg-neutral-800">
|
||||
|
||||
@@ -1,11 +1,28 @@
|
||||
@if (session('success'))
|
||||
<div class="p-4 mb-4 text-md text-black rounded-lg bg-green-500 border border-green-800/50" role="alert">
|
||||
<span class="font-bold">¡Éxito!</span> {{ session('success') }}
|
||||
@if (session('success') || session('error'))
|
||||
<div id="toast-alert" class="fixed top-20 right-5 z-50 flex items-center w-full max-w-sm p-4 space-x-3 text-black rounded-lg shadow-xl transition-opacity duration-500 ease-in-out {{ session('success') ? 'bg-green-500 border border-green-800/50' : 'bg-red-500 border border-red-800/50' }}" role="alert">
|
||||
<div class="ml-2 text-md font-normal">
|
||||
<span class="font-bold">{{ session('success') ? '¡Éxito!' : 'Error:' }}</span>
|
||||
{{ session('success') ?? session('error') }}
|
||||
</div>
|
||||
<button type="button" onclick="closeToastAlert()" class="ml-auto -mx-1.5 -my-1.5 bg-transparent text-black hover:text-gray-800 rounded-lg focus:ring-2 focus:ring-gray-300 p-1.5 inline-flex h-8 w-8 justify-center items-center" aria-label="Close">
|
||||
<span class="sr-only">Cerrar</span>
|
||||
<svg class="w-3 h-3" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 14 14">
|
||||
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m1 1 6 6m0 0 6 6M7 7l6-6M7 7l-6 6"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if (session('error'))
|
||||
<div class="p-4 mb-4 text-md text-black rounded-lg bg-red-500 border border-red-800/50" role="alert">
|
||||
<span class="font-bold">Error:</span> {{ session('error') }}
|
||||
</div>
|
||||
<script>
|
||||
function closeToastAlert() {
|
||||
const alertElement = document.getElementById('toast-alert');
|
||||
if (alertElement) {
|
||||
alertElement.classList.add('opacity-0');
|
||||
setTimeout(() => alertElement.remove(), 500);
|
||||
}
|
||||
}
|
||||
|
||||
setTimeout(() => {
|
||||
closeToastAlert();
|
||||
}, 5000); // 5 seconds
|
||||
</script>
|
||||
@endif
|
||||
@@ -0,0 +1,80 @@
|
||||
<div id="delete-modal" tabindex="-1" class="hidden overflow-y-auto overflow-x-hidden fixed top-0 right-0 left-0 z-50 justify-center items-center w-full md:inset-0 h-full max-h-full bg-black/50 backdrop-blur-sm transition-opacity duration-300 opacity-0">
|
||||
<div class="relative p-4 w-full max-w-md max-h-full mx-auto mt-20 transform transition-all duration-300 scale-95 opacity-0" id="delete-modal-content">
|
||||
<div class="relative bg-white rounded-xl shadow dark:bg-neutral-800 border border-gray-200 dark:border-neutral-700">
|
||||
<button type="button" onclick="closeDeleteModal()" class="absolute top-3 end-2.5 text-gray-400 bg-transparent hover:bg-gray-200 hover:text-gray-900 rounded-lg text-sm w-8 h-8 ms-auto inline-flex justify-center items-center dark:hover:bg-neutral-700 dark:hover:text-white">
|
||||
<svg class="w-3 h-3" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 14 14">
|
||||
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m1 1 6 6m0 0 6 6M7 7l6-6M7 7l-6 6"/>
|
||||
</svg>
|
||||
<span class="sr-only">Cerrar modal</span>
|
||||
</button>
|
||||
<div class="p-4 md:p-5 text-center">
|
||||
<svg class="mx-auto mb-4 text-red-500 w-12 h-12 dark:text-red-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 20 20">
|
||||
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 11V6m0 8h.01M19 10a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"/>
|
||||
</svg>
|
||||
<h3 class="mb-5 text-lg font-normal text-gray-500 dark:text-gray-300">¿Estás seguro de que quieres eliminar este registro?</h3>
|
||||
<p class="mb-5 text-sm font-normal text-gray-400 dark:text-gray-400">Esta acción no se puede deshacer.</p>
|
||||
<button type="button" id="confirm-delete-btn" class="text-white bg-red-600 hover:bg-red-800 focus:ring-4 focus:outline-none focus:ring-red-300 dark:focus:ring-red-800 font-medium rounded-lg text-sm inline-flex items-center px-5 py-2.5 text-center">
|
||||
Sí, eliminar
|
||||
</button>
|
||||
<button onclick="closeDeleteModal()" type="button" class="py-2.5 px-5 ms-3 text-sm font-medium text-gray-900 focus:outline-none bg-white rounded-lg border border-gray-200 hover:bg-gray-100 hover:text-blue-700 focus:z-10 focus:ring-4 focus:ring-gray-100 dark:focus:ring-gray-700 dark:bg-neutral-800 dark:text-gray-400 dark:border-neutral-600 dark:hover:text-white dark:hover:bg-neutral-700">
|
||||
Cancelar
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
let formToSubmit = null;
|
||||
|
||||
function openDeleteModal(event, form) {
|
||||
event.preventDefault();
|
||||
formToSubmit = form;
|
||||
const modal = document.getElementById('delete-modal');
|
||||
const content = document.getElementById('delete-modal-content');
|
||||
|
||||
modal.classList.remove('hidden');
|
||||
modal.classList.add('flex');
|
||||
|
||||
// Trigger reflow
|
||||
void modal.offsetWidth;
|
||||
|
||||
modal.classList.remove('opacity-0');
|
||||
content.classList.remove('scale-95', 'opacity-0');
|
||||
content.classList.add('scale-100', 'opacity-100');
|
||||
}
|
||||
|
||||
function closeDeleteModal() {
|
||||
const modal = document.getElementById('delete-modal');
|
||||
const content = document.getElementById('delete-modal-content');
|
||||
|
||||
modal.classList.add('opacity-0');
|
||||
content.classList.remove('scale-100', 'opacity-100');
|
||||
content.classList.add('scale-95', 'opacity-0');
|
||||
|
||||
setTimeout(() => {
|
||||
modal.classList.add('hidden');
|
||||
modal.classList.remove('flex');
|
||||
formToSubmit = null;
|
||||
}, 300); // match transition duration
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
const btn = document.getElementById('confirm-delete-btn');
|
||||
if (btn) {
|
||||
btn.addEventListener('click', function() {
|
||||
if (formToSubmit) {
|
||||
formToSubmit.submit();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Add event listener to all forms with 'delete-form' class
|
||||
const deleteForms = document.querySelectorAll('.delete-form');
|
||||
deleteForms.forEach(form => {
|
||||
form.addEventListener('submit', function(e) {
|
||||
openDeleteModal(e, this);
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@@ -0,0 +1,123 @@
|
||||
<x-layout title="FAQ y Manual - Lauck">
|
||||
<x-section-header subtitle="Soporte y Documentación" title="Preguntas " highlight="Frecuentes" />
|
||||
|
||||
<div class="w-full max-w-4xl mx-auto space-y-8">
|
||||
|
||||
<!-- Sección Manual de Usuario -->
|
||||
<div class="bg-white dark:bg-neutral-900 border border-gray-200 dark:border-neutral-800 rounded-xl shadow-sm overflow-hidden">
|
||||
<div class="p-6 border-b border-gray-200 dark:border-neutral-800 bg-gray-50 dark:bg-neutral-800/50">
|
||||
<h2 class="text-xl font-bold text-gray-900 dark:text-white flex items-center gap-2">
|
||||
<svg class="w-6 h-6 text-lime-600 dark:text-neon-lime" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253" />
|
||||
</svg>
|
||||
Manual de Uso Rápido
|
||||
</h2>
|
||||
<p class="text-sm text-gray-500 dark:text-gray-400 mt-1">Conceptos básicos para navegar por el sistema Lauck.</p>
|
||||
</div>
|
||||
<div class="p-6 space-y-6">
|
||||
<!-- Punto 1 -->
|
||||
<div class="flex gap-4">
|
||||
<div class="flex-shrink-0 w-8 h-8 rounded-full bg-lime-100 dark:bg-lime-900/30 flex items-center justify-center text-lime-600 dark:text-neon-lime font-bold">1</div>
|
||||
<div>
|
||||
<h3 class="text-lg font-semibold text-gray-900 dark:text-white">Dashboard</h3>
|
||||
<p class="text-gray-600 dark:text-gray-400 mt-1">El panel principal muestra un resumen de las métricas clave, accesos directos a tus módulos más importantes y un panorama general del negocio.</p>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Punto 2 -->
|
||||
<div class="flex gap-4">
|
||||
<div class="flex-shrink-0 w-8 h-8 rounded-full bg-lime-100 dark:bg-lime-900/30 flex items-center justify-center text-lime-600 dark:text-neon-lime font-bold">2</div>
|
||||
<div>
|
||||
<h3 class="text-lg font-semibold text-gray-900 dark:text-white">Stock y Productos</h3>
|
||||
<p class="text-gray-600 dark:text-gray-400 mt-1">Registra bicicletas, accesorios y repuestos. Mantén las cantidades actualizadas para evitar quiebres de inventario mediante la gestión de tu stock.</p>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Punto 3 -->
|
||||
<div class="flex gap-4">
|
||||
<div class="flex-shrink-0 w-8 h-8 rounded-full bg-lime-100 dark:bg-lime-900/30 flex items-center justify-center text-lime-600 dark:text-neon-lime font-bold">3</div>
|
||||
<div>
|
||||
<h3 class="text-lg font-semibold text-gray-900 dark:text-white">Taller</h3>
|
||||
<p class="text-gray-600 dark:text-gray-400 mt-1">Administra la agenda de reparaciones, asigna estados (pendiente, en proceso, listo) y mantén un registro de los servicios realizados a cada cliente.</p>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Punto 4 -->
|
||||
<div class="flex gap-4">
|
||||
<div class="flex-shrink-0 w-8 h-8 rounded-full bg-lime-100 dark:bg-lime-900/30 flex items-center justify-center text-lime-600 dark:text-neon-lime font-bold">4</div>
|
||||
<div>
|
||||
<h3 class="text-lg font-semibold text-gray-900 dark:text-white">Ventas y Clientes</h3>
|
||||
<p class="text-gray-600 dark:text-gray-400 mt-1">Genera nuevas ventas, consulta el historial, y gestiona la base de datos de tus clientes para ofrecer un servicio más personalizado.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Preguntas Frecuentes -->
|
||||
<h2 class="text-2xl font-bold text-gray-900 dark:text-white mt-10 mb-6 flex items-center gap-2">
|
||||
<svg class="w-6 h-6 text-lime-600 dark:text-neon-lime" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8.228 9c.549-1.165 2.03-2 3.772-2 2.21 0 4 1.343 4 3 0 1.4-1.278 2.575-3.006 2.907-.542.104-.994.54-.994 1.093m0 3h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
|
||||
</svg>
|
||||
Preguntas Frecuentes (FAQ)
|
||||
</h2>
|
||||
|
||||
<div class="space-y-4">
|
||||
<!-- FAQ 1 -->
|
||||
<details class="group bg-white dark:bg-neutral-900 border border-gray-200 dark:border-neutral-800 rounded-lg shadow-sm [&_summary::-webkit-details-marker]:hidden">
|
||||
<summary class="flex items-center justify-between p-5 cursor-pointer font-semibold text-gray-900 dark:text-white transition-colors hover:bg-gray-50 dark:hover:bg-neutral-800/50 rounded-lg">
|
||||
<span>¿Cómo agrego un nuevo producto al stock?</span>
|
||||
<span class="transition-transform duration-300 group-open:-rotate-180 text-gray-500">
|
||||
<svg fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" viewBox="0 0 24 24" width="24"><path d="M6 9l6 6 6-6"></path></svg>
|
||||
</span>
|
||||
</summary>
|
||||
<div class="px-5 pb-5 pt-2 text-gray-600 dark:text-gray-400 border-t border-gray-100 dark:border-neutral-800/50">
|
||||
<p>Dirígete a la sección <strong>Stock</strong> desde el menú principal, haz clic en el botón superior derecho de agregar nuevo producto y completa el formulario con los detalles (SKU, nombre, precio, etc).</p>
|
||||
</div>
|
||||
</details>
|
||||
|
||||
<!-- FAQ 2 -->
|
||||
<details class="group bg-white dark:bg-neutral-900 border border-gray-200 dark:border-neutral-800 rounded-lg shadow-sm [&_summary::-webkit-details-marker]:hidden">
|
||||
<summary class="flex items-center justify-between p-5 cursor-pointer font-semibold text-gray-900 dark:text-white transition-colors hover:bg-gray-50 dark:hover:bg-neutral-800/50 rounded-lg">
|
||||
<span>¿Puedo registrar una venta si el cliente no está registrado?</span>
|
||||
<span class="transition-transform duration-300 group-open:-rotate-180 text-gray-500">
|
||||
<svg fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" viewBox="0 0 24 24" width="24"><path d="M6 9l6 6 6-6"></path></svg>
|
||||
</span>
|
||||
</summary>
|
||||
<div class="px-5 pb-5 pt-2 text-gray-600 dark:text-gray-400 border-t border-gray-100 dark:border-neutral-800/50">
|
||||
<p>Sí, al crear una nueva venta desde la sección <strong>Ventas</strong> puedes seleccionar un cliente genérico ("Consumidor Final") o bien ingresar los datos de un cliente nuevo en el mismo momento para que quede registrado en tu base de datos.</p>
|
||||
</div>
|
||||
</details>
|
||||
|
||||
<!-- FAQ 3 -->
|
||||
<details class="group bg-white dark:bg-neutral-900 border border-gray-200 dark:border-neutral-800 rounded-lg shadow-sm [&_summary::-webkit-details-marker]:hidden">
|
||||
<summary class="flex items-center justify-between p-5 cursor-pointer font-semibold text-gray-900 dark:text-white transition-colors hover:bg-gray-50 dark:hover:bg-neutral-800/50 rounded-lg">
|
||||
<span>¿Qué pasa si olvido mi contraseña?</span>
|
||||
<span class="transition-transform duration-300 group-open:-rotate-180 text-gray-500">
|
||||
<svg fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" viewBox="0 0 24 24" width="24"><path d="M6 9l6 6-6-6"></path></svg>
|
||||
</span>
|
||||
</summary>
|
||||
<div class="px-5 pb-5 pt-2 text-gray-600 dark:text-gray-400 border-t border-gray-100 dark:border-neutral-800/50">
|
||||
<p>En la pantalla de inicio de sesión, haz clic en el enlace "¿Olvidaste tu contraseña?". Te enviaremos un correo electrónico con instrucciones para restablecerla de forma segura. Si el problema persiste, contacta al administrador del sistema.</p>
|
||||
</div>
|
||||
</details>
|
||||
|
||||
<!-- FAQ 4 -->
|
||||
<details class="group bg-white dark:bg-neutral-900 border border-gray-200 dark:border-neutral-800 rounded-lg shadow-sm [&_summary::-webkit-details-marker]:hidden">
|
||||
<summary class="flex items-center justify-between p-5 cursor-pointer font-semibold text-gray-900 dark:text-white transition-colors hover:bg-gray-50 dark:hover:bg-neutral-800/50 rounded-lg">
|
||||
<span>¿Cómo cambiar entre modo claro y oscuro?</span>
|
||||
<span class="transition-transform duration-300 group-open:-rotate-180 text-gray-500">
|
||||
<svg fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" viewBox="0 0 24 24" width="24"><path d="M6 9l6 6 6-6"></path></svg>
|
||||
</span>
|
||||
</summary>
|
||||
<div class="px-5 pb-5 pt-2 text-gray-600 dark:text-gray-400 border-t border-gray-100 dark:border-neutral-800/50">
|
||||
<p>En la barra de navegación superior (Navbar), encontrarás un icono de un sol o una luna (dependiendo del modo actual en el que te encuentres). Haz clic sobre el ícono para alternar entre el tema claro y el oscuro. El sistema recordará tu preferencia para futuras sesiones.</p>
|
||||
</div>
|
||||
</details>
|
||||
</div>
|
||||
|
||||
<div class="mt-8 p-6 bg-lime-50 dark:bg-lime-900/10 border border-lime-200 dark:border-lime-900/30 rounded-xl text-center shadow-sm">
|
||||
<h3 class="text-lg font-bold text-lime-800 dark:text-neon-lime mb-2">¿Necesitas más ayuda?</h3>
|
||||
<p class="text-sm text-lime-700 dark:text-gray-400 mb-5">Si tienes alguna otra duda o experimentas problemas técnicos, nuestro equipo de soporte está disponible para ayudarte.</p>
|
||||
<a href="mailto:soporte@lauck.com" class="inline-flex items-center justify-center px-6 py-3 text-sm font-bold text-neutral-900 bg-lime-400 dark:bg-neon-lime rounded-lg hover:bg-lime-500 hover:dark:bg-[#b3e600] transition-colors shadow-lg shadow-lime-500/20 dark:shadow-neon-lime/20 transform hover:-translate-y-0.5 duration-200 uppercase tracking-wide">
|
||||
Contactar a Soporte
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</x-layout>
|
||||
@@ -53,11 +53,7 @@
|
||||
<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 -->
|
||||
<div class="md:col-span-4">
|
||||
<x-forms.label for="description" value="Descripción / Notas" />
|
||||
<textarea id="description" name="description" rows="3" class="bg-gray-300 dark:bg-neutral-800 border border-neutral-400 dark:border-neutral-700 dark:text-white text-sm rounded-lg focus:ring-neon-lime focus:border-neon-lime block w-full p-2.5 placeholder-neutral-600 dark:placeholder-gray-400">{{ old('description') }}</textarea>
|
||||
</div>
|
||||
|
||||
<!-- Imagen -->
|
||||
<div class="md:col-span-2">
|
||||
<x-forms.label for="image" value="Imagen del Producto" />
|
||||
|
||||
@@ -52,11 +52,6 @@
|
||||
<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-gray-300 dark:bg-neutral-800 border border-neutral-400 dark:border-neutral-700 dark: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>
|
||||
<!-- Imagen -->
|
||||
<div class="md:col-span-2">
|
||||
<x-forms.label for="image" value="Imagen del Producto" />
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
<x-section-header subtitle="Gestión de Inventario" title="Listado de " highlight="Productos" />
|
||||
|
||||
<x-ui.alert />
|
||||
|
||||
|
||||
<div class="w-full flex flex-col xl:flex-row justify-between items-start xl:items-center gap-4 mb-6">
|
||||
|
||||
@@ -114,7 +114,7 @@
|
||||
<a href="{{ route('productos.edit', $product) }}" title="Editar" class="font-semibold p-2 text-blue-800 dark:text-blue-400 border-2 border-blue-800 rounded-lg hover:bg-blue-800 hover:text-white dark:hover:text-white transition-colors">
|
||||
<svg class="size-5" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m14.304 4.844 2.852 2.852M7 7H4a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h11a1 1 0 0 0 1-1v-4.5m2.409-9.91a2.017 2.017 0 0 1 0 2.853l-6.844 6.844L8 14l.713-3.565 6.844-6.844a2.015 2.015 0 0 1 2.852 0Z"/></svg>
|
||||
</a>
|
||||
<form action="{{route('productos.destroy',$product)}}" method="post">
|
||||
<form action="{{route('productos.destroy',$product)}}" method="post" class="delete-form">
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
<button title="Eliminar" type="submit" class="w-full sm:w-auto p-2 font-bold dark:font-medium text-red-600 dark:text-red-400 border-2 border-red-600 rounded-lg hover:bg-red-600 hover:text-white dark:hover:text-white transition-colors">
|
||||
|
||||
@@ -63,13 +63,6 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="md:col-span-4">
|
||||
<x-forms.label for="description" value="Descripción / Notas" />
|
||||
<div class="bg-gray-300/50 dark:bg-neutral-800/50 border border-neutral-400/50 dark:border-neutral-700/50 text-gray-800 dark:text-gray-300 text-sm rounded-lg block w-full p-4 min-h-[80px] leading-relaxed">
|
||||
{{ $product->description ?: 'No hay descripción cargada para este producto.' }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="md:col-span-4">
|
||||
<x-forms.label for="image" value="Fotografía del Producto" />
|
||||
<div class="mt-2">
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
<x-section-header subtitle="Ventas" title="Registro de " :highlight="'ventas ' . ' '" />
|
||||
<!-- Mensajes de feedback -->
|
||||
<x-ui.alert />
|
||||
|
||||
|
||||
<!-- Barra de Herramientas (Buscador + Botón Crear) -->
|
||||
<div class="w-full flex flex-col md:flex-row justify-between items-center gap-4 mb-6">
|
||||
|
||||
@@ -85,7 +85,7 @@
|
||||
|
||||
<x-section-header subtitle="Punto de Venta" title="Nueva " highlight="Venta" />
|
||||
|
||||
<x-ui.alert />
|
||||
|
||||
|
||||
@if($errors->any())
|
||||
<div class="bg-red-900/50 border border-red-500 text-red-300 px-4 py-3 rounded-lg mb-6 shadow-sm">
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<x-layout title="Detalle de Venta #{{ $sale->id }}">
|
||||
|
||||
<!-- Mensajes de Alerta -->
|
||||
<x-ui.alert />
|
||||
|
||||
|
||||
<!-- Encabezado de Navegación -->
|
||||
<div class="w-full flex justify-between items-center mb-8 print:hidden">
|
||||
|
||||
@@ -2,17 +2,8 @@
|
||||
|
||||
<x-section-header subtitle="Gestión de Proveedores" title="Directorio de " highlight="Proveedores" />
|
||||
|
||||
<x-ui.alert />
|
||||
@if(session('success'))
|
||||
<div class="bg-green-900/50 border border-green-500 text-green-300 px-4 py-3 rounded-lg mb-6 shadow-sm">
|
||||
{{ session('success') }}
|
||||
</div>
|
||||
@endif
|
||||
<!--@if(session('error'))
|
||||
<div class="bg-red-900/50 border border-red-500 text-red-300 px-4 py-3 rounded-lg mb-6 shadow-sm">
|
||||
{{ session('error') }}
|
||||
</div>
|
||||
@endif-->
|
||||
|
||||
|
||||
|
||||
<div class="w-full flex flex-col md:flex-row justify-between items-center gap-4 mb-6">
|
||||
|
||||
@@ -79,7 +70,7 @@
|
||||
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m14.304 4.844 2.852 2.852M7 7H4a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h11a1 1 0 0 0 1-1v-4.5m2.409-9.91a2.017 2.017 0 0 1 0 2.853l-6.844 6.844L8 14l.713-3.565 6.844-6.844a2.015 2.015 0 0 1 2.852 0Z"/>
|
||||
</svg>
|
||||
</a>
|
||||
<form action="{{route('suppliers.destroy', $supplier)}}" method="post">
|
||||
<form action="{{route('suppliers.destroy', $supplier)}}" method="post" class="delete-form">
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
<button title="Eliminar" type="submit" class="w-full sm:w-auto p-2 font-bold dark:font-medium text-red-600 dark:text-red-400 border-2 border-red-600 rounded-lg hover:bg-red-600 hover:text-white dark:hover:text-white transition-colors">
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
<x-section-header subtitle="Taller" title="Nueva " highlight="Orden de Reparación" />
|
||||
|
||||
<x-ui.alert />
|
||||
|
||||
|
||||
@if($errors->any())
|
||||
<div class="w-120 bg-red-900/50 border border-red-500 text-red-300 px-4 py-3 rounded-lg mb-6 shadow-sm">
|
||||
|
||||
@@ -2,11 +2,7 @@
|
||||
|
||||
<x-section-header subtitle="Gestión" title="Tablero de " highlight="Taller" />
|
||||
|
||||
@if(session('success'))
|
||||
<div class="bg-green-900/50 border border-green-500 text-green-300 px-4 py-3 rounded-lg mb-6 shadow-sm">
|
||||
{{ session('success') }}
|
||||
</div>
|
||||
@endif
|
||||
|
||||
|
||||
<div class="flex w-full justify-end items-end mb-4 gap-x-2">
|
||||
<a href="{{ route('agenda') }}"
|
||||
|
||||
@@ -56,4 +56,5 @@ Route::middleware(['auth'])->group(function () {
|
||||
Route::get('/agenda', [AgendaController::class, 'index'])->name('agenda');
|
||||
Route::get('/appointments/{appointment}', [AppointmentController::class, 'show'])
|
||||
->name('appointments.show');
|
||||
Route::view('/faq', 'faq')->name('faq');
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user