import React, { useState, useEffect } from ‘react’; import { Heart, ChevronRight, ChevronLeft, Check, Sparkles, BookOpen, Music, Coffee, Mail, Sun, Smile, Compass, Feather, Star } from ‘lucide-react’; const DAYS_DATA = [ { day: 1, icon: , emoji: «🌷», title: «¿Quién soy cuando no estoy siendo “la novia de alguien”?», objective: «Reconectar con su identidad.», activity: (

Mi mapa de mí

En una hoja (o en tu mente si prefieres), imagina un círculo en el centro con tu nombre. Alrededor de ese círculo, existen 6 espacios fundamentales:

  • Lo que me gusta
  • Lo que se me da bien
  • Lo que me da curiosidad
  • Lo que sueño
  • Lo que valoro
  • Lo que quiero descubrir de mí

Intenta pensar o escribir al menos 3 cosas en cada espacio. 🎨 Puedes hacerlo tan creativo como quieras.

), inputs: [ { id: ‘d1_q1’, label: ‘¿Qué cosas de mí siguen existiendo aunque hoy esté atravesando una ruptura?’, type: ‘textarea’ }, { id: ‘d1_q2’, label: ‘Elige una palabra que represente cómo quieres sentirte contigo misma durante estos días:’, type: ‘text’ } ] }, { day: 2, icon: , emoji: «🦋», title: «Mi cuerpo también sabe quién soy», objective: «Favorecer conexión corporal y seguridad.», activity: (

Playlist de mi energía

Crea una playlist de solo 3 canciones:

  1. Una canción que represente cómo te sientes hoy.
  2. Una canción que te haga sentir poderosa.
  3. Una canción que te haga sentir viva.

El Reto:

Pon la segunda canción y báilala durante 3 minutos. Sin mirarte al espejo, sin pensar en cómo te ves.

Solo pregúntate: ¿Cómo se siente mi cuerpo cuando dejo de intentar verme bien y simplemente me permito estar?

), inputs: [ { id: ‘d2_q1’, label: ‘Escribe tres palabras sobre cómo te sentiste al terminar:’, type: ‘text’, placeholder: ‘Palabra 1, Palabra 2, Palabra 3’ } ] }, { day: 3, icon: , emoji: «🌻», title: «Cita conmigo», objective: «Fomentar autonomía y demostrarte que puedes disfrutar de tu propia compañía.», activity: (

Hoy tendrás una cita contigo misma. Elige una actividad que normalmente harías acompañada:

🍦 Ir por un helado
🚶‍♀️ Caminar
🎁 Comprar algo pequeño
🌳 Sentarse en un parque
📚 Ir a una librería
☕ Tomarse algo
🎨 Pintar
✨ Visitar un lugar bonito

La única condición:

No hacerlo mientras hablas por chat con alguien. Tienes que estar realmente presente.

), inputs: [ { id: ‘d3_q1’, label: ‘Al regresar responde: ¿Qué descubrí de mí cuando no necesitaba que alguien estuviera conmigo para disfrutar?’, type: ‘textarea’ } ] }, { day: 4, icon: , emoji: «💌», title: «Lo que quiero volver a darme», objective: «Trabajar autoestima y necesidades emocionales.», activity: (

Carta de reparación

Vas a escribirte una carta. Háblate como le hablarías a una amiga que está pasando por una ruptura.

Puedes incluir:

  • Lo que reconoces que has sentido.
  • Lo que necesitas escuchar.
  • Lo que no quieres volver a permitir.
  • Lo que mereces recibir.
  • Lo que quieres recordar cuando vuelvas a extrañar.

No tiene que ser una carta bonita. Tiene que ser una carta honesta.

), inputs: [ { id: ‘d4_q1’, label: ‘Escribe tu carta aquí:’, type: ‘textarea’, placeholder: ‘Querida yo, sé que estos días han sido…’ } ] }, { day: 5, icon: , emoji: «🎈», title: «5 pequeñas cosas que todavía me dan placer», objective: «Reconectar con el placer cotidiano.», activity: (

Nota importante:

Placer no significa necesariamente diversión.

Durante el día de hoy, tienes que encontrar 5 momentos agradables, por pequeños que sean. Por ejemplo: sentir el sol, escuchar una canción, tomar una ducha larga, oler una crema…

), customRender: ‘day5’ }, { day: 6, icon: , emoji: «🪞», title: «El espejo que no habla de mi apariencia», objective: «Fortalecer autoestima más allá del aspecto físico.», activity: (

Frente a un espejo, obsérvate durante un minuto.

La regla:

No puedes hablar de tu cuerpo, peso, cabello, piel, ropa o belleza.

Después, completa 10 frases que empiecen con «Me gusta de mí…».

Ej: «Me gusta que soy curiosa», «Me gusta mi sentido del humor»…

), customRender: ‘day6’ }, { day: 7, icon: , emoji: «🧭», title: «Yo puedo elegir», objective: «Trabajar autonomía y sensación de capacidad.», activity: (

El día de las pequeñas decisiones.

Hoy debes tomar 5 decisiones conscientemente, sin preguntarle inmediatamente a otra persona qué deberías hacer.

Ejemplos: Qué ropa ponerte, qué desayunar, qué música escuchar, qué plan aceptar o rechazar.

Registra tus decisiones abajo:

), customRender: ‘day7’ }, { day: 8, icon: , emoji: «🌊», title: «Soltar no significa dejar de querer», objective: «Procesar la ruptura sin obligarte a “superarla”.», activity: (

El ritual de lo que dejo y lo que me llevo.

Anota en los dos espacios siguientes lo que decides soltar y lo que decides conservar de esta experiencia.

Lo que dejo: Expectativas, culpa, preguntas sin respuesta…
Lo que me llevo: Lo que aprendí, lo que descubrí de mí, lo que necesito…
), customRender: ‘day8’ }, { day: 9, icon: , emoji: «✨», title: «Haz algo que nunca hayas hecho», objective: «Recuperar curiosidad, espontaneidad y sensación de posibilidad.», activity: (

Hoy tienes que hacer algo nuevo. No tiene que ser algo enorme.

Puede ser: Aprender una coreografía, cocinar algo diferente, dibujar con una técnica nueva, probar un deporte, aprender palabras de otro idioma…

La regla: No importa si lo haces bien.

), inputs: [ { id: ‘d9_q1’, label: ‘¿Qué sentí al hacer algo sin saber previamente si sería buena?’, type: ‘textarea’ } ] } ]; function Flower(props) { return ( ) } export default function App() { const [currentDay, setCurrentDay] = useState(1); const [journal, setJournal] = useState({}); const [completedDays, setCompletedDays] = useState([]); const [isLoaded, setIsLoaded] = useState(false); // Cargar datos guardados al inicio useEffect(() => { const savedJournal = localStorage.getItem(‘miLugarSeguro_journal’); const savedCompleted = localStorage.getItem(‘miLugarSeguro_completed’); if (savedJournal) setJournal(JSON.parse(savedJournal)); if (savedCompleted) setCompletedDays(JSON.parse(savedCompleted)); setIsLoaded(true); }, []); // Guardar datos cuando cambian useEffect(() => { if (isLoaded) { localStorage.setItem(‘miLugarSeguro_journal’, JSON.stringify(journal)); localStorage.setItem(‘miLugarSeguro_completed’, JSON.stringify(completedDays)); } }, [journal, completedDays, isLoaded]); const handleInputChange = (id, value) => { setJournal(prev => ({ …prev, [id]: value })); }; const toggleComplete = (day) => { setCompletedDays(prev => prev.includes(day) ? prev.filter(d => d !== day) : […prev, day] ); }; if (!isLoaded) return null; const dayInfo = DAYS_DATA.find(d => d.day === currentDay); const isCompleted = completedDays.includes(currentDay); const progressPercentage = (completedDays.length / DAYS_DATA.length) * 100; const renderCustomDay = (dayId) => { switch(dayId) { case ‘day5’: return (

Hoy mi vida también tuvo…

{[1, 2, 3, 4, 5].map(num => ( handleInputChange(`d5_i${num}`, e.target.value)} placeholder={`${num}.`} className=»w-full p-3 rounded-xl border-stone-200 border bg-white focus:ring-2 focus:ring-rose-200 focus:border-rose-300 transition-all outline-none» /> ))}
); case ‘day6’: return (

Me gusta de mí…

{[1,2,3,4,5,6,7,8,9,10].map(num => ( handleInputChange(`d6_i${num}`, e.target.value)} placeholder={`${num}.`} className=»w-full p-2 rounded-lg border-stone-200 border bg-white text-sm focus:ring-2 focus:ring-teal-200 transition-all outline-none» /> ))}