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]) => (