Files
moon/components/FullMoonDescriptions.tsx
Puechberty Arthur 49fd31f4db first commit
2026-03-30 23:07:36 +02:00

212 lines
13 KiB
TypeScript

'use client';
import { useMemo } from 'react';
import { useLocale } from './LocaleProvider';
import { ts } from '@/lib/i18n';
import { getFullMoonsForYear, FULL_MOON_NAMES } from '@/lib/lunar';
const MOON_DESCRIPTIONS: Record<number, Record<string, { cultural: string; effects: string; ritual: string }>> = {
1: {
en: {
cultural: "Named by Native Americans for the howling wolves of winter. In Celtic tradition, it's the Quiet Moon. Hindu cultures associate it with Paush Purnima, a time of spiritual reflection.",
effects: "Winter full moons appear higher and brighter in the sky. Tidal ranges increase, and nocturnal animals become more active during cold clear nights.",
ritual: "A time for setting intentions for the new year, meditation by moonlight, and journaling about personal goals."
},
fr: {
cultural: "Nommée par les Amérindiens pour les loups hurlants de l'hiver. Chez les Celtes, c'est la Lune Tranquille. Les cultures hindoues l'associent à Paush Purnima.",
effects: "Les pleines lunes d'hiver apparaissent plus hautes et brillantes. Les marées augmentent et les animaux nocturnes sont plus actifs.",
ritual: "Moment idéal pour fixer ses intentions, méditer au clair de lune et réfléchir à ses objectifs personnels."
}
},
2: {
en: {
cultural: "Named for heavy February snowfall. Also called the Hunger Moon by some tribes, as food was scarce. In Chinese tradition, it's associated with the Lantern Festival.",
effects: "Snow reflects moonlight, creating exceptionally bright nights. Ocean tides remain strong, and migration patterns begin shifting.",
ritual: "Time for purification rituals, releasing old habits, and preparing for the coming spring renewal."
},
fr: {
cultural: "Nommée pour les chutes de neige de février. Appelée aussi Lune de la Faim. En Chine, elle est associée à la Fête des Lanternes.",
effects: "La neige reflète la lumière lunaire, créant des nuits exceptionnellement brillantes. Les marées restent fortes.",
ritual: "Temps de purification, abandon des vieilles habitudes et préparation au renouveau printanier."
}
},
3: {
en: {
cultural: "Named after earthworms emerging as soil thaws. Also known as the Sap Moon (maple sap flows) and the Crow Moon (crows signal spring).",
effects: "Spring equinox tides combine with the full moon for dramatic coastal changes. Birds begin migration, influenced by moonlit navigation.",
ritual: "A time for spring cleaning, both physical and spiritual. Plant seeds of intention and embrace new beginnings."
},
fr: {
cultural: "Nommée d'après les vers de terre qui émergent au dégel. Aussi appelée Lune de la Sève et Lune du Corbeau.",
effects: "Les marées d'équinoxe combinées à la pleine lune créent des changements côtiers spectaculaires.",
ritual: "Temps du nettoyage de printemps, physique et spirituel. Plantez des graines d'intentions."
}
},
4: {
en: {
cultural: "Named for pink wildflowers (phlox) blooming in spring. In Japan, it coincides with hanami (cherry blossom viewing) celebrations.",
effects: "Warming waters respond to spring tides. Coral spawning events worldwide are synchronized with this full moon.",
ritual: "Celebrate growth and beauty. Create art by moonlight, spend time in nature, and practice gratitude."
},
fr: {
cultural: "Nommée pour les fleurs sauvages roses (phlox). Au Japon, elle coïncide avec le hanami (observation des cerisiers en fleurs).",
effects: "Les eaux se réchauffent et les marées de printemps stimulent la ponte des coraux dans le monde entier.",
ritual: "Célébrez la croissance et la beauté. Créez de l'art au clair de lune et pratiquez la gratitude."
}
},
5: {
en: {
cultural: "Named for abundant spring flowers. Vesak, the most sacred Buddhist festival celebrating Buddha's birth, falls on this full moon.",
effects: "Maximum biodiversity activity. Nocturnal pollination peaks, fireflies appear, and many marine species spawn.",
ritual: "Honor abundance and connection to nature. Create flower offerings, dance under the moon, and express creativity."
},
fr: {
cultural: "Nommée pour les fleurs printanières abondantes. Vesak, fête bouddhiste de la naissance de Bouddha, tombe durant cette pleine lune.",
effects: "Activité maximale de biodiversité. Pollinisation nocturne à son pic, apparition des lucioles.",
ritual: "Honorez l'abondance. Créez des offrandes florales, dansez sous la lune et exprimez votre créativité."
}
},
6: {
en: {
cultural: "Named for strawberry harvest season. In Europe, it's the Rose Moon or Mead Moon. Hindu Vat Purnima celebrates marital devotion.",
effects: "Summer solstice proximity creates unique low-hanging amber moons. Turtles use moonlight for beach nesting navigation.",
ritual: "Celebrate love and relationships. Make strawberry mead, gather with loved ones, and honor summer's arrival."
},
fr: {
cultural: "Nommée pour la saison des fraises. En Europe, c'est la Lune Rose. Le Vat Purnima hindou célèbre la dévotion conjugale.",
effects: "Proximité du solstice d'été créant des lunes ambrées basses. Les tortues utilisent la lumière lunaire pour nicher.",
ritual: "Célébrez l'amour. Préparez de l'hydromel aux fraises et honorez l'arrivée de l'été."
}
},
7: {
en: {
cultural: "Named for bucks growing new antlers. Also the Thunder Moon for summer storms. In Hindu tradition, Guru Purnima honors spiritual teachers.",
effects: "Warm summer waters amplify tidal effects. Dolphins and whales show increased activity during full moon nights.",
ritual: "Express gratitude to mentors and teachers. Reflect on personal growth and strength gained during the year."
},
fr: {
cultural: "Nommée pour les cerfs qui développent de nouveaux bois. Aussi la Lune du Tonnerre. Guru Purnima honore les maîtres spirituels.",
effects: "Les eaux chaudes d'été amplifient les marées. Dauphins et baleines sont plus actifs les nuits de pleine lune.",
ritual: "Exprimez votre gratitude envers vos mentors. Réfléchissez à votre croissance personnelle."
}
},
8: {
en: {
cultural: "Named for Great Lakes sturgeon fishing season. Also the Green Corn Moon. In Sri Lanka, Nikini Poya commemorates the first Buddhist council.",
effects: "Late summer full moons create spectacular reflections on calm waters. Fish feeding patterns peak at night.",
ritual: "Celebrate harvest abundance. Prepare seasonal foods, give thanks, and share your bounty with others."
},
fr: {
cultural: "Nommée pour la saison de pêche à l'esturgeon. Aussi la Lune du Maïs Vert. Au Sri Lanka, Nikini Poya commémore le premier concile bouddhiste.",
effects: "Les pleines lunes de fin d'été créent des reflets spectaculaires sur les eaux calmes.",
ritual: "Célébrez l'abondance de la récolte. Préparez des repas de saison et partagez avec les autres."
}
},
9: {
en: {
cultural: "Named because it rises near sunset during harvest, providing extra light for farmers. The most famous full moon in many cultures worldwide.",
effects: "Appears unusually large and orange near the horizon. Strongest combined gravitational pull with autumn equinox tides.",
ritual: "The quintessential moon for harvest celebrations, Thanksgiving traditions, and honoring the Earth's abundance."
},
fr: {
cultural: "Nommée car elle se lève près du coucher du soleil pendant la moisson, offrant de la lumière aux agriculteurs. La pleine lune la plus célèbre.",
effects: "Paraît exceptionnellement grande et orange près de l'horizon. Force gravitationnelle maximale avec les marées d'équinoxe.",
ritual: "La lune par excellence pour les célébrations de récolte et pour honorer l'abondance de la Terre."
}
},
10: {
en: {
cultural: "Named because hunters tracked prey by autumn moonlight. In Chinese culture, this full moon period includes the Double Ninth Festival.",
effects: "Crisp autumn air provides exceptional clarity for moongazing. Migratory birds use the full moon for nocturnal navigation.",
ritual: "Plan for the winter ahead. Focus on determination, strategy, and gathering resources — physical and spiritual."
},
fr: {
cultural: "Nommée car les chasseurs traquaient leur proie au clair de lune. En Chine, cette période inclut la Fête du Double Neuf.",
effects: "L'air frais d'automne offre une clarté exceptionnelle. Les oiseaux migrateurs utilisent la pleine lune pour naviguer.",
ritual: "Planifiez pour l'hiver. Concentrez-vous sur la détermination et la collecte de ressources."
}
},
11: {
en: {
cultural: "Named for beaver trapping season before winter. Also the Frost Moon. In Hindu tradition, Kartik Purnima involves ceremonial lamp floating.",
effects: "Longer nights make this moon visible for up to 15 hours. Cold waters produce stronger tidal forces.",
ritual: "Time for building foundations, creating warmth and community, and preparing for the introspective winter months."
},
fr: {
cultural: "Nommée pour la saison de piégeage des castors. Aussi la Lune du Gel. Kartik Purnima hindou implique des lampes flottantes.",
effects: "Les longues nuits rendent cette lune visible jusqu'à 15 heures. Les eaux froides créent des marées plus fortes.",
ritual: "Temps de construire des fondations, créer de la chaleur et se préparer à l'hiver introspectif."
}
},
12: {
en: {
cultural: "Named for cold December nights. Also the Long Night Moon (longest nights of the year). In Buddhism, Bodhi Day (enlightenment) often falls near this moon.",
effects: "Highest position in the sky of any full moon. Winter ice reflects moonlight, creating shimmering landscapes.",
ritual: "Time for deep reflection, letting go of the past year, and meditating on inner light during the longest nights."
},
fr: {
cultural: "Nommée pour les nuits froides de décembre. Aussi la Lune de la Longue Nuit. Le Jour de Bodhi bouddhiste tombe souvent près de cette lune.",
effects: "Position la plus haute dans le ciel. La glace hivernale reflète la lumière, créant des paysages scintillants.",
ritual: "Temps de réflexion profonde, lâcher prise sur l'année passée et méditer sur la lumière intérieure."
}
},
};
export default function FullMoonDescriptions() {
const { locale } = useLocale();
const year = new Date().getFullYear();
const fullMoons = useMemo(() => getFullMoonsForYear(year), [year]);
const lang = (locale === 'fr') ? 'fr' : 'en';
return (
<section id="fullmoons" aria-label="Full Moon Names and Traditions" className="section-container">
<div className="text-center mb-10">
<h2 className="section-title">{ts('fullmoons_title', locale)}</h2>
<p className="section-subtitle mx-auto">{ts('fullmoons_subtitle', locale)}</p>
</div>
<div className="grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-6">
{fullMoons.map((moon, i) => {
const name = FULL_MOON_NAMES[moon.month]?.[locale as keyof typeof FULL_MOON_NAMES[1]] || FULL_MOON_NAMES[moon.month]?.en;
const desc = MOON_DESCRIPTIONS[moon.month]?.[lang] || MOON_DESCRIPTIONS[moon.month]?.['en'];
const monthName = moon.date.toLocaleDateString(locale, { month: 'long' });
return (
<article key={i} className="glass-card p-6 flex flex-col">
<div className="flex items-start gap-4 mb-4">
<div className="text-4xl">🌕</div>
<div>
<h3 className="text-xl font-bold text-yellow-200">{name}</h3>
<p className="text-sm text-white/50 capitalize">{monthName} {year}</p>
<p className="text-xs text-indigo-300 mt-1">
{moon.date.toLocaleDateString(locale, { day: 'numeric', month: 'short' })} {' '}
{moon.date.toLocaleTimeString(locale, { hour: '2-digit', minute: '2-digit' })}
</p>
</div>
</div>
{desc && (
<div className="space-y-3 text-sm flex-1">
<div>
<h4 className="text-indigo-300 font-semibold mb-1">🌍 {ts('culture_native', locale)}</h4>
<p className="text-white/60 leading-relaxed">{desc.cultural}</p>
</div>
<div>
<h4 className="text-indigo-300 font-semibold mb-1">🌊 {ts('effects_title', locale)}</h4>
<p className="text-white/60 leading-relaxed">{desc.effects}</p>
</div>
<div>
<h4 className="text-indigo-300 font-semibold mb-1">🧘 Ritual</h4>
<p className="text-white/60 leading-relaxed">{desc.ritual}</p>
</div>
</div>
)}
</article>
);
})}
</div>
</section>
);
}