Spaces:
Running
Running
Antigravity AI commited on
Commit ·
5fd5c53
1
Parent(s): 9a80bc9
Update menu to white background, add history section and 13 example products
Browse files- public/images/burger.png +2 -2
- public/images/pasta.png +2 -2
- public/images/pizza.png +2 -2
- public/images/risotto.png +3 -0
- public/images/steak.png +3 -0
- public/images/tacos.png +2 -2
- src/components/admin/DashboardOverview.jsx +17 -6
- src/pages/CustomerMenu.jsx +76 -131
public/images/burger.png
CHANGED
|
Git LFS Details
|
|
Git LFS Details
|
public/images/pasta.png
CHANGED
|
Git LFS Details
|
|
Git LFS Details
|
public/images/pizza.png
CHANGED
|
Git LFS Details
|
|
Git LFS Details
|
public/images/risotto.png
ADDED
|
Git LFS Details
|
public/images/steak.png
ADDED
|
Git LFS Details
|
public/images/tacos.png
CHANGED
|
Git LFS Details
|
|
Git LFS Details
|
src/components/admin/DashboardOverview.jsx
CHANGED
|
@@ -25,14 +25,25 @@ export default function DashboardOverview() {
|
|
| 25 |
const seedData = async () => {
|
| 26 |
if (!window.confirm('¿Deseas cargar toda la información de ejemplo en el sistema? Esto agregará productos, insumos y mesas.')) return;
|
| 27 |
|
| 28 |
-
// 1. Sembrar Menú
|
| 29 |
const menuRef = ref(db, 'menu');
|
| 30 |
const menuExamples = [
|
| 31 |
-
|
| 32 |
-
{ name: '
|
| 33 |
-
{ name: '
|
| 34 |
-
{ name: '
|
| 35 |
-
{ name: '
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 36 |
];
|
| 37 |
for (const item of menuExamples) { await set(push(menuRef), item); }
|
| 38 |
|
|
|
|
| 25 |
const seedData = async () => {
|
| 26 |
if (!window.confirm('¿Deseas cargar toda la información de ejemplo en el sistema? Esto agregará productos, insumos y mesas.')) return;
|
| 27 |
|
| 28 |
+
// 1. Sembrar Menú (8 Productos + 5 Especialidades)
|
| 29 |
const menuRef = ref(db, 'menu');
|
| 30 |
const menuExamples = [
|
| 31 |
+
// Productos (8)
|
| 32 |
+
{ name: 'Hamburgesa Clásica', price: 12.50, category: 'Fuertes', image: '/images/burger.png', active: true },
|
| 33 |
+
{ name: 'Pasta Pomodoro', price: 10.00, category: 'Pasta', image: '/images/pasta.png', active: true },
|
| 34 |
+
{ name: 'Tacos de Pollo', price: 9.00, category: 'Entradas', image: '/images/tacos.png', active: true },
|
| 35 |
+
{ name: 'Pizza Margherita', price: 14.00, category: 'Pizzas', image: '/images/pizza.png', active: true },
|
| 36 |
+
{ name: 'Ensalada César', price: 8.50, category: 'Entradas', image: 'https://images.unsplash.com/photo-1550304943-4f24f54ddde9?auto=format&fit=crop&q=80&w=1000', active: true },
|
| 37 |
+
{ name: 'Sopa de Tomate', price: 7.00, category: 'Entradas', image: 'https://images.unsplash.com/photo-1547592166-23ac45744acd?auto=format&fit=crop&q=80&w=1000', active: true },
|
| 38 |
+
{ name: 'Sandwich Gourmet', price: 11.00, category: 'Fuertes', image: 'https://images.unsplash.com/photo-1528735602780-2552fd46c7af?auto=format&fit=crop&q=80&w=1000', active: true },
|
| 39 |
+
{ name: 'Chocolate Muffin', price: 4.50, category: 'Postres', image: 'https://images.unsplash.com/photo-1582231222779-1adb0b322f84?auto=format&fit=crop&q=80&w=1000', active: true },
|
| 40 |
+
|
| 41 |
+
// Especialidades (5)
|
| 42 |
+
{ name: 'Ribeye Premium', price: 35.00, category: 'Especialidades', image: '/images/steak.png', active: true },
|
| 43 |
+
{ name: 'Risotto de Trufa', price: 28.00, category: 'Especialidades', image: '/images/risotto.png', active: true },
|
| 44 |
+
{ name: 'Salmón Glaseado', price: 26.00, category: 'Especialidades', image: 'https://images.unsplash.com/photo-1467003909585-2f8a72700288?auto=format&fit=crop&q=80&w=1000', active: true },
|
| 45 |
+
{ name: 'Pato a la Naranja', price: 32.00, category: 'Especialidades', image: 'https://images.unsplash.com/photo-1626082927389-6cd097cdc6ec?auto=format&fit=crop&q=80&w=1000', active: true },
|
| 46 |
+
{ name: 'Langosta Thermidor', price: 45.00, category: 'Especialidades', image: 'https://images.unsplash.com/photo-1553243599-c052f82958d2?auto=format&fit=crop&q=80&w=1000', active: true }
|
| 47 |
];
|
| 48 |
for (const item of menuExamples) { await set(push(menuRef), item); }
|
| 49 |
|
src/pages/CustomerMenu.jsx
CHANGED
|
@@ -37,12 +37,15 @@ export default function CustomerMenu() {
|
|
| 37 |
: menuItems.filter(item => item.category === activeCategory);
|
| 38 |
|
| 39 |
const isDark = menuTheme === 'dark';
|
|
|
|
|
|
|
|
|
|
| 40 |
const themeColors = {
|
| 41 |
-
bg: isDark ? '#050505' : '#f8f9fa',
|
| 42 |
-
text: isDark ? '#ffffff' : '#1a1a1a',
|
| 43 |
-
muted: isDark ? 'rgba(255,255,255,0.5)' : 'rgba(0,0,0,0.5)',
|
| 44 |
-
card: isDark ? 'rgba(255,255,255,0.02)' : 'rgba(255,255,255,0.8)',
|
| 45 |
-
border: isDark ? 'rgba(255,255,255,0.08)' : 'rgba(0,0,0,0.08)',
|
| 46 |
accent: '#FF6B6B',
|
| 47 |
accentGradient: 'linear-gradient(135deg, #FF6B6B 0%, #FF4757 100%)'
|
| 48 |
};
|
|
@@ -61,14 +64,15 @@ export default function CustomerMenu() {
|
|
| 61 |
<header style={{
|
| 62 |
position: 'fixed', top: 0, left: 0, width: '100%', zIndex: 1000,
|
| 63 |
padding: '20px 40px', display: 'flex', justifyContent: 'space-between', alignItems: 'center',
|
| 64 |
-
background: 'rgba(
|
|
|
|
| 65 |
}}>
|
| 66 |
<div style={{ display: 'flex', alignItems: 'center', gap: '12px' }}>
|
| 67 |
-
<img src="/images/logo.png" alt="Logo" style={{ height: '40px', filter:
|
| 68 |
-
<span style={{ fontSize: '1.5rem', fontWeight: '900', letterSpacing: '-1px' }}>RESTAURANT<span style={{color: themeColors.accent}}>OS</span></span>
|
| 69 |
</div>
|
| 70 |
-
<div style={{ display: 'flex', gap: '15px' }}>
|
| 71 |
-
<button onClick={() => navigate('/login')} style={{ background: 'none', border: 'none', color:
|
| 72 |
<div style={{ position: 'relative', cursor: 'pointer' }}>
|
| 73 |
<Utensils size={24} />
|
| 74 |
{cartCount > 0 && <span style={{ position: 'absolute', top: '-8px', right: '-8px', background: themeColors.accent, color: '#fff', borderRadius: '50%', width: '18px', height: '18px', fontSize: '0.7rem', display: 'flex', alignItems: 'center', justifyContent: 'center', fontWeight: '800' }}>{cartCount}</span>}
|
|
@@ -76,57 +80,62 @@ export default function CustomerMenu() {
|
|
| 76 |
</div>
|
| 77 |
</header>
|
| 78 |
|
| 79 |
-
{/* Hero Section
|
| 80 |
<section style={{
|
| 81 |
-
height: '
|
| 82 |
-
background: `linear-gradient(rgba(
|
| 83 |
backgroundSize: 'cover', backgroundPosition: 'center', backgroundAttachment: 'fixed'
|
| 84 |
}}>
|
| 85 |
<div style={{ textAlign: 'center', padding: '0 20px', maxWidth: '900px' }} className="animate-fade-in">
|
| 86 |
-
<
|
| 87 |
-
|
| 88 |
-
borderRadius: '40px', background: 'rgba(255,107,107,0.1)', border: '1px solid rgba(255,107,107,0.2)',
|
| 89 |
-
color: themeColors.accent, fontWeight: '700', fontSize: '0.85rem', marginBottom: '2rem', textTransform: 'uppercase', letterSpacing: '2px'
|
| 90 |
-
}}>
|
| 91 |
-
<ChefHat size={16} /> Experiencia Gastronómica Única
|
| 92 |
-
</div>
|
| 93 |
-
<h1 style={{ fontSize: '5rem', fontWeight: '900', marginBottom: '1.5rem', letterSpacing: '-3px', lineHeight: '0.9' }}>
|
| 94 |
-
Sabor que despierta tus <span className="text-gradient">sentidos.</span>
|
| 95 |
</h1>
|
| 96 |
-
<p style={{ fontSize: '1.4rem', color:
|
| 97 |
-
|
| 98 |
</p>
|
| 99 |
-
|
| 100 |
-
|
| 101 |
-
|
| 102 |
-
|
| 103 |
-
|
| 104 |
-
|
| 105 |
-
|
| 106 |
-
</
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 107 |
</div>
|
| 108 |
</div>
|
| 109 |
</section>
|
| 110 |
|
| 111 |
-
{/* Main
|
| 112 |
<main style={{ maxWidth: '1400px', margin: '0 auto', padding: '80px 40px' }}>
|
| 113 |
|
| 114 |
-
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 115 |
<div style={{
|
| 116 |
-
|
| 117 |
-
|
| 118 |
-
background: 'rgba(0,0,0,0.05)', padding: '10px', borderRadius: '50px', backdropFilter: 'blur(10px)',
|
| 119 |
-
width: 'fit-content', margin: '0 auto 60px'
|
| 120 |
}}>
|
| 121 |
{categories.map(cat => (
|
| 122 |
<button
|
| 123 |
key={cat}
|
| 124 |
onClick={() => setActiveCategory(cat)}
|
| 125 |
style={{
|
| 126 |
-
padding: '12px 28px', borderRadius: '40px', border: 'none', cursor: 'pointer',
|
| 127 |
-
background: activeCategory === cat ? themeColors.accentGradient : '
|
| 128 |
-
color: activeCategory === cat ? '#fff' :
|
| 129 |
-
fontWeight: '700', transition: 'all 0.3s
|
| 130 |
whiteSpace: 'nowrap', fontSize: '0.95rem'
|
| 131 |
}}
|
| 132 |
>
|
|
@@ -135,73 +144,51 @@ export default function CustomerMenu() {
|
|
| 135 |
))}
|
| 136 |
</div>
|
| 137 |
|
| 138 |
-
{/*
|
| 139 |
<div style={{
|
| 140 |
display: 'grid',
|
| 141 |
-
gridTemplateColumns: 'repeat(auto-fill, minmax(
|
| 142 |
gap: '40px'
|
| 143 |
}}>
|
| 144 |
{filteredItems.map(item => (
|
| 145 |
<div key={item.id} style={{
|
| 146 |
-
background:
|
| 147 |
-
border:
|
|
|
|
| 148 |
position: 'relative'
|
| 149 |
}} className="menu-card-hover">
|
| 150 |
|
| 151 |
-
{
|
| 152 |
-
<div style={{ height: '300px', overflow: 'hidden', position: 'relative' }}>
|
| 153 |
<img
|
| 154 |
src={item.image || 'https://images.unsplash.com/photo-1546069901-ba9599a7e63c?auto=format&fit=crop&q=80&w=1760'}
|
| 155 |
alt={item.name}
|
| 156 |
-
style={{ width: '100%', height: '100%', objectFit: 'cover'
|
| 157 |
-
className="card-image"
|
| 158 |
/>
|
| 159 |
<div style={{
|
| 160 |
position: 'absolute', top: '20px', right: '20px',
|
| 161 |
-
background: 'rgba(
|
| 162 |
borderRadius: '30px', fontWeight: '900', fontSize: '1.2rem', backdropFilter: 'blur(10px)',
|
| 163 |
-
boxShadow: '0 10px 20px rgba(0,0,0,0.
|
| 164 |
}}>
|
| 165 |
${item.price}
|
| 166 |
</div>
|
| 167 |
-
{item.category === 'Fuertes' && (
|
| 168 |
-
<div style={{
|
| 169 |
-
position: 'absolute', top: '20px', left: '20px',
|
| 170 |
-
background: themeColors.accentGradient, color: '#fff', padding: '5px 15px',
|
| 171 |
-
borderRadius: '30px', fontSize: '0.7rem', fontWeight: '800', textTransform: 'uppercase'
|
| 172 |
-
}}>
|
| 173 |
-
Popular
|
| 174 |
-
</div>
|
| 175 |
-
)}
|
| 176 |
</div>
|
| 177 |
|
| 178 |
-
{
|
| 179 |
-
|
| 180 |
-
<
|
| 181 |
-
|
| 182 |
-
<h3 style={{ fontSize: '1.8rem', fontWeight: '800', marginBottom: '8px' }}>{item.name}</h3>
|
| 183 |
-
<div style={{ display: 'flex', gap: '15px', color: themeColors.muted, fontSize: '0.85rem' }}>
|
| 184 |
-
<span style={{ display: 'flex', alignItems: 'center', gap: '5px' }}><Clock size={14} /> 25 min</span>
|
| 185 |
-
<span style={{ display: 'flex', alignItems: 'center', gap: '5px' }}><ChefHat size={14} /> Chef Selection</span>
|
| 186 |
-
</div>
|
| 187 |
-
</div>
|
| 188 |
-
</div>
|
| 189 |
-
<p style={{ color: themeColors.muted, fontSize: '1rem', lineHeight: '1.6', marginBottom: '25px' }}>
|
| 190 |
-
Preparado magistralmente con técnicas artesanales y los mejores ingredientes seleccionados para garantizar una explosión de sabor.
|
| 191 |
</p>
|
| 192 |
<div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>
|
| 193 |
-
<
|
| 194 |
-
{[1,2,3,4,5].map(s => <Star key={s} size={14} fill={themeColors.accent} color={themeColors.accent} />)}
|
| 195 |
-
</div>
|
| 196 |
<button
|
| 197 |
onClick={() => setCartCount(c => c + 1)}
|
| 198 |
style={{
|
| 199 |
-
background:
|
| 200 |
-
width: '
|
| 201 |
-
display: 'flex', alignItems: 'center', justifyContent: 'center'
|
| 202 |
-
boxShadow: '0 10px 20px rgba(255,107,107,0.2)'
|
| 203 |
}}>
|
| 204 |
-
<Plus size={
|
| 205 |
</button>
|
| 206 |
</div>
|
| 207 |
</div>
|
|
@@ -210,56 +197,13 @@ export default function CustomerMenu() {
|
|
| 210 |
</div>
|
| 211 |
</main>
|
| 212 |
|
| 213 |
-
{/* QR & Info Section */}
|
| 214 |
-
<section style={{
|
| 215 |
-
background: isDark ? 'rgba(255,255,255,0.02)' : 'rgba(0,0,0,0.02)',
|
| 216 |
-
padding: '100px 40px', borderTop: `1px solid ${themeColors.border}`
|
| 217 |
-
}}>
|
| 218 |
-
<div style={{ maxWidth: '1200px', margin: '0 auto', display: 'grid', gridTemplateColumns: '1fr 1fr', gap: '100px', alignItems: 'center' }}>
|
| 219 |
-
<div>
|
| 220 |
-
<h2 style={{ fontSize: '3rem', fontWeight: '900', marginBottom: '2rem', lineHeight: '1' }}>Lleva el menú en tu bolsillo.</h2>
|
| 221 |
-
<p style={{ fontSize: '1.2rem', color: themeColors.muted, marginBottom: '2.5rem' }}>
|
| 222 |
-
Escanea el código QR para acceder a nuestra carta digital actualizada en tiempo real, ver promociones exclusivas y realizar tu pedido.
|
| 223 |
-
</p>
|
| 224 |
-
<div style={{ display: 'flex', gap: '30px' }}>
|
| 225 |
-
<div style={{ textAlign: 'center' }}>
|
| 226 |
-
<div style={{ fontSize: '2.5rem', fontWeight: '900', color: themeColors.accent }}>100%</div>
|
| 227 |
-
<div style={{ fontSize: '0.8rem', textTransform: 'uppercase', letterSpacing: '1px', fontWeight: '700' }}>Digital</div>
|
| 228 |
-
</div>
|
| 229 |
-
<div style={{ textAlign: 'center' }}>
|
| 230 |
-
<div style={{ fontSize: '2.5rem', fontWeight: '900', color: themeColors.accent }}>0</div>
|
| 231 |
-
<div style={{ fontSize: '0.8rem', textTransform: 'uppercase', letterSpacing: '1px', fontWeight: '700' }}>Contacto</div>
|
| 232 |
-
</div>
|
| 233 |
-
<div style={{ textAlign: 'center' }}>
|
| 234 |
-
<div style={{ fontSize: '2.5rem', fontWeight: '900', color: themeColors.accent }}>24/7</div>
|
| 235 |
-
<div style={{ fontSize: '0.8rem', textTransform: 'uppercase', letterSpacing: '1px', fontWeight: '700' }}>Soporte</div>
|
| 236 |
-
</div>
|
| 237 |
-
</div>
|
| 238 |
-
</div>
|
| 239 |
-
<div style={{ display: 'flex', justifyContent: 'center' }}>
|
| 240 |
-
<div className="glass-card" style={{ padding: '40px', borderRadius: '40px', position: 'relative' }}>
|
| 241 |
-
<img src="/images/qr_menu.png" alt="QR Code" style={{ width: '300px', borderRadius: '20px' }} />
|
| 242 |
-
<div style={{ position: 'absolute', top: '-20px', right: '-20px', background: themeColors.accentGradient, padding: '15px', borderRadius: '50%', color: '#fff', fontWeight: '900' }}>SCAN</div>
|
| 243 |
-
</div>
|
| 244 |
-
</div>
|
| 245 |
-
</div>
|
| 246 |
-
</section>
|
| 247 |
-
|
| 248 |
{/* Modern Footer */}
|
| 249 |
-
<footer style={{ padding: '
|
| 250 |
-
<div style={{ maxWidth: '
|
| 251 |
-
<
|
| 252 |
-
<
|
| 253 |
-
<
|
| 254 |
-
|
| 255 |
-
</p>
|
| 256 |
-
<div style={{ display: 'flex', justifyContent: 'center', gap: '30px', marginBottom: '60px' }}>
|
| 257 |
-
<Instagram size={32} style={{ cursor: 'pointer', transition: 'transform 0.3s' }} />
|
| 258 |
-
<Facebook size={32} style={{ cursor: 'pointer', transition: 'transform 0.3s' }} />
|
| 259 |
-
<MessageSquare size={32} style={{ cursor: 'pointer', transition: 'transform 0.3s' }} />
|
| 260 |
-
</div>
|
| 261 |
-
<div style={{ fontSize: '0.9rem', color: themeColors.muted, borderTop: `1px solid ${themeColors.border}`, paddingTop: '40px' }}>
|
| 262 |
-
© {new Date().getFullYear()} Restaurant OS Premium Management System. Designed with Passion.
|
| 263 |
</div>
|
| 264 |
</div>
|
| 265 |
</footer>
|
|
@@ -268,3 +212,4 @@ export default function CustomerMenu() {
|
|
| 268 |
);
|
| 269 |
}
|
| 270 |
|
|
|
|
|
|
| 37 |
: menuItems.filter(item => item.category === activeCategory);
|
| 38 |
|
| 39 |
const isDark = menuTheme === 'dark';
|
| 40 |
+
// Forzamos modo claro si el usuario lo pidió, o usamos el tema de la DB
|
| 41 |
+
const forceLight = true;
|
| 42 |
+
|
| 43 |
const themeColors = {
|
| 44 |
+
bg: forceLight ? '#ffffff' : (isDark ? '#050505' : '#f8f9fa'),
|
| 45 |
+
text: forceLight ? '#1a1a1a' : (isDark ? '#ffffff' : '#1a1a1a'),
|
| 46 |
+
muted: forceLight ? '#666666' : (isDark ? 'rgba(255,255,255,0.5)' : 'rgba(0,0,0,0.5)'),
|
| 47 |
+
card: forceLight ? '#ffffff' : (isDark ? 'rgba(255,255,255,0.02)' : 'rgba(255,255,255,0.8)'),
|
| 48 |
+
border: forceLight ? '#eeeeee' : (isDark ? 'rgba(255,255,255,0.08)' : 'rgba(0,0,0,0.08)'),
|
| 49 |
accent: '#FF6B6B',
|
| 50 |
accentGradient: 'linear-gradient(135deg, #FF6B6B 0%, #FF4757 100%)'
|
| 51 |
};
|
|
|
|
| 64 |
<header style={{
|
| 65 |
position: 'fixed', top: 0, left: 0, width: '100%', zIndex: 1000,
|
| 66 |
padding: '20px 40px', display: 'flex', justifyContent: 'space-between', alignItems: 'center',
|
| 67 |
+
background: 'rgba(255,255,255,0.8)', backdropFilter: 'blur(20px)', borderBottom: `1px solid ${themeColors.border}`,
|
| 68 |
+
boxShadow: '0 2px 20px rgba(0,0,0,0.05)'
|
| 69 |
}}>
|
| 70 |
<div style={{ display: 'flex', alignItems: 'center', gap: '12px' }}>
|
| 71 |
+
<img src="/images/logo.png" alt="Logo" style={{ height: '40px', filter: 'invert(1)' }} />
|
| 72 |
+
<span style={{ fontSize: '1.5rem', fontWeight: '900', letterSpacing: '-1px', color: '#1a1a1a' }}>RESTAURANT<span style={{color: themeColors.accent}}>OS</span></span>
|
| 73 |
</div>
|
| 74 |
+
<div style={{ display: 'flex', gap: '15px', color: '#1a1a1a' }}>
|
| 75 |
+
<button onClick={() => navigate('/login')} style={{ background: 'none', border: 'none', color: 'inherit', cursor: 'pointer', fontWeight: '600' }}>Admin</button>
|
| 76 |
<div style={{ position: 'relative', cursor: 'pointer' }}>
|
| 77 |
<Utensils size={24} />
|
| 78 |
{cartCount > 0 && <span style={{ position: 'absolute', top: '-8px', right: '-8px', background: themeColors.accent, color: '#fff', borderRadius: '50%', width: '18px', height: '18px', fontSize: '0.7rem', display: 'flex', alignItems: 'center', justifyContent: 'center', fontWeight: '800' }}>{cartCount}</span>}
|
|
|
|
| 80 |
</div>
|
| 81 |
</header>
|
| 82 |
|
| 83 |
+
{/* Hero Section */}
|
| 84 |
<section style={{
|
| 85 |
+
height: '70vh', position: 'relative', display: 'flex', alignItems: 'center', justifyContent: 'center',
|
| 86 |
+
background: `linear-gradient(rgba(255,255,255,0.4), #ffffff), url('https://images.unsplash.com/photo-1514362545857-3bc16c4c7d1b?auto=format&fit=crop&q=80&w=2070')`,
|
| 87 |
backgroundSize: 'cover', backgroundPosition: 'center', backgroundAttachment: 'fixed'
|
| 88 |
}}>
|
| 89 |
<div style={{ textAlign: 'center', padding: '0 20px', maxWidth: '900px' }} className="animate-fade-in">
|
| 90 |
+
<h1 style={{ fontSize: '5rem', fontWeight: '900', marginBottom: '1.5rem', letterSpacing: '-3px', lineHeight: '0.9', color: '#1a1a1a' }}>
|
| 91 |
+
Nuestra <span style={{color: themeColors.accent}}>Historia</span> y Sabor.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 92 |
</h1>
|
| 93 |
+
<p style={{ fontSize: '1.4rem', color: '#666', maxWidth: '700px', margin: '0 auto', lineHeight: '1.5' }}>
|
| 94 |
+
Desde 1995, fusionando la tradición culinaria con la innovación moderna.
|
| 95 |
</p>
|
| 96 |
+
</div>
|
| 97 |
+
</section>
|
| 98 |
+
|
| 99 |
+
{/* History Section */}
|
| 100 |
+
<section style={{ padding: '100px 40px', background: '#fff' }}>
|
| 101 |
+
<div style={{ maxWidth: '1000px', margin: '0 auto', display: 'grid', gridTemplateColumns: '1fr 1fr', gap: '60px', alignItems: 'center' }}>
|
| 102 |
+
<div style={{ borderRadius: '30px', overflow: 'hidden', boxShadow: '0 30px 60px rgba(0,0,0,0.1)' }}>
|
| 103 |
+
<img src="https://images.unsplash.com/photo-1552566626-52f8b828add9?auto=format&fit=crop&q=80&w=1000" alt="History" style={{ width: '100%', display: 'block' }} />
|
| 104 |
+
</div>
|
| 105 |
+
<div>
|
| 106 |
+
<h2 style={{ fontSize: '2.5rem', fontWeight: '900', marginBottom: '1.5rem', color: '#1a1a1a' }}>Un Legado de Pasión</h2>
|
| 107 |
+
<p style={{ color: '#666', fontSize: '1.1rem', lineHeight: '1.8', marginBottom: '1.5rem' }}>
|
| 108 |
+
Lo que comenzó como un pequeño bistro familiar en el corazón de la ciudad, se ha transformado en un referente de la gastronomía contemporánea.
|
| 109 |
+
</p>
|
| 110 |
+
<p style={{ color: '#666', fontSize: '1.1rem', lineHeight: '1.8' }}>
|
| 111 |
+
Nuestra misión es simple: servir felicidad en cada plato, respetando los ingredientes y celebrando la creatividad de nuestro equipo.
|
| 112 |
+
</p>
|
| 113 |
</div>
|
| 114 |
</div>
|
| 115 |
</section>
|
| 116 |
|
| 117 |
+
{/* Main Menu Area */}
|
| 118 |
<main style={{ maxWidth: '1400px', margin: '0 auto', padding: '80px 40px' }}>
|
| 119 |
|
| 120 |
+
<div style={{ textAlign: 'center', marginBottom: '60px' }}>
|
| 121 |
+
<h2 style={{ fontSize: '3rem', fontWeight: '900', color: '#1a1a1a' }}>Nuestra Carta Digital</h2>
|
| 122 |
+
<div style={{ width: '80px', height: '5px', background: themeColors.accentGradient, margin: '20px auto', borderRadius: '10px' }}></div>
|
| 123 |
+
</div>
|
| 124 |
+
|
| 125 |
+
{/* Categories */}
|
| 126 |
<div style={{
|
| 127 |
+
display: 'flex', justifyContent: 'center', gap: '12px', marginBottom: '60px',
|
| 128 |
+
padding: '10px', overflowX: 'auto'
|
|
|
|
|
|
|
| 129 |
}}>
|
| 130 |
{categories.map(cat => (
|
| 131 |
<button
|
| 132 |
key={cat}
|
| 133 |
onClick={() => setActiveCategory(cat)}
|
| 134 |
style={{
|
| 135 |
+
padding: '12px 28px', borderRadius: '40px', border: activeCategory === cat ? 'none' : '1px solid #ddd', cursor: 'pointer',
|
| 136 |
+
background: activeCategory === cat ? themeColors.accentGradient : '#fff',
|
| 137 |
+
color: activeCategory === cat ? '#fff' : '#666',
|
| 138 |
+
fontWeight: '700', transition: 'all 0.3s ease',
|
| 139 |
whiteSpace: 'nowrap', fontSize: '0.95rem'
|
| 140 |
}}
|
| 141 |
>
|
|
|
|
| 144 |
))}
|
| 145 |
</div>
|
| 146 |
|
| 147 |
+
{/* Menu Grid */}
|
| 148 |
<div style={{
|
| 149 |
display: 'grid',
|
| 150 |
+
gridTemplateColumns: 'repeat(auto-fill, minmax(380px, 1fr))',
|
| 151 |
gap: '40px'
|
| 152 |
}}>
|
| 153 |
{filteredItems.map(item => (
|
| 154 |
<div key={item.id} style={{
|
| 155 |
+
background: '#fff', borderRadius: '30px', overflow: 'hidden',
|
| 156 |
+
border: '1px solid #eee', transition: 'all 0.4s ease',
|
| 157 |
+
boxShadow: '0 10px 30px rgba(0,0,0,0.03)',
|
| 158 |
position: 'relative'
|
| 159 |
}} className="menu-card-hover">
|
| 160 |
|
| 161 |
+
<div style={{ height: '280px', overflow: 'hidden', position: 'relative' }}>
|
|
|
|
| 162 |
<img
|
| 163 |
src={item.image || 'https://images.unsplash.com/photo-1546069901-ba9599a7e63c?auto=format&fit=crop&q=80&w=1760'}
|
| 164 |
alt={item.name}
|
| 165 |
+
style={{ width: '100%', height: '100%', objectFit: 'cover' }}
|
|
|
|
| 166 |
/>
|
| 167 |
<div style={{
|
| 168 |
position: 'absolute', top: '20px', right: '20px',
|
| 169 |
+
background: 'rgba(255,255,255,0.9)', color: '#1a1a1a', padding: '8px 20px',
|
| 170 |
borderRadius: '30px', fontWeight: '900', fontSize: '1.2rem', backdropFilter: 'blur(10px)',
|
| 171 |
+
boxShadow: '0 10px 20px rgba(0,0,0,0.05)'
|
| 172 |
}}>
|
| 173 |
${item.price}
|
| 174 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 175 |
</div>
|
| 176 |
|
| 177 |
+
<div style={{ padding: '30px' }}>
|
| 178 |
+
<h3 style={{ fontSize: '1.6rem', fontWeight: '800', marginBottom: '10px', color: '#1a1a1a' }}>{item.name}</h3>
|
| 179 |
+
<p style={{ color: '#666', fontSize: '0.95rem', lineHeight: '1.6', marginBottom: '20px' }}>
|
| 180 |
+
Una delicia preparada con ingredientes frescos para deleitar tu paladar.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 181 |
</p>
|
| 182 |
<div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>
|
| 183 |
+
<span style={{ fontSize: '0.8rem', color: themeColors.accent, fontWeight: '800', textTransform: 'uppercase' }}>{item.category}</span>
|
|
|
|
|
|
|
| 184 |
<button
|
| 185 |
onClick={() => setCartCount(c => c + 1)}
|
| 186 |
style={{
|
| 187 |
+
background: '#f5f5f5', border: 'none', color: '#1a1a1a',
|
| 188 |
+
width: '40px', height: '40px', borderRadius: '12px', cursor: 'pointer',
|
| 189 |
+
display: 'flex', alignItems: 'center', justifyContent: 'center'
|
|
|
|
| 190 |
}}>
|
| 191 |
+
<Plus size={20} />
|
| 192 |
</button>
|
| 193 |
</div>
|
| 194 |
</div>
|
|
|
|
| 197 |
</div>
|
| 198 |
</main>
|
| 199 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 200 |
{/* Modern Footer */}
|
| 201 |
+
<footer style={{ padding: '80px 40px', borderTop: '1px solid #eee', textAlign: 'center', background: '#fafafa' }}>
|
| 202 |
+
<div style={{ maxWidth: '600px', margin: '0 auto' }}>
|
| 203 |
+
<h2 style={{ fontSize: '2rem', fontWeight: '900', marginBottom: '1rem', color: '#1a1a1a' }}>RESTAURANT OS</h2>
|
| 204 |
+
<p style={{ color: '#666', marginBottom: '30px' }}>Pasión por la cocina, amor por el servicio.</p>
|
| 205 |
+
<div style={{ fontSize: '0.85rem', color: '#999' }}>
|
| 206 |
+
© {new Date().getFullYear()} Gourmet Experience. Todos los derechos reservados.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 207 |
</div>
|
| 208 |
</div>
|
| 209 |
</footer>
|
|
|
|
| 212 |
);
|
| 213 |
}
|
| 214 |
|
| 215 |
+
|