19 Commits

Author SHA1 Message Date
e8ca583957 Merge version_4 into main
Merge version_4 into main
2026-06-03 10:41:39 +00:00
818ed0c1ac Update src/app/page.tsx 2026-06-03 10:41:36 +00:00
f80295d4fd Update src/app/checkout/page.tsx 2026-06-03 10:41:35 +00:00
f4fe914fe9 Update src/app/admin/page.tsx 2026-06-03 10:41:35 +00:00
5d7f80ff1a Merge version_4 into main
Merge version_4 into main
2026-06-03 10:41:00 +00:00
3c41cbc950 Update src/app/page.tsx 2026-06-03 10:40:57 +00:00
9940b82568 Add src/app/checkout/page.tsx 2026-06-03 10:40:57 +00:00
b87ef03093 Add src/app/admin/page.tsx 2026-06-03 10:40:56 +00:00
10318f7e63 Merge version_3 into main
Merge version_3 into main
2026-06-03 10:36:23 +00:00
5c295b8b27 Update src/app/page.tsx 2026-06-03 10:36:16 +00:00
c93bf6d7a2 Merge version_3 into main
Merge version_3 into main
2026-06-03 10:35:37 +00:00
05ef6498ef Update src/app/page.tsx 2026-06-03 10:35:31 +00:00
53ae0c283b Merge version_3 into main
Merge version_3 into main
2026-06-03 10:34:44 +00:00
8253a5004b Update src/app/page.tsx 2026-06-03 10:34:41 +00:00
895b88f6d2 Merge version_3 into main
Merge version_3 into main
2026-06-03 10:33:33 +00:00
e5e96575ca Update src/app/page.tsx 2026-06-03 10:33:26 +00:00
4a9ec7edfd Merge version_2 into main
Merge version_2 into main
2026-06-03 10:31:00 +00:00
54d27e81b7 Merge version_2 into main
Merge version_2 into main
2026-06-03 10:30:36 +00:00
4a6ce62efa Merge version_2 into main
Merge version_2 into main
2026-06-03 10:28:37 +00:00
3 changed files with 338 additions and 16 deletions

80
src/app/admin/page.tsx Normal file
View File

@@ -0,0 +1,80 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay';
import FooterLogoReveal from '@/components/sections/footer/FooterLogoReveal';
export default function AdminPanelPage() {
return (
<ThemeProvider
defaultButtonVariant="directional-hover"
defaultTextAnimation="background-highlight"
borderRadius="soft"
contentWidth="small"
sizing="largeSmallSizeLargeTitles"
background="fluid"
cardStyle="outline"
primaryButtonStyle="flat"
secondaryButtonStyle="glass"
headingFontWeight="semibold"
>
<ReactLenis root>
<div id="nav" data-section="nav">
<NavbarLayoutFloatingOverlay
navItems={[
{ name: "Inicio", id: "home" },
{ name: "Nuestra Historia", id: "about" },
{ name: "Productos", id: "products" },
{ name: "Ventajas", id: "features" },
{ name: "Profesionales", id: "professionals" },
{ name: "Admin", id: "/admin" },
{ name: "Contacto", id: "contact" }
]}
logoSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3EccHcmLBLfaDNDp5ChTlQGMJOM/uploaded-1780481858970-vnz8dv02.png"
logoAlt="Logo de Chente Ibéricos"
brandName="Chente"
button={{ text: "Contacto", href: "contact" }}
/>
</div>
<div className="min-h-[60vh] flex flex-col items-center justify-center p-8 text-center">
<h1 className="text-5xl font-bold mb-4">Panel de Administración</h1>
<p className="text-xl mb-8">Gestiona tu tienda de productos ibéricos.</p>
<div className="grid md:grid-cols-2 lg:grid-cols-3 gap-6 max-w-4xl">
<div className="bg-card p-6 rounded-lg shadow-md">
<h2 className="text-2xl font-semibold mb-2">Gestión de Productos y Precios</h2>
<p>Añade, edita o elimina productos, y actualiza sus precios.</p>
</div>
<div className="bg-card p-6 rounded-lg shadow-md">
<h2 className="text-2xl font-semibold mb-2">Gestión de Órdenes y Stock</h2>
<p>Supervisa pedidos, actualiza estados y controla el inventario.</p>
</div>
<div className="bg-card p-6 rounded-lg shadow-md">
<h2 className="text-2xl font-semibold mb-2">Formularios de Contacto</h2>
<p>Revisa y responde a las consultas de los clientes.</p>
</div>
<div className="bg-card p-6 rounded-lg shadow-md">
<h2 className="text-2xl font-semibold mb-2">Cupones de Descuento</h2>
<p>Crea y gestiona códigos de descuento para tus promociones.</p>
</div>
</div>
</div>
<div id="footer" data-section="footer">
<FooterLogoReveal
logoSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3EccHcmLBLfaDNDp5ChTlQGMJOM/uploaded-1780481858970-vnz8dv02.png"
logoAlt="Logo de Chente Ibéricos"
logoText="Chente © JAMONES CHENTACO S.L. Todos los derechos reservados."
leftLink={{
text: "Política de Privacidad", href: "/politica-privacidad"
}}
rightLink={{
text: "Aviso Legal", href: "/aviso-legal"
}}
/>
</div>
</ReactLenis>
</ThemeProvider>
);
}

240
src/app/checkout/page.tsx Normal file
View File

@@ -0,0 +1,240 @@
"use client";
import React from 'react';
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay';
import FooterLogoReveal from '@/components/sections/footer/FooterLogoReveal';
import { ShoppingBag, CreditCard, DollarSign, Truck } from "lucide-react";
export default function CheckoutPage() {
const navItems = [
{ name: "Inicio", id: "/" },
{ name: "Nuestra Historia", id: "about" },
{ name: "Productos", id: "products" },
{ name: "Ventajas", id: "features" },
{ name: "Profesionales", id: "professionals" },
{ name: "Contacto", id: "contact" },
{ name: "Checkout", id: "/checkout" },
];
// Dummy order data - in a real app, this would come from a cart state or API
const initialOrder = {
items: [
{ id: 'p1', name: 'Jamón 100% Ibérico de Bellota', price: 450.00, quantity: 1 },
{ id: 'p5', name: 'Lomo Ibérico de Bellota', price: 60.00, quantity: 2 },
],
subtotal: 0,
shippingCost: 0,
ivaRate: 0.10, // Assuming 10% IVA for food products in Spain
ivaAmount: 0,
total: 0,
};
const shippingOptions = [
{ label: "Envío Estándar (3-5 días)", cost: 10.00 },
{ label: "Envío Urgente (1-2 días)", cost: 20.00 },
{ label: "Recogida en tienda (Gratis)", cost: 0.00 },
];
const [currentOrder, setCurrentOrder] = React.useState(initialOrder);
const [selectedShipping, setSelectedShipping] = React.useState(shippingOptions[0]);
const [orderConfirmed, setOrderConfirmed] = React.useState(false);
React.useEffect(() => {
const subtotal = currentOrder.items.reduce((sum, item) => sum + item.price * item.quantity, 0);
const calculatedIva = subtotal * currentOrder.ivaRate;
const total = subtotal + calculatedIva + selectedShipping.cost;
setCurrentOrder(prevOrder => ({
...prevOrder,
subtotal: subtotal,
ivaAmount: calculatedIva,
shippingCost: selectedShipping.cost,
total: total,
}));
}, [selectedShipping, currentOrder.items]);
const handleConfirmOrder = () => {
// In a real application, this would trigger a payment gateway redirect
// or call an API to process the order.
console.log("Order confirmed:", currentOrder);
setOrderConfirmed(true);
// Simulate Stripe/PayPal integration by showing a success message
};
if (orderConfirmed) {
return (
<ThemeProvider
defaultButtonVariant="directional-hover"
defaultTextAnimation="background-highlight"
borderRadius="soft"
contentWidth="small"
sizing="largeSmallSizeLargeTitles"
background="fluid"
cardStyle="outline"
primaryButtonStyle="flat"
secondaryButtonStyle="glass"
headingFontWeight="semibold"
>
<ReactLenis root>
<div id="nav" data-section="nav">
<NavbarLayoutFloatingOverlay
navItems={navItems}
logoSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3EccHcmLBLfaDNDp5ChTlQGMJOM/uploaded-1780481858970-vnz8dv02.png"
logoAlt="Logo de Chente Ibéricos"
brandName="Chente"
button={{
text: "Contacto", href: "#contact"
}}
/>
</div>
<main className="min-h-[70vh] flex items-center justify-center p-8">
<div className="max-w-xl text-center">
<h1 className="text-4xl font-bold mb-4">¡Gracias por tu compra!</h1>
<p className="text-lg text-foreground/80 mb-6">Tu pedido ha sido confirmado y será procesado en breve. Recibirás un correo electrónico con los detalles.</p>
<a href="/" className="inline-flex items-center justify-center px-6 py-3 border border-transparent text-base font-medium rounded-md text-white bg-primary-cta hover:bg-primary-cta/90">
Volver al Inicio
</a>
</div>
</main>
<div id="footer" data-section="footer">
<FooterLogoReveal
logoSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3EccHcmLBLfaDNDp5ChTlQGMJOM/uploaded-1780481858970-vnz8dv02.png"
logoAlt="Logo de Chente Ibéricos"
logoText="Chente © JAMONES CHENTACO S.L. Todos los derechos reservados."
leftLink={{
text: "Política de Privacidad", href: "/politica-privacidad"
}}
rightLink={{
text: "Aviso Legal", href: "/aviso-legal"
}}
/>
</div>
</ReactLenis>
</ThemeProvider>
);
}
return (
<ThemeProvider
defaultButtonVariant="directional-hover"
defaultTextAnimation="background-highlight"
borderRadius="soft"
contentWidth="small"
sizing="largeSmallSizeLargeTitles"
background="fluid"
cardStyle="outline"
primaryButtonStyle="flat"
secondaryButtonStyle="glass"
headingFontWeight="semibold"
>
<ReactLenis root>
<div id="nav" data-section="nav">
<NavbarLayoutFloatingOverlay
navItems={navItems}
logoSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3EccHcmLBLfaDNDp5ChTlQGMJOM/uploaded-1780481858970-vnz8dv02.png"
logoAlt="Logo de Chente Ibéricos"
brandName="Chente"
button={{
text: "Contacto", href: "#contact"
}}
/>
</div>
<main className="container mx-auto p-4 md:p-8 min-h-[70vh]">
<h1 className="text-4xl font-bold text-center mb-8">Finalizar Compra</h1>
<div className="grid grid-cols-1 lg:grid-cols-3 gap-8">
{/* Order Summary */}
<div className="lg:col-span-2 bg-card p-6 rounded-lg shadow-lg">
<h2 className="text-2xl font-semibold mb-4 flex items-center"><ShoppingBag className="mr-2" /> Resumen del Pedido</h2>
<div className="space-y-4">
{currentOrder.items.map(item => (
<div key={item.id} className="flex justify-between items-center border-b border-foreground/10 pb-2">
<span className="text-foreground/90">{item.name} (x{item.quantity})</span>
<span className="font-medium">{item.price * item.quantity}</span>
</div>
))}
</div>
<div className="mt-6 pt-4 border-t border-foreground/20 space-y-2">
<div className="flex justify-between">
<span>Subtotal:</span>
<span className="font-medium">{currentOrder.subtotal.toFixed(2)}</span>
</div>
<div className="flex justify-between">
<span>IVA ({currentOrder.ivaRate * 100}%):</span>
<span className="font-medium">{currentOrder.ivaAmount.toFixed(2)}</span>
</div>
<div className="flex justify-between">
<span>Envío:</span>
<span className="font-medium">{selectedShipping.cost.toFixed(2)}</span>
</div>
<div className="flex justify-between text-xl font-bold mt-4">
<span>Total:</span>
<span>{currentOrder.total.toFixed(2)}</span>
</div>
</div>
</div>
{/* Shipping and Payment */}
<div className="bg-card p-6 rounded-lg shadow-lg">
<h2 className="text-2xl font-semibold mb-4 flex items-center"><Truck className="mr-2" /> Detalles del Envío</h2>
<div className="space-y-3 mb-6">
{shippingOptions.map(option => (
<label key={option.label} className="flex items-center space-x-2 cursor-pointer">
<input
type="radio"
name="shipping"
value={option.cost}
checked={selectedShipping.cost === option.cost}
onChange={() => setSelectedShipping(option)}
className="form-radio text-primary-cta"
/>
<span>{option.label} - {option.cost.toFixed(2)}</span>
</label>
))}
</div>
<h2 className="text-2xl font-semibold mb-4 flex items-center"><CreditCard className="mr-2" /> Método de Pago</h2>
<div className="space-y-3">
<button
className="w-full flex items-center justify-center px-6 py-3 border border-transparent text-base font-medium rounded-md text-white bg-[#5a67d8] hover:bg-[#434d9b]"
onClick={() => alert("Integración con Stripe Checkout (Visa, Mastercard, Apple Pay, Google Pay)")}
>
Pagar con Stripe
</button>
<button
className="w-full flex items-center justify-center px-6 py-3 border border-transparent text-base font-medium rounded-md text-white bg-[#0070ba] hover:bg-[#005a9c]"
onClick={() => alert("Integración con PayPal")}
>
Pagar con PayPal
</button>
</div>
<button
className="mt-6 w-full flex items-center justify-center px-6 py-3 border border-transparent text-base font-medium rounded-md text-white bg-primary-cta hover:bg-primary-cta/90"
onClick={handleConfirmOrder}
>
Confirmar Pedido
</button>
</div>
</div>
</main>
<div id="footer" data-section="footer">
<FooterLogoReveal
logoSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3EccHcmLBLfaDNDp5ChTlQGMJOM/uploaded-1780481858970-vnz8dv02.png"
logoAlt="Logo de Chente Ibéricos"
logoText="Chente © JAMONES CHENTACO S.L. Todos los derechos reservados."
leftLink={{
text: "Política de Privacidad", href: "/politica-privacidad"
}}
rightLink={{
text: "Aviso Legal", href: "/aviso-legal"
}}
/>
</div>
</ReactLenis>
</ThemeProvider>
);
}

View File

@@ -11,7 +11,7 @@ import ProductCardFour from '@/components/sections/product/ProductCardFour';
import TestimonialCardTen from '@/components/sections/testimonial/TestimonialCardTen';
import TextSplitAbout from '@/components/sections/about/TextSplitAbout';
import FeatureCardTwentyFour from '@/components/sections/feature/FeatureCardTwentyFour';
import { Award, Building2, Headphones, Leaf, ShieldCheck, Truck, Utensils, Package, ShoppingBag, Tag, Repeat, Users } from "lucide-react";
import { Award, Building2, Headphones, Leaf, ShieldCheck, Truck } from "lucide-react";
export default function LandingPage() {
return (
@@ -32,23 +32,25 @@ export default function LandingPage() {
<NavbarLayoutFloatingOverlay
navItems={[
{
name: "Inicio", id: "#home"},
name: "Inicio", id: "home"},
{
name: "Nuestra Historia", id: "#about"},
name: "Nuestra Historia", id: "about"},
{
name: "Productos", id: "#products"},
name: "Productos", id: "products"},
{
name: "Ventajas", id: "#features"},
name: "Ventajas", id: "features"},
{
name: "Profesionales", id: "#professionals"},
name: "Profesionales", id: "professionals"},
{
name: "Contacto", id: "#contact"},
name: "Admin", id: "/admin"},
{
name: "Contacto", id: "contact"},
]}
logoSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3EccHcmLBLfaDNDp5ChTlQGMJOM/uploaded-1780481858970-vnz8dv02.png"
logoAlt="Logo de Chente Ibéricos"
brandName="Chente"
button={{
text: "Contacto", href: "#contact"}}
text: "Contacto", href: "contact"}}
/>
</div>
@@ -58,11 +60,11 @@ export default function LandingPage() {
description="Tradición, calidad y sabor únicos desde el corazón de Salamanca."
buttons={[
{
text: "Ver Productos", href: "#products"},
text: "Ver Productos", href: "products"},
{
text: "Contactar", href: "#contact"},
text: "Contactar", href: "contact"},
{
text: "Nuestra Historia", href: "#about"},
text: "Nuestra Historia", href: "about"},
]}
slides={[
{
@@ -155,13 +157,13 @@ export default function LandingPage() {
{
id: "t1", title: "Un sabor que transporta a la dehesa", quote: "El jamón de Chente es simplemente espectacular. Cada loncha te transporta directamente a la dehesa salmantina. Calidad insuperable y un aroma inconfundible. ¡Repetiremos sin duda!", name: "Sofía García", role: "Chef Ejecutiva", imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-smiley-woman-holding-small-plant_23-2149412612.jpg", imageAlt: "Avatar de Sofía García"},
{
id: "t2", title: "Excelencia en cada corte", quote: "Como profesional de la hostelería, valoro la excelencia. Chente no solo cumple, sino que supera las expectativas. Sus productos son la estrella en nuestra carta. Atención y calidad de 10.", name: "Javier López", role: "Propietario de Restaurante", imageSrc: "http://img.b2bpic.net/free-photo/middle-age-senior-woman-wearing-apron-uniform-red-isolated-background-doing-happy-thumbs-up-gesture-with-hand-approving-expression-looking-camera-showing-success_839833-32756.jpg", imageAlt: "Avatar de Javier López"},
id: "t2", title: "Excelencia en cada corte", quote: "Como profesional de la hostelería, valoro la excelencia. Chente no solo cumple, sino que supera las expectativas. Sus productos son la estrella en nuestra carta. Atención y calidad de 10.", name: "Susana López ", role: "Propietario de Restaurante", imageSrc: "http://img.b2bpic.net/free-photo/middle-age-senior-woman-wearing-apron-uniform-red-isolated-background-doing-happy-thumbs-up-gesture-with-hand-approving-expression-looking-camera-showing-success_839833-32756.jpg", imageAlt: "Avatar de Javier López"},
{
id: "t3", title: "La auténtica joya ibérica", quote: "He probado muchos jamones, pero el 100% ibérico de bellota de Chente es una auténtica joya. La infiltración de grasa, el punto de sal, el buqué… todo perfecto. Indispensable en mi despensa gourmet.", name: "Elena Torres", role: "Gastrónoma y Crítica Culinaria", imageSrc: "http://img.b2bpic.net/free-photo/smiling-woman-tasting-snacks-buffet-table_1262-2008.jpg", imageAlt: "Avatar de Elena Torres"},
{
id: "t4", title: "Un partner de confianza", quote: "Para nuestro negocio, contar con un proveedor como Chente es fundamental. Productos de calidad constante, excelente servicio y una relación muy cercana. Son un partner indispensable.", name: "Miguel Ruíz", role: "Gerente de Hotel Boutique", imageSrc: "http://img.b2bpic.net/free-photo/confident-young-handsome-barber-wearing-uniform-combing-his-beard-isolated-purple-with-copy-space_141793-76922.jpg", imageAlt: "Avatar de Miguel Ruíz"},
{
id: "t5", title: "Siempre un acierto para regalar", quote: "Cuando quiero impresionar con un regalo, siempre elijo Chente. La presentación es impecable y la calidad de sus embutidos y paletas es un acierto seguro. Recibo siempre felicitaciones.", name: "Laura Fernández", role: "Empresaria y Clienta Habitual", imageSrc: "http://img.b2bpic.net/free-photo/cheerful-office-man-pointing-tablet-hands_23-2147787575.jpg", imageAlt: "Avatar de Laura Fernández"},
id: "t5", title: "Siempre un acierto para regalar", quote: "Cuando quiero impresionar con un regalo, siempre elijo Chente. La presentación es impecable y la calidad de sus embutidos y paletas es un acierto seguro. Recibo siempre felicitaciones.", name: "Rodrigo Fernández", role: "Empresario y cliente habitual", imageSrc: "http://img.b2bpic.net/free-photo/cheerful-office-man-pointing-tablet-hands_23-2147787575.jpg", imageAlt: "Avatar de Laura Fernández"},
]}
title="Lo que Nuestros Clientes Dicen"
description="La satisfacción de quienes ya han experimentado la calidad premium de los productos ibéricos Chente. Su confianza es nuestro mayor orgullo."
@@ -197,7 +199,7 @@ export default function LandingPage() {
]}
buttons={[
{
text: "Solicitar Información Profesional", href: "#contact"
text: "Solicitar Información Profesional", href: "contact"
}
]}
/>
@@ -211,7 +213,7 @@ export default function LandingPage() {
tag="Contacto"
title="Hablemos de Jamón Ibérico"
description="Contáctenos para cualquier consulta, pedido o para explorar oportunidades profesionales. Estaremos encantados de atenderle en JAMONES CHENTACO S.L. en Finca El Viñato, Carretera de Cespedosa Km 3, 37770 Guijuelo, Salamanca, España. También puede llamarnos al 647 96 19 85. Complete el formulario y nos pondremos en contacto con usted."
imageSrc="http://img.b2bpic.net/free-photo/beautiful-landscape-with-delimitation-concept_23-2149721818.jpg"
imageSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3EccHcmLBLfaDNDp5ChTlQGMJOM/uploaded-1780482876257-wbfrp3e4.jpg"
imageAlt="Ubicación de Chente en Guijuelo, Salamanca"
mediaAnimation="opacity"
mediaPosition="left"
@@ -235,4 +237,4 @@ export default function LandingPage() {
</ReactLenis>
</ThemeProvider>
);
}
}