'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>
  );
}
