From d9743719760de0288434da75ff3878f52319e25a Mon Sep 17 00:00:00 2001 From: juancho Date: Sat, 14 Feb 2026 00:36:50 +0000 Subject: [PATCH] Inicio --- index.html | 265 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 265 insertions(+) create mode 100644 index.html diff --git a/index.html b/index.html new file mode 100644 index 0000000..9fed8c3 --- /dev/null +++ b/index.html @@ -0,0 +1,265 @@ +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 ( + + ); +} \ No newline at end of file