File size: 13,423 Bytes
564baf9
 
 
76823f0
4e002a8
564baf9
 
ef5357e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
564baf9
ef5357e
76823f0
 
9a80bc9
564baf9
 
 
1a3d3dd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
564baf9
1a3d3dd
 
 
 
 
 
 
564baf9
 
 
 
 
 
 
ef5357e
5fd5c53
 
564baf9
5fd5c53
 
 
 
 
9a80bc9
 
564baf9
 
 
 
 
 
 
 
9a80bc9
 
564baf9
 
9a80bc9
 
 
 
5fd5c53
 
9a80bc9
 
4e002a8
5fd5c53
9a80bc9
5fd5c53
 
9a80bc9
 
 
 
 
 
 
5fd5c53
564baf9
5fd5c53
 
9a80bc9
564baf9
9a80bc9
5fd5c53
 
9a80bc9
5fd5c53
 
9a80bc9
5fd5c53
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
564baf9
 
 
 
5fd5c53
9a80bc9
 
5fd5c53
 
 
 
 
 
564baf9
5fd5c53
 
564baf9
 
 
 
 
 
5fd5c53
 
 
 
9a80bc9
564baf9
 
 
 
 
 
 
5fd5c53
564baf9
 
5fd5c53
9a80bc9
564baf9
 
9a80bc9
5fd5c53
 
 
9a80bc9
 
564baf9
5fd5c53
564baf9
 
 
5fd5c53
564baf9
 
9a80bc9
5fd5c53
9a80bc9
5fd5c53
564baf9
 
 
 
 
5fd5c53
 
 
 
9a80bc9
 
5fd5c53
9a80bc9
 
 
5fd5c53
 
 
9a80bc9
5fd5c53
9a80bc9
564baf9
 
 
 
 
9a80bc9
76823f0
9a80bc9
5fd5c53
 
 
 
 
 
564baf9
 
 
 
 
 
 
9a80bc9
5fd5c53
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
import React, { useState, useEffect } from 'react';
import { useNavigate } from 'react-router-dom';
import { db } from '../firebase/config';
import { ref, onValue, push, set } from 'firebase/database';
import { Utensils, Star, Clock, MapPin, ChefHat, Instagram, Facebook, ArrowRight, MessageSquare, Send, Plus } from 'lucide-react';

export default function CustomerMenu() {
  const defaultItems = [
    { id: 'h1', name: 'Hamburgesa Clásica', price: 12.50, category: 'Fuertes', image: '/images/burger.png', active: true },
    { id: 'p1', name: 'Pasta Pomodoro', price: 10.00, category: 'Pasta', image: '/images/pasta.png', active: true },
    { id: 't1', name: 'Tacos de Pollo', price: 9.00, category: 'Entradas', image: '/images/tacos.png', active: true },
    { id: 'z1', name: 'Pizza Margherita', price: 14.00, category: 'Pizzas', image: '/images/pizza.png', active: true },
    { id: 'e1', 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 },
    { id: 's1', 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 },
    { id: 'g1', 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 },
    { id: 'm1', 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 },
    { id: 'sp1', name: 'Ribeye Premium', price: 35.00, category: 'Especialidades', image: '/images/steak.png', active: true },
    { id: 'sp2', name: 'Risotto de Trufa', price: 28.00, category: 'Especialidades', image: '/images/risotto.png', active: true },
    { id: 'sp3', 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 },
    { id: 'sp4', 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 },
    { id: 'sp5', 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 }
  ];

  const [menuItems, setMenuItems] = useState(defaultItems);
  const [categories, setCategories] = useState(['Todos', 'Entradas', 'Fuertes', 'Pizzas', 'Pasta', 'Postres', 'Especialidades']);
  const [activeCategory, setActiveCategory] = useState('Todos');
  const [menuTheme, setMenuTheme] = useState('light');
  const [feedback, setFeedback] = useState({ rating: 5, comment: '' });
  const [submitted, setSubmitted] = useState(false);
  const [cartCount, setCartCount] = useState(0);
  const navigate = useNavigate();

  useEffect(() => {
    try {
      const menuRef = ref(db, 'menu');
      onValue(menuRef, (snapshot) => {
        const data = snapshot.val();
        if (data) {
          const list = Object.keys(data).map(id => ({ id, ...data[id] })).filter(item => item.active !== false);
          if (list.length > 0) {
            setMenuItems(list);
            const cats = [...new Set(list.map(item => item.category))];
            setCategories(['Todos', ...cats]);
          }
        }
      }, (error) => {
        console.error("Error cargando menú de Firebase, usando locales:", error);
      });

      const themeRef = ref(db, 'config/menuTheme');
      onValue(themeRef, (snapshot) => {
        if (snapshot.exists()) setMenuTheme(snapshot.val());
      });
    } catch (err) {
      console.error("Error en useEffect de CustomerMenu:", err);
    }
  }, []);

  const filteredItems = activeCategory === 'Todos' 
    ? menuItems 
    : menuItems.filter(item => item.category === activeCategory);

  const isDark = menuTheme === 'dark';
  // Forzamos modo claro si el usuario lo pidió
  const forceLight = true; 
  
  const themeColors = {
    bg: forceLight ? '#ffffff' : (isDark ? '#050505' : '#f8f9fa'),
    text: forceLight ? '#1a1a1a' : (isDark ? '#ffffff' : '#1a1a1a'),
    muted: forceLight ? '#666666' : (isDark ? 'rgba(255,255,255,0.5)' : 'rgba(0,0,0,0.5)'),
    card: forceLight ? '#ffffff' : (isDark ? 'rgba(255,255,255,0.02)' : 'rgba(255,255,255,0.8)'),
    border: forceLight ? '#eeeeee' : (isDark ? 'rgba(255,255,255,0.08)' : 'rgba(0,0,0,0.08)'),
    accent: '#FF6B6B',
    accentGradient: 'linear-gradient(135deg, #FF6B6B 0%, #FF4757 100%)'
  };

  return (
    <div style={{ 
      minHeight: '100vh', 
      background: themeColors.bg, 
      color: themeColors.text, 
      fontFamily: "'Outfit', sans-serif",
      transition: 'all 0.4s cubic-bezier(0.4, 0, 0.2, 1)',
      overflowX: 'hidden'
    }}>
      
      {/* Floating Header */}
      <header style={{
        position: 'fixed', top: 0, left: 0, width: '100%', zIndex: 1000,
        padding: '20px 40px', display: 'flex', justifyContent: 'space-between', alignItems: 'center',
        background: 'rgba(255,255,255,0.8)', backdropFilter: 'blur(20px)', borderBottom: `1px solid ${themeColors.border}`,
        boxShadow: '0 2px 20px rgba(0,0,0,0.05)'
      }}>
        <div style={{ display: 'flex', alignItems: 'center', gap: '12px' }}>
          <img src="/images/logo.png" alt="Logo" style={{ height: '40px' }} />
          <span style={{ fontSize: '1.5rem', fontWeight: '900', letterSpacing: '-1px', color: '#1a1a1a' }}>RESTAURANT<span style={{color: themeColors.accent}}>OS</span></span>
        </div>
        <div style={{ display: 'flex', gap: '15px', color: '#1a1a1a' }}>
          <button onClick={() => navigate('/login')} style={{ background: 'none', border: 'none', color: 'inherit', cursor: 'pointer', fontWeight: '600' }}>Admin</button>
          <div style={{ position: 'relative', cursor: 'pointer' }}>
             <Utensils size={24} />
             {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>}
          </div>
        </div>
      </header>

      {/* Hero Section */}
      <section style={{ 
        height: '70vh', position: 'relative', display: 'flex', alignItems: 'center', justifyContent: 'center',
        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')`,
        backgroundSize: 'cover', backgroundPosition: 'center', backgroundAttachment: 'fixed'
      }}>
        <div style={{ textAlign: 'center', padding: '0 20px', maxWidth: '900px' }} className="animate-fade-in">
          <h1 style={{ fontSize: '5rem', fontWeight: '900', marginBottom: '1.5rem', letterSpacing: '-3px', lineHeight: '0.9', color: '#1a1a1a' }}>
            Nuestra <span style={{color: themeColors.accent}}>Historia</span> y Sabor.
          </h1>
          <p style={{ fontSize: '1.4rem', color: '#666', maxWidth: '700px', margin: '0 auto', lineHeight: '1.5' }}>
            Desde 1995, fusionando la tradición culinaria con la innovación moderna.
          </p>
        </div>
      </section>

      {/* History Section */}
      <section style={{ padding: '100px 40px', background: '#fff' }}>
        <div style={{ maxWidth: '1000px', margin: '0 auto', display: 'grid', gridTemplateColumns: '1fr 1fr', gap: '60px', alignItems: 'center' }}>
          <div style={{ borderRadius: '30px', overflow: 'hidden', boxShadow: '0 30px 60px rgba(0,0,0,0.1)' }}>
            <img src="https://images.unsplash.com/photo-1552566626-52f8b828add9?auto=format&fit=crop&q=80&w=1000" alt="History" style={{ width: '100%', display: 'block' }} />
          </div>
          <div>
            <h2 style={{ fontSize: '2.5rem', fontWeight: '900', marginBottom: '1.5rem', color: '#1a1a1a' }}>Un Legado de Pasión</h2>
            <p style={{ color: '#666', fontSize: '1.1rem', lineHeight: '1.8', marginBottom: '1.5rem' }}>
              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.
            </p>
            <p style={{ color: '#666', fontSize: '1.1rem', lineHeight: '1.8' }}>
              Nuestra misión es simple: servir felicidad en cada plato, respetando los ingredientes y celebrando la creatividad de nuestro equipo.
            </p>
          </div>
        </div>
      </section>

      {/* Main Menu Area */}
      <main style={{ maxWidth: '1400px', margin: '0 auto', padding: '80px 40px' }}>
        
        <div style={{ textAlign: 'center', marginBottom: '60px' }}>
          <h2 style={{ fontSize: '3rem', fontWeight: '900', color: '#1a1a1a' }}>Nuestra Carta Digital</h2>
          <div style={{ width: '80px', height: '5px', background: themeColors.accentGradient, margin: '20px auto', borderRadius: '10px' }}></div>
        </div>

        {/* Categories */}
        <div style={{ 
          display: 'flex', justifyContent: 'center', gap: '12px', marginBottom: '60px',
          padding: '10px', overflowX: 'auto'
        }}>
          {categories.map(cat => (
            <button
              key={cat}
              onClick={() => setActiveCategory(cat)}
              style={{
                padding: '12px 28px', borderRadius: '40px', border: activeCategory === cat ? 'none' : '1px solid #ddd', cursor: 'pointer',
                background: activeCategory === cat ? themeColors.accentGradient : '#fff',
                color: activeCategory === cat ? '#fff' : '#666',
                fontWeight: '700', transition: 'all 0.3s ease',
                whiteSpace: 'nowrap', fontSize: '0.95rem'
              }}
            >
              {cat}
            </button>
          ))}
        </div>

        {/* Menu Grid */}
        <div style={{ 
          display: 'grid', 
          gridTemplateColumns: 'repeat(auto-fill, minmax(380px, 1fr))', 
          gap: '40px' 
        }}>
          {filteredItems.map(item => (
            <div key={item.id} style={{ 
              background: '#fff', borderRadius: '30px', overflow: 'hidden',
              border: '1px solid #eee', transition: 'all 0.4s ease',
              boxShadow: '0 10px 30px rgba(0,0,0,0.03)',
              position: 'relative'
            }} className="menu-card-hover">
              
              <div style={{ height: '280px', overflow: 'hidden', position: 'relative' }}>
                <img 
                  src={item.image || 'https://images.unsplash.com/photo-1546069901-ba9599a7e63c?auto=format&fit=crop&q=80&w=1760'} 
                  alt={item.name} 
                  style={{ width: '100%', height: '100%', objectFit: 'cover' }}
                />
                <div style={{ 
                  position: 'absolute', top: '20px', right: '20px', 
                  background: 'rgba(255,255,255,0.9)', color: '#1a1a1a', padding: '8px 20px', 
                  borderRadius: '30px', fontWeight: '900', fontSize: '1.2rem', backdropFilter: 'blur(10px)',
                  boxShadow: '0 10px 20px rgba(0,0,0,0.05)'
                }}>
                  ${item.price}
                </div>
              </div>

              <div style={{ padding: '30px' }}>
                <h3 style={{ fontSize: '1.6rem', fontWeight: '800', marginBottom: '10px', color: '#1a1a1a' }}>{item.name}</h3>
                <p style={{ color: '#666', fontSize: '0.95rem', lineHeight: '1.6', marginBottom: '20px' }}>
                  Una delicia preparada con ingredientes frescos para deleitar tu paladar.
                </p>
                <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>
                   <span style={{ fontSize: '0.8rem', color: themeColors.accent, fontWeight: '800', textTransform: 'uppercase' }}>{item.category}</span>
                   <button 
                    onClick={() => setCartCount(c => c + 1)}
                    style={{ 
                      background: '#f5f5f5', border: 'none', color: '#1a1a1a', 
                      width: '40px', height: '40px', borderRadius: '12px', cursor: 'pointer',
                      display: 'flex', alignItems: 'center', justifyContent: 'center'
                    }}>
                     <Plus size={20} />
                   </button>
                </div>
              </div>
            </div>
          ))}
        </div>
      </main>

      {/* Modern Footer */}
      <footer style={{ padding: '80px 40px', borderTop: '1px solid #eee', textAlign: 'center', background: '#fafafa' }}>
        <div style={{ maxWidth: '600px', margin: '0 auto' }}>
          <h2 style={{ fontSize: '2rem', fontWeight: '900', marginBottom: '1rem', color: '#1a1a1a' }}>RESTAURANT OS</h2>
          <p style={{ color: '#666', marginBottom: '30px' }}>Pasión por la cocina, amor por el servicio.</p>
          <div style={{ fontSize: '0.85rem', color: '#999' }}>
            © {new Date().getFullYear()} Gourmet Experience. Todos los derechos reservados.
          </div>
        </div>
      </footer>

    </div>
  );
}