Manage Above & Beyond style inspirational messages that appear during breathing. Add new messages, adjust timing/styling, debug sync issues.
Manage the breathing-synchronized inspirational messages displayed above and below the globe.
| File | Purpose |
|---|---|
src/config/inspirationalMessages.ts |
Message content + add new quotes |
src/components/InspirationalText.tsx |
Component + animation logic |
src/components/GaiaUI.tsx |
Parent container (renders InspirationalText) |
Edit src/config/inspirationalMessages.ts:
export const MESSAGES: InspirationalMessage[] = [
// Add your message here:
{ top: 'Your Top Line', bottom: 'Your Bottom Line' },
];
DO:
DON'T:
// ✓ GOOD
{ top: 'We Are All', bottom: 'We Need' } // Unity, complete thought
{ top: 'This Moment', bottom: 'Is Ours' } // Presence, simple
// ✗ BAD
{ top: 'You Should Not', bottom: 'Be Afraid' } // Negative, imperative
{ top: 'What If We', bottom: 'Could Fly?' } // Question, abstract
Text syncs with the 16-second breathing cycle:
|-- Inhale (3s) --|-- Hold-in (5s) --|-- Exhale (5s) --|-- Hold-out (3s) --|
| fade in 0→1 | visible (1) | fade out 1→0 | hidden (0) |
Configuration:
CYCLES_PER_MESSAGE = 3 — Quotes rotate every 3 cycles (~48s)In InspirationalText.tsx:
const colors = {
text: '#5a4d42', // Text color
textGlow: 'rgba(201, 160, 108, 0.7)', // Warm glow
subtleGlow: 'rgba(255, 252, 245, 0.95)', // Light halo
backdropInner: 'rgba(253, 251, 247, 0.4)', // Center gradient
backdropOuter: 'rgba(253, 251, 247, 0)', // Edge (transparent)
};
If text doesn't appear/disappear correctly:
Check RAF loop in InspirationalText.tsx:
topWrapperRef and bottomWrapperRef must have opacity setVerify phase calculation:
Backdrop-filter gotcha:
backdrop-filter doesn't inherit parent opacity// src/config/inspirationalMessages.ts
export const CYCLES_PER_MESSAGE = 5; // 5 cycles = ~80 seconds
// src/components/InspirationalText.tsx
fontSize: 'clamp(1.6rem, 3.5vw, 2.8rem)', // min, preferred, max
backdropInner: 'rgba(253, 251, 247, 0.5)', // Increase 0.4 → 0.5
backdropFilter: 'blur(4px)', // Increase 3px → 4px
gap: 'min(38vh, 260px)', // Space between top/bottom text
marginTop: '-3vh', // Nudge top text up
marginBottom: '-3vh', // Nudge bottom text down