import React, { useState, useEffect } from 'react'; import { User, MessageSquare, Palette, Smartphone, X, ChevronRight, ExternalLink } from 'lucide-react'; // --- COMPONENTE PRINCIPAL --- export default function App() { const [userData, setUserData] = useState(null); const [platformData, setPlatformData] = useState(null); const [themeData, setThemeData] = useState(null); const [chatData, setChatData] = useState(null); // Estado para el Modal const [selectedCategory, setSelectedCategory] = useState(null); useEffect(() => { const tg = window.Telegram?.WebApp; if (tg && tg.initDataUnsafe && Object.keys(tg.initDataUnsafe).length > 0) { // --- ENTORNO REAL DE TELEGRAM --- tg.ready(); tg.expand(); // Configurar colores de la barra de estado de Telegram if (tg.setHeaderColor) tg.setHeaderColor('#3d0091'); if (tg.setBackgroundColor) tg.setBackgroundColor('#121212'); setUserData(tg.initDataUnsafe.user); setChatData({ start_param: tg.initDataUnsafe.start_param || 'N/A', chat_type: tg.initDataUnsafe.chat_type || 'private', chat_instance: tg.initDataUnsafe.chat_instance || 'N/A', }); setThemeData(tg.themeParams); setPlatformData({ platform: tg.platform, version: tg.version, viewportHeight: tg.viewportHeight, colorScheme: tg.colorScheme }); } else { // --- MODO DESARROLLO (MOCK DATA) --- console.log("Modo desarrollo: Cargando datos Mock"); setUserData({ id: 987654321, first_name: "Dev", last_name: "Tester", username: "dev_tester", language_code: "en", is_premium: false, photo_url: null }); setChatData({ start_param: "debug_mode_on", chat_type: "supergroup", chat_instance: "1122334455" }); setChatData({ start_param: "referral_source_ads", chat_type: "private", chat_instance: "84758473829102" }); setThemeData({ bg_color: "#121212", text_color: "#ffffff", hint_color: "#999999", link_color: "#7c4dff", button_color: "#3d0091", button_text_color: "#ffffff" }); setPlatformData({ platform: "ios", version: "7.0", viewportHeight: 640, colorScheme: "dark" }); } }, []); // Función para cerrar el modal const closeModal = () => setSelectedCategory(null); // Renderizado de lista de detalles const renderDetails = (data) => { if (!data) return

Sin datos disponibles.

; return Object.entries(data).map(([key, value]) => (
{key.replace(/_/g, ' ')} {value !== null && value !== undefined ? value.toString() : 'N/A'}
)); }; return (
{/* --- HEADER CURVO --- */}
{/* Avatar con anillo animado */}
{userData?.photo_url ? ( User ) : ( {userData?.first_name ? userData.first_name[0] : 'U'} )}

Hola, {userData?.first_name || 'Usuario'}

{userData?.username && (
@{userData.username}
)}
{/* --- CONTENIDO PRINCIPAL --- */}
Panel de Control
{/* GRID 2x2 - USO DE TAILWIND GRID QUE ES MUCHO MÁS ROBUSTO */}
{/* TARJETA 1: USUARIO */} } label="USUARIO" color="bg-purple-500/10" borderColor="border-purple-500/20" onClick={() => setSelectedCategory({ title: 'Datos de Usuario', data: userData, icon: })} /> {/* TARJETA 2: CHAT */} } label="CHAT" color="bg-pink-500/10" borderColor="border-pink-500/20" onClick={() => setSelectedCategory({ title: 'Contexto Chat', data: chatData, icon: })} /> {/* TARJETA 3: TEMA */} } label="TEMA" color="bg-emerald-500/10" borderColor="border-emerald-500/20" onClick={() => setSelectedCategory({ title: 'Apariencia', data: themeData, icon: })} /> {/* TARJETA 4: SISTEMA */} } label="SISTEMA" color="bg-orange-500/10" borderColor="border-orange-500/20" onClick={() => setSelectedCategory({ title: 'Dispositivo', data: platformData, icon: })} />
{/* Botón de documentación */}
{/* --- MODAL PERSONALIZADO (Sin librerías pesadas) --- */} {selectedCategory && (
{/* Overlay oscuro */}
{/* Contenido del Modal */}
{/* Cabecera del Modal */}
{selectedCategory.icon}

{selectedCategory.title}

{/* Cuerpo del Modal */}
{renderDetails(selectedCategory.data)}
{/* Pie del Modal */}
)}
); } // --- COMPONENTE DE TARJETA REUTILIZABLE --- // Este componente garantiza la forma cuadrada con 'aspect-square' function CardButton({ icon, label, color, borderColor, onClick }) { return ( ); }