From 96799e2afa1969183cd8a01f229d4d3ac0efadef Mon Sep 17 00:00:00 2001 From: fraxle Date: Tue, 7 Jul 2026 14:04:35 +0100 Subject: [PATCH] 3.2.3 Update and separate the yearly cosmic events. Set to display the next 4 rather than the next x months --- assets/css/ui.css | 35 +++- assets/js/app.js | 6 +- assets/js/events/almanac-calendar.js | 262 ++----------------------- assets/js/events/calendar/2026.js | 281 ++++++++++++++++++++++++++ assets/js/events/calendar/2027.js | 243 +++++++++++++++++++++++ assets/js/events/calendar/2028.js | 262 +++++++++++++++++++++++++ assets/js/events/calendar/2029.js | 265 +++++++++++++++++++++++++ assets/js/events/calendar/2030.js | 243 +++++++++++++++++++++++ assets/js/events/cosmic-calendar.js | 282 ++------------------------- 9 files changed, 1367 insertions(+), 512 deletions(-) create mode 100644 assets/js/events/calendar/2026.js create mode 100644 assets/js/events/calendar/2027.js create mode 100644 assets/js/events/calendar/2028.js create mode 100644 assets/js/events/calendar/2029.js create mode 100644 assets/js/events/calendar/2030.js diff --git a/assets/css/ui.css b/assets/css/ui.css index 70d91a6..7d62164 100644 --- a/assets/css/ui.css +++ b/assets/css/ui.css @@ -182,7 +182,8 @@ } .almanac-list { display: grid; - grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); + grid-template-columns: repeat(4, 1fr); + grid-auto-rows: 1fr; gap: 0; } .almanac-entry { @@ -190,10 +191,13 @@ align-items: flex-start; gap: 13px; padding: 13px 18px; - border-bottom: 1px solid #f0e4cc; border-right: 1px solid #f0e4cc; transition: background 0.15s; } +/* Desktop: single row of 4 — vertical dividers only, none on the far edge. */ +.almanac-entry:last-child { + border-right: none; +} .almanac-entry:hover { background: #fef8e8; } @@ -274,10 +278,37 @@ font-style: italic; } +/* ≤900px: fall back to a 2×2 grid so cards stay readable. */ +@media (max-width: 900px) { + .almanac-list { + grid-template-columns: repeat(2, 1fr); + } + .almanac-entry { + border-right: 1px solid #f0e4cc; + } + .almanac-entry:nth-child(2n) { + border-right: none; /* right edge of the grid */ + } + .almanac-entry:nth-child(-n + 2) { + border-bottom: 1px solid #f0e4cc; /* divider between the two rows */ + } +} + +/* ≤600px: single column. */ @media (max-width: 600px) { .almanac-list { grid-template-columns: 1fr; } + .almanac-entry, + .almanac-entry:nth-child(2n) { + border-right: none; + } + .almanac-entry { + border-bottom: 1px solid #f0e4cc; + } + .almanac-entry:last-child { + border-bottom: none; + } } /* ── EVENT BANNER — mobile fixes ────────────────────────────────────── */ diff --git a/assets/js/app.js b/assets/js/app.js index 20b2a64..cf5f746 100644 --- a/assets/js/app.js +++ b/assets/js/app.js @@ -1770,7 +1770,7 @@ export function UTCIForecast() { ${(() => { - const upcoming = getUpcomingEvents(location, 90); + const upcoming = getUpcomingEvents(location, 3650).slice(0, 4); const formatPeak = (iso) => { const d = new Date(iso + 'T00:00Z'); return d.toLocaleDateString('en-GB', { day: 'numeric', month: 'short', year: 'numeric', timeZone: 'UTC' }); @@ -1787,11 +1787,11 @@ export function UTCIForecast() {
🔭 What's Coming - Cosmic events · next 90 days · ${location.name} + Cosmic events · next 4 events · ${location.name}
${upcoming.length === 0 - ? html`
No major cosmic events in the next 90 days — clear skies ahead.
` + ? html`
No major cosmic events on the horizon — clear skies ahead.
` : upcoming.map(ev => html`
diff --git a/assets/js/events/almanac-calendar.js b/assets/js/events/almanac-calendar.js index cad4ef4..14f47fc 100644 --- a/assets/js/events/almanac-calendar.js +++ b/assets/js/events/almanac-calendar.js @@ -2,258 +2,32 @@ // almanac-calendar.js - Extended event calendar for the "What's Coming" // panel and getUpcomingEvents() export. // -// Includes all events from COSMIC_CALENDAR plus multi-year entries. +// The per-year data now lives in ./calendar/.js — each of those files +// exports an `almanac` array. This module concatenates them (chronological +// order) and provides the visibility-note and upcoming-events helpers. +// // Each entry has a 'latHint': // null = global / no hint // 'north' = better from northern latitudes // 'south' = better from southern latitudes // 'path:...' = specific eclipse path note +// +// To add a new year: create ./calendar/.js (copy an existing one), +// then import it below and add its `almanac` spread to ALMANAC_CALENDAR. // ------------------------------------------------------------------------ -export const ALMANAC_CALENDAR = [ - // 2026 events (covers rest of year from today) - { - id: 'lunar-eclipse-2026-mar', - emoji: '🌕', - title: 'Total Lunar Eclipse', - desc: 'The Moon turns deep red as it passes through Earth\'s shadow. Visible from Europe, Africa, and the Americas.', - start: '2026-03-03', peak: '2026-03-03', - color: '#3a0a0a', textColor: '#ffd8d8', - latHint: null, - type: 'eclipse', - }, - { - id: 'lyrids-2026', - emoji: '☄️', - title: 'Lyrid Meteor Shower', - desc: 'Up to 20 meteors/hour at peak. Active Apr 16–25, best after midnight from a dark site.', - start: '2026-04-16', peak: '2026-04-22', - color: '#2a1a5a', textColor: '#e8d8ff', - latHint: 'north', - type: 'meteor', - }, - { - id: 'eta-aquariids-2026', - emoji: '☄️', - title: 'Eta Aquariid Meteor Shower', - desc: 'Debris from Halley\'s Comet — up to 50/hour before dawn. Best from southern latitudes but visible worldwide.', - start: '2026-04-19', peak: '2026-05-06', - color: '#2a1a5a', textColor: '#e8d8ff', - latHint: 'south', - type: 'meteor', - }, - { - id: 'mars-conjunction-2026', - emoji: '🔴', - title: 'Mars & Venus Conjunction', - desc: 'Mars and Venus appear strikingly close in the evening sky — a beautiful naked-eye pairing.', - start: '2026-06-30', peak: '2026-07-01', - color: '#2a1520', textColor: '#ffc8d8', - latHint: null, - type: 'planetary', - }, - { - id: 'perseids-2026', - emoji: '☄️', - title: 'Perseid Meteor Shower', - desc: 'One of the best showers of the year — up to 100/hour at peak, no need for a telescope.', - start: '2026-07-17', peak: '2026-08-12', - color: '#3a1a00', textColor: '#ffe8c0', - latHint: 'north', - type: 'meteor', - }, - { - id: 'solar-eclipse-2026-aug', - emoji: '🌑', - title: 'Total Solar Eclipse', - desc: 'The path of totality crosses Spain, Iceland, and Greenland. Partial eclipse visible across most of Europe.', - start: '2026-08-12', peak: '2026-08-12', - color: '#1a0a2a', textColor: '#d8c8f8', - latHint: 'path:Spain, Iceland, Greenland — partial eclipse across UK & Europe', - type: 'eclipse', - }, - { - id: 'saturn-opposition-2026', - emoji: '🪐', - title: 'Saturn at Opposition', - desc: 'Saturn is at its closest and brightest — rings tilted beautifully toward Earth. Visible all night.', - start: '2026-09-23', peak: '2026-09-23', - color: '#1a2a3a', textColor: '#c8e8ff', - latHint: null, - type: 'planetary', - }, - { - id: 'orionids-2026', - emoji: '☄️', - title: 'Orionid Meteor Shower', - desc: 'Fast, bright meteors from Halley\'s Comet — up to 25/hour. Active Oct 2 – Nov 7.', - start: '2026-10-02', peak: '2026-10-21', - color: '#2a1a5a', textColor: '#e8d8ff', - latHint: null, - type: 'meteor', - }, - { - id: 'jupiter-opposition-2026', - emoji: '🪐', - title: 'Jupiter at Opposition', - desc: 'Jupiter at its closest — you can see its cloud bands and four Galilean moons with binoculars.', - start: '2026-10-08', peak: '2026-10-08', - color: '#1a2a3a', textColor: '#c8e8ff', - latHint: null, - type: 'planetary', - }, - { - id: 'leonids-2026', - emoji: '☄️', - title: 'Leonid Meteor Shower', - desc: 'Fast, bright meteors from comet Tempel-Tuttle. Up to 15/hour at peak.', - start: '2026-11-06', peak: '2026-11-17', - color: '#2a1a5a', textColor: '#e8d8ff', - latHint: null, - type: 'meteor', - }, - { - id: 'geminids-2026', - emoji: '☄️', - title: 'Geminid Meteor Shower', - desc: 'The finest shower of the year — up to 150 meteors/hour, visible even before midnight.', - start: '2026-12-04', peak: '2026-12-13', - color: '#3a1a00', textColor: '#ffe8c0', - latHint: 'north', - type: 'meteor', - }, - { - id: 'ursids-2026', - emoji: '☄️', - title: 'Ursid Meteor Shower', - desc: 'A quieter shower near the winter solstice — circumpolar, so best from northern latitudes.', - start: '2026-12-17', peak: '2026-12-22', - color: '#2a1a5a', textColor: '#e8d8ff', - latHint: 'north', - type: 'meteor', - }, +import { almanac as almanac2026 } from './calendar/2026.js'; +import { almanac as almanac2027 } from './calendar/2027.js'; +import { almanac as almanac2028 } from './calendar/2028.js'; +import { almanac as almanac2029 } from './calendar/2029.js'; +import { almanac as almanac2030 } from './calendar/2030.js'; - // -- 2027 ------------------------------------------------------------- - { - id: 'quadrantids-2027', - emoji: '☄️', - title: 'Quadrantid Meteor Shower', - desc: 'Up to 120 meteors/hour at peak — one of the strongest showers but with a very sharp peak. Best in the hours before dawn on 4 Jan.', - start: '2027-01-01', peak: '2027-01-04', - color: '#2a1a5a', textColor: '#e8d8ff', - latHint: 'north', - type: 'meteor', - }, - { - id: 'annular-solar-eclipse-2027-feb', - emoji: '🌑', - title: 'Annular Solar Eclipse', - desc: 'A "ring of fire" eclipse visible from parts of South America, Africa and the Indian Ocean. Partial eclipse across much of the southern hemisphere.', - start: '2027-02-06', peak: '2027-02-06', - color: '#1a0a2a', textColor: '#d8c8f8', - latHint: 'path:South America, southern Africa, Indian Ocean', - type: 'eclipse', - }, - { - id: 'mars-opposition-2027', - emoji: '🔴', - title: 'Mars at Opposition', - desc: 'Mars is at its closest and brightest — a vivid red beacon visible all night long. Good binoculars reveal its distinct colour.', - start: '2027-02-19', peak: '2027-02-19', - color: '#2a1520', textColor: '#ffc8d8', - latHint: null, - type: 'planetary', - }, - { - id: 'lyrids-2027', - emoji: '☄️', - title: 'Lyrid Meteor Shower', - desc: 'Up to 20 meteors/hour at peak. Note: bright waning gibbous moon may reduce visibility this year. Active Apr 16–25.', - start: '2027-04-16', peak: '2027-04-23', - color: '#2a1a5a', textColor: '#e8d8ff', - latHint: 'north', - type: 'meteor', - }, - { - id: 'eta-aquariids-2027', - emoji: '☄️', - title: 'Eta Aquariid Meteor Shower', - desc: 'Debris from Halley\'s Comet — up to 50/hour before dawn. New moon on 6 May means excellent dark skies this year.', - start: '2027-04-19', peak: '2027-05-05', - color: '#2a1a5a', textColor: '#e8d8ff', - latHint: 'south', - type: 'meteor', - }, - { - id: 'perseids-2027', - emoji: '☄️', - title: 'Perseid Meteor Shower', - desc: 'One of the best showers of the year — up to 100/hour at peak, no telescope needed. Active Jul 17 – Aug 24.', - start: '2027-07-17', peak: '2027-08-13', - color: '#3a1a00', textColor: '#ffe8c0', - latHint: 'north', - type: 'meteor', - }, - { - id: 'total-solar-eclipse-2027-aug', - emoji: '🌑', - title: 'Total Solar Eclipse', - desc: 'One of the longest total solar eclipses of the century. Path of totality crosses Morocco, Spain, Algeria, Libya, Egypt and Saudi Arabia.', - start: '2027-08-02', peak: '2027-08-02', - color: '#1a0a2a', textColor: '#d8c8f8', - latHint: 'path:Morocco, Spain, Algeria, Libya, Egypt, Saudi Arabia', - type: 'eclipse', - }, - { - id: 'venus-jupiter-conjunction-2027', - emoji: '🪐', - title: 'Venus & Jupiter Conjunction', - desc: 'Venus and Jupiter appear strikingly close together in the evening sky — a dazzling naked-eye pairing of the two brightest planets.', - start: '2027-08-23', peak: '2027-08-25', - color: '#1a2a3a', textColor: '#c8e8ff', - latHint: null, - type: 'planetary', - }, - { - id: 'orionids-2027', - emoji: '☄️', - title: 'Orionid Meteor Shower', - desc: 'Fast, bright meteors from Halley\'s Comet debris — up to 25/hour. Active Oct 2 – Nov 7.', - start: '2027-10-02', peak: '2027-10-21', - color: '#2a1a5a', textColor: '#e8d8ff', - latHint: null, - type: 'meteor', - }, - { - id: 'leonids-2027', - emoji: '☄️', - title: 'Leonid Meteor Shower', - desc: 'Fast meteors from comet Tempel-Tuttle. Up to 15/hour at peak. Active Nov 6–30.', - start: '2027-11-06', peak: '2027-11-17', - color: '#2a1a5a', textColor: '#e8d8ff', - latHint: null, - type: 'meteor', - }, - { - id: 'geminids-2027', - emoji: '☄️', - title: 'Geminid Meteor Shower', - desc: 'The finest shower of the year — up to 150 meteors/hour, visible even before midnight. Active Dec 4–20.', - start: '2027-12-04', peak: '2027-12-14', - color: '#3a1a00', textColor: '#ffe8c0', - latHint: 'north', - type: 'meteor', - }, - { - id: 'ursids-2027', - emoji: '☄️', - title: 'Ursid Meteor Shower', - desc: 'A quieter shower near the winter solstice — circumpolar, best from northern latitudes. Active Dec 17–26.', - start: '2027-12-17', peak: '2027-12-22', - color: '#2a1a5a', textColor: '#e8d8ff', - latHint: 'north', - type: 'meteor', - }, +export const ALMANAC_CALENDAR = [ + ...almanac2026, + ...almanac2027, + ...almanac2028, + ...almanac2029, + ...almanac2030, ]; // Returns a location-aware visibility note for an almanac entry. diff --git a/assets/js/events/calendar/2026.js b/assets/js/events/calendar/2026.js new file mode 100644 index 0000000..e7878b8 --- /dev/null +++ b/assets/js/events/calendar/2026.js @@ -0,0 +1,281 @@ +// ------------------------------------------------------------------------ +// calendar/2026.js - Cosmic & almanac events for 2026. +// +// `cosmic` -> feeds COSMIC_CALENDAR (active-event banners; has start/end). +// `almanac` -> feeds ALMANAC_CALENDAR ("What's Coming" panel; has peak). +// See ../cosmic-calendar.js and ../almanac-calendar.js for field docs. +// ------------------------------------------------------------------------ + +export const cosmic = [ + // -- METEOR SHOWERS -------------------------------------------------- + { + id: 'quadrantids-2026', + emoji: '☄️', + title: 'Quadrantid Meteor Shower', + message: 'The Quadrantid meteor shower is active — up to 120 meteors/hour at peak. Best after midnight in a dark sky.', + color: '#2a1a5a', + textColor: '#e8d8ff', + type: 'cosmic', + nightOnly: true, + start: '2026-01-01', end: '2026-01-05', peak: '2026-01-03', + }, + { + id: 'lyrids-2026', + emoji: '☄️', + title: 'Lyrid Meteor Shower', + message: 'The Lyrid meteor shower peaks tonight — up to 20 meteors/hour from a dark sky after midnight.', + color: '#2a1a5a', + textColor: '#e8d8ff', + type: 'cosmic', + nightOnly: true, + start: '2026-04-16', end: '2026-04-25', peak: '2026-04-22', + }, + { + id: 'eta-aquariids-2026', + emoji: '☄️', + title: 'Eta Aquariid Meteor Shower', + message: 'The Eta Aquariid shower peaks tonight — fragments of Halley\'s Comet, up to 50/hour before dawn.', + color: '#2a1a5a', + textColor: '#e8d8ff', + type: 'cosmic', + nightOnly: true, + start: '2026-04-19', end: '2026-05-28', peak: '2026-05-06', + }, + { + id: 'perseids-2026', + emoji: '☄️', + title: 'Perseid Meteor Shower', + message: 'The Perseids are active — one of the best showers of the year, up to 100 meteors/hour at peak.', + color: '#3a1a00', + textColor: '#ffe8c0', + type: 'cosmic', + nightOnly: true, + start: '2026-07-17', end: '2026-08-24', peak: '2026-08-12', + }, + { + id: 'orionids-2026', + emoji: '☄️', + title: 'Orionid Meteor Shower', + message: 'The Orionid shower peaks tonight — fast, bright meteors from Halley\'s Comet debris. Up to 25/hour.', + color: '#2a1a5a', + textColor: '#e8d8ff', + type: 'cosmic', + nightOnly: true, + start: '2026-10-02', end: '2026-11-07', peak: '2026-10-21', + }, + { + id: 'leonids-2026', + emoji: '☄️', + title: 'Leonid Meteor Shower', + message: 'The Leonid shower is active tonight — fast, bright meteors from comet Tempel-Tuttle.', + color: '#2a1a5a', + textColor: '#e8d8ff', + type: 'cosmic', + nightOnly: true, + start: '2026-11-06', end: '2026-11-30', peak: '2026-11-17', + }, + { + id: 'geminids-2026', + emoji: '☄️', + title: 'Geminid Meteor Shower', + message: 'The Geminids peak tonight — the best shower of the year, up to 150 meteors/hour. No moon interference.', + color: '#3a1a00', + textColor: '#ffe8c0', + type: 'cosmic', + nightOnly: true, + start: '2026-12-04', end: '2026-12-20', peak: '2026-12-13', + }, + { + id: 'ursids-2026', + emoji: '☄️', + title: 'Ursid Meteor Shower', + message: 'The Ursid shower peaks tonight — a quieter festive shower near the winter solstice.', + color: '#2a1a5a', + textColor: '#e8d8ff', + type: 'cosmic', + nightOnly: true, + start: '2026-12-17', end: '2026-12-26', peak: '2026-12-22', + }, + + // -- ECLIPSES -------------------------------------------------------- + { + id: 'solar-eclipse-2026-aug', + emoji: '🌑', + title: 'Total Solar Eclipse', + message: 'A total solar eclipse crosses Europe and North Africa today — look for rapid temperature drops and unusual animal behaviour even in partial zones.', + color: '#1a0a2a', + textColor: '#d8c8f8', + type: 'cosmic', + nightOnly: false, + start: '2026-08-12', end: '2026-08-12', + }, + { + id: 'lunar-eclipse-2026-mar', + emoji: '🌕', + title: 'Total Lunar Eclipse', + message: 'A total lunar eclipse is visible tonight — the Moon turns deep red (a "Blood Moon") as it passes through Earth\'s shadow.', + color: '#3a0a0a', + textColor: '#ffd8d8', + type: 'cosmic', + nightOnly: true, + start: '2026-03-03', end: '2026-03-03', + }, + + // -- PLANETARY EVENTS ------------------------------------------------ + { + id: 'saturn-opposition-2026', + emoji: '🪐', + title: 'Saturn at Opposition', + message: 'Saturn is at its closest and brightest tonight — visible all night long, rings tilted beautifully toward Earth.', + color: '#1a2a3a', + textColor: '#c8e8ff', + type: 'cosmic', + nightOnly: true, + start: '2026-09-23', end: '2026-09-23', + }, + { + id: 'jupiter-opposition-2026', + emoji: '🪐', + title: 'Jupiter at Opposition', + message: 'Jupiter is at its closest and brightest tonight — you can see its cloud bands with binoculars.', + color: '#1a2a3a', + textColor: '#c8e8ff', + type: 'cosmic', + nightOnly: true, + start: '2026-10-08', end: '2026-10-08', + }, + { + id: 'mars-conjunction-2026', + emoji: '🔴', + title: 'Mars & Venus Conjunction', + message: 'Mars and Venus are remarkably close in the evening sky tonight — a striking pair visible to the naked eye.', + color: '#2a1520', + textColor: '#ffc8d8', + type: 'cosmic', + nightOnly: true, + start: '2026-06-30', end: '2026-07-02', + }, +]; + +export const almanac = [ + { + id: 'lunar-eclipse-2026-mar', + emoji: '🌕', + title: 'Total Lunar Eclipse', + desc: 'The Moon turns deep red as it passes through Earth\'s shadow. Visible from Europe, Africa, and the Americas.', + start: '2026-03-03', peak: '2026-03-03', + color: '#3a0a0a', textColor: '#ffd8d8', + latHint: null, + type: 'eclipse', + }, + { + id: 'lyrids-2026', + emoji: '☄️', + title: 'Lyrid Meteor Shower', + desc: 'Up to 20 meteors/hour at peak. Active Apr 16–25, best after midnight from a dark site.', + start: '2026-04-16', peak: '2026-04-22', + color: '#2a1a5a', textColor: '#e8d8ff', + latHint: 'north', + type: 'meteor', + }, + { + id: 'eta-aquariids-2026', + emoji: '☄️', + title: 'Eta Aquariid Meteor Shower', + desc: 'Debris from Halley\'s Comet — up to 50/hour before dawn. Best from southern latitudes but visible worldwide.', + start: '2026-04-19', peak: '2026-05-06', + color: '#2a1a5a', textColor: '#e8d8ff', + latHint: 'south', + type: 'meteor', + }, + { + id: 'mars-conjunction-2026', + emoji: '🔴', + title: 'Mars & Venus Conjunction', + desc: 'Mars and Venus appear strikingly close in the evening sky — a beautiful naked-eye pairing.', + start: '2026-06-30', peak: '2026-07-01', + color: '#2a1520', textColor: '#ffc8d8', + latHint: null, + type: 'planetary', + }, + { + id: 'perseids-2026', + emoji: '☄️', + title: 'Perseid Meteor Shower', + desc: 'One of the best showers of the year — up to 100/hour at peak, no need for a telescope.', + start: '2026-07-17', peak: '2026-08-12', + color: '#3a1a00', textColor: '#ffe8c0', + latHint: 'north', + type: 'meteor', + }, + { + id: 'solar-eclipse-2026-aug', + emoji: '🌑', + title: 'Total Solar Eclipse', + desc: 'The path of totality crosses Spain, Iceland, and Greenland. Partial eclipse visible across most of Europe.', + start: '2026-08-12', peak: '2026-08-12', + color: '#1a0a2a', textColor: '#d8c8f8', + latHint: 'path:Spain, Iceland, Greenland — partial eclipse across UK & Europe', + type: 'eclipse', + }, + { + id: 'saturn-opposition-2026', + emoji: '🪐', + title: 'Saturn at Opposition', + desc: 'Saturn is at its closest and brightest — rings tilted beautifully toward Earth. Visible all night.', + start: '2026-09-23', peak: '2026-09-23', + color: '#1a2a3a', textColor: '#c8e8ff', + latHint: null, + type: 'planetary', + }, + { + id: 'orionids-2026', + emoji: '☄️', + title: 'Orionid Meteor Shower', + desc: 'Fast, bright meteors from Halley\'s Comet — up to 25/hour. Active Oct 2 – Nov 7.', + start: '2026-10-02', peak: '2026-10-21', + color: '#2a1a5a', textColor: '#e8d8ff', + latHint: null, + type: 'meteor', + }, + { + id: 'jupiter-opposition-2026', + emoji: '🪐', + title: 'Jupiter at Opposition', + desc: 'Jupiter at its closest — you can see its cloud bands and four Galilean moons with binoculars.', + start: '2026-10-08', peak: '2026-10-08', + color: '#1a2a3a', textColor: '#c8e8ff', + latHint: null, + type: 'planetary', + }, + { + id: 'leonids-2026', + emoji: '☄️', + title: 'Leonid Meteor Shower', + desc: 'Fast, bright meteors from comet Tempel-Tuttle. Up to 15/hour at peak.', + start: '2026-11-06', peak: '2026-11-17', + color: '#2a1a5a', textColor: '#e8d8ff', + latHint: null, + type: 'meteor', + }, + { + id: 'geminids-2026', + emoji: '☄️', + title: 'Geminid Meteor Shower', + desc: 'The finest shower of the year — up to 150 meteors/hour, visible even before midnight.', + start: '2026-12-04', peak: '2026-12-13', + color: '#3a1a00', textColor: '#ffe8c0', + latHint: 'north', + type: 'meteor', + }, + { + id: 'ursids-2026', + emoji: '☄️', + title: 'Ursid Meteor Shower', + desc: 'A quieter shower near the winter solstice — circumpolar, so best from northern latitudes.', + start: '2026-12-17', peak: '2026-12-22', + color: '#2a1a5a', textColor: '#e8d8ff', + latHint: 'north', + type: 'meteor', + }, +]; diff --git a/assets/js/events/calendar/2027.js b/assets/js/events/calendar/2027.js new file mode 100644 index 0000000..8796bfb --- /dev/null +++ b/assets/js/events/calendar/2027.js @@ -0,0 +1,243 @@ +// ------------------------------------------------------------------------ +// calendar/2027.js - Cosmic & almanac events for 2027. +// See ./2026.js for the shape of each array. +// ------------------------------------------------------------------------ + +export const cosmic = [ + // -- METEOR SHOWERS -------------------------------------------------- + { + id: 'quadrantids-2027', + emoji: '☄️', + title: 'Quadrantid Meteor Shower', + message: 'The Quadrantid meteor shower is active — up to 120 meteors/hour at peak. Best in the hours before dawn on 4 Jan from a dark site.', + color: '#2a1a5a', textColor: '#e8d8ff', + type: 'cosmic', nightOnly: true, + start: '2027-01-01', end: '2027-01-05', peak: '2027-01-04', + }, + { + id: 'lyrids-2027', + emoji: '☄️', + title: 'Lyrid Meteor Shower', + message: 'The Lyrid meteor shower peaks — up to 20 meteors/hour after midnight. Note: bright waning gibbous moon may reduce visibility this year.', + color: '#2a1a5a', textColor: '#e8d8ff', + type: 'cosmic', nightOnly: true, + start: '2027-04-16', end: '2027-04-25', peak: '2027-04-23', + }, + { + id: 'eta-aquariids-2027', + emoji: '☄️', + title: 'Eta Aquariid Meteor Shower', + message: 'The Eta Aquariids peak — fragments of Halley\'s Comet, up to 50/hour before dawn. New moon on 6 May means excellent dark skies this year.', + color: '#2a1a5a', textColor: '#e8d8ff', + type: 'cosmic', nightOnly: true, + start: '2027-04-19', end: '2027-05-28', peak: '2027-05-05', + }, + { + id: 'perseids-2027', + emoji: '☄️', + title: 'Perseid Meteor Shower', + message: 'The Perseids are active — one of the best showers of the year, up to 100 meteors/hour at peak around 13 Aug.', + color: '#3a1a00', textColor: '#ffe8c0', + type: 'cosmic', nightOnly: true, + start: '2027-07-17', end: '2027-08-24', peak: '2027-08-13', + }, + { + id: 'orionids-2027', + emoji: '☄️', + title: 'Orionid Meteor Shower', + message: 'The Orionid shower peaks — fast, bright meteors from Halley\'s Comet debris. Up to 25/hour.', + color: '#2a1a5a', textColor: '#e8d8ff', + type: 'cosmic', nightOnly: true, + start: '2027-10-02', end: '2027-11-07', peak: '2027-10-21', + }, + { + id: 'leonids-2027', + emoji: '☄️', + title: 'Leonid Meteor Shower', + message: 'The Leonid shower peaks — fast meteors from comet Tempel-Tuttle, up to 15/hour.', + color: '#2a1a5a', textColor: '#e8d8ff', + type: 'cosmic', nightOnly: true, + start: '2027-11-06', end: '2027-11-30', peak: '2027-11-17', + }, + { + id: 'geminids-2027', + emoji: '☄️', + title: 'Geminid Meteor Shower', + message: 'The Geminids peak — the finest shower of the year, up to 150 meteors/hour, visible even before midnight.', + color: '#3a1a00', textColor: '#ffe8c0', + type: 'cosmic', nightOnly: true, + start: '2027-12-04', end: '2027-12-20', peak: '2027-12-14', + }, + { + id: 'ursids-2027', + emoji: '☄️', + title: 'Ursid Meteor Shower', + message: 'The Ursid shower peaks near the winter solstice — circumpolar, best from northern latitudes.', + color: '#2a1a5a', textColor: '#e8d8ff', + type: 'cosmic', nightOnly: true, + start: '2027-12-17', end: '2027-12-26', peak: '2027-12-22', + }, + + // -- ECLIPSES -------------------------------------------------------- + { + id: 'annular-solar-eclipse-2027-feb', + emoji: '🌑', + title: 'Annular Solar Eclipse', + message: 'An annular solar eclipse creates a "ring of fire" effect — visible across parts of South America, Africa and the Indian Ocean.', + color: '#1a0a2a', textColor: '#d8c8f8', + type: 'cosmic', nightOnly: false, + start: '2027-02-06', end: '2027-02-06', peak: '2027-02-06', + }, + { + id: 'total-solar-eclipse-2027-aug', + emoji: '🌑', + title: 'Total Solar Eclipse', + message: 'A spectacular total solar eclipse — the path of totality crosses Morocco, Spain, Algeria, Libya, Egypt and Saudi Arabia. One of the longest totalities of the century.', + color: '#1a0a2a', textColor: '#d8c8f8', + type: 'cosmic', nightOnly: false, + start: '2027-08-02', end: '2027-08-02', peak: '2027-08-02', + }, + + // -- PLANETARY EVENTS ------------------------------------------------ + { + id: 'mars-opposition-2027', + emoji: '🔴', + title: 'Mars at Opposition', + message: 'Mars is at its closest and brightest — a vivid red beacon visible all night long. Good binoculars will reveal its surface colour.', + color: '#2a1520', textColor: '#ffc8d8', + type: 'cosmic', nightOnly: true, + start: '2027-02-19', end: '2027-02-19', peak: '2027-02-19', + }, + { + id: 'venus-jupiter-conjunction-2027', + emoji: '🪐', + title: 'Venus & Jupiter Conjunction', + message: 'Venus and Jupiter appear strikingly close together in the evening sky — a dazzling naked-eye pairing of the two brightest planets.', + color: '#1a2a3a', textColor: '#c8e8ff', + type: 'cosmic', nightOnly: true, + start: '2027-08-23', end: '2027-08-27', peak: '2027-08-25', + }, +]; + +export const almanac = [ + { + id: 'quadrantids-2027', + emoji: '☄️', + title: 'Quadrantid Meteor Shower', + desc: 'Up to 120 meteors/hour at peak — one of the strongest showers but with a very sharp peak. Best in the hours before dawn on 4 Jan.', + start: '2027-01-01', peak: '2027-01-04', + color: '#2a1a5a', textColor: '#e8d8ff', + latHint: 'north', + type: 'meteor', + }, + { + id: 'annular-solar-eclipse-2027-feb', + emoji: '🌑', + title: 'Annular Solar Eclipse', + desc: 'A "ring of fire" eclipse visible from parts of South America, Africa and the Indian Ocean. Partial eclipse across much of the southern hemisphere.', + start: '2027-02-06', peak: '2027-02-06', + color: '#1a0a2a', textColor: '#d8c8f8', + latHint: 'path:South America, southern Africa, Indian Ocean', + type: 'eclipse', + }, + { + id: 'mars-opposition-2027', + emoji: '🔴', + title: 'Mars at Opposition', + desc: 'Mars is at its closest and brightest — a vivid red beacon visible all night long. Good binoculars reveal its distinct colour.', + start: '2027-02-19', peak: '2027-02-19', + color: '#2a1520', textColor: '#ffc8d8', + latHint: null, + type: 'planetary', + }, + { + id: 'lyrids-2027', + emoji: '☄️', + title: 'Lyrid Meteor Shower', + desc: 'Up to 20 meteors/hour at peak. Note: bright waning gibbous moon may reduce visibility this year. Active Apr 16–25.', + start: '2027-04-16', peak: '2027-04-23', + color: '#2a1a5a', textColor: '#e8d8ff', + latHint: 'north', + type: 'meteor', + }, + { + id: 'eta-aquariids-2027', + emoji: '☄️', + title: 'Eta Aquariid Meteor Shower', + desc: 'Debris from Halley\'s Comet — up to 50/hour before dawn. New moon on 6 May means excellent dark skies this year.', + start: '2027-04-19', peak: '2027-05-05', + color: '#2a1a5a', textColor: '#e8d8ff', + latHint: 'south', + type: 'meteor', + }, + { + id: 'perseids-2027', + emoji: '☄️', + title: 'Perseid Meteor Shower', + desc: 'One of the best showers of the year — up to 100/hour at peak, no telescope needed. Active Jul 17 – Aug 24.', + start: '2027-07-17', peak: '2027-08-13', + color: '#3a1a00', textColor: '#ffe8c0', + latHint: 'north', + type: 'meteor', + }, + { + id: 'total-solar-eclipse-2027-aug', + emoji: '🌑', + title: 'Total Solar Eclipse', + desc: 'One of the longest total solar eclipses of the century. Path of totality crosses Morocco, Spain, Algeria, Libya, Egypt and Saudi Arabia.', + start: '2027-08-02', peak: '2027-08-02', + color: '#1a0a2a', textColor: '#d8c8f8', + latHint: 'path:Morocco, Spain, Algeria, Libya, Egypt, Saudi Arabia', + type: 'eclipse', + }, + { + id: 'venus-jupiter-conjunction-2027', + emoji: '🪐', + title: 'Venus & Jupiter Conjunction', + desc: 'Venus and Jupiter appear strikingly close together in the evening sky — a dazzling naked-eye pairing of the two brightest planets.', + start: '2027-08-23', peak: '2027-08-25', + color: '#1a2a3a', textColor: '#c8e8ff', + latHint: null, + type: 'planetary', + }, + { + id: 'orionids-2027', + emoji: '☄️', + title: 'Orionid Meteor Shower', + desc: 'Fast, bright meteors from Halley\'s Comet debris — up to 25/hour. Active Oct 2 – Nov 7.', + start: '2027-10-02', peak: '2027-10-21', + color: '#2a1a5a', textColor: '#e8d8ff', + latHint: null, + type: 'meteor', + }, + { + id: 'leonids-2027', + emoji: '☄️', + title: 'Leonid Meteor Shower', + desc: 'Fast meteors from comet Tempel-Tuttle. Up to 15/hour at peak. Active Nov 6–30.', + start: '2027-11-06', peak: '2027-11-17', + color: '#2a1a5a', textColor: '#e8d8ff', + latHint: null, + type: 'meteor', + }, + { + id: 'geminids-2027', + emoji: '☄️', + title: 'Geminid Meteor Shower', + desc: 'The finest shower of the year — up to 150 meteors/hour, visible even before midnight. Active Dec 4–20.', + start: '2027-12-04', peak: '2027-12-14', + color: '#3a1a00', textColor: '#ffe8c0', + latHint: 'north', + type: 'meteor', + }, + { + id: 'ursids-2027', + emoji: '☄️', + title: 'Ursid Meteor Shower', + desc: 'A quieter shower near the winter solstice — circumpolar, best from northern latitudes. Active Dec 17–26.', + start: '2027-12-17', peak: '2027-12-22', + color: '#2a1a5a', textColor: '#e8d8ff', + latHint: 'north', + type: 'meteor', + }, +]; diff --git a/assets/js/events/calendar/2028.js b/assets/js/events/calendar/2028.js new file mode 100644 index 0000000..385f70e --- /dev/null +++ b/assets/js/events/calendar/2028.js @@ -0,0 +1,262 @@ +// ------------------------------------------------------------------------ +// calendar/2028.js - Cosmic & almanac events for 2028. +// See ./2026.js for the shape of each array. +// ------------------------------------------------------------------------ + +export const cosmic = [ + // -- METEOR SHOWERS -------------------------------------------------- + { + id: 'quadrantids-2028', + emoji: '☄️', + title: 'Quadrantid Meteor Shower', + message: 'The Quadrantid meteor shower is active — up to 120 meteors/hour at a sharp peak. Best in the hours before dawn from a dark site.', + color: '#2a1a5a', textColor: '#e8d8ff', + type: 'cosmic', nightOnly: true, + start: '2028-01-01', end: '2028-01-05', peak: '2028-01-04', + }, + { + id: 'lyrids-2028', + emoji: '☄️', + title: 'Lyrid Meteor Shower', + message: 'The Lyrid meteor shower peaks — up to 20 meteors/hour after midnight from a dark sky.', + color: '#2a1a5a', textColor: '#e8d8ff', + type: 'cosmic', nightOnly: true, + start: '2028-04-16', end: '2028-04-25', peak: '2028-04-22', + }, + { + id: 'eta-aquariids-2028', + emoji: '☄️', + title: 'Eta Aquariid Meteor Shower', + message: 'The Eta Aquariids peak — fragments of Halley\'s Comet, up to 50/hour in the hours before dawn.', + color: '#2a1a5a', textColor: '#e8d8ff', + type: 'cosmic', nightOnly: true, + start: '2028-04-19', end: '2028-05-28', peak: '2028-05-05', + }, + { + id: 'perseids-2028', + emoji: '☄️', + title: 'Perseid Meteor Shower', + message: 'The Perseids are active — one of the best showers of the year, up to 100 meteors/hour at peak around 12 Aug.', + color: '#3a1a00', textColor: '#ffe8c0', + type: 'cosmic', nightOnly: true, + start: '2028-07-17', end: '2028-08-24', peak: '2028-08-12', + }, + { + id: 'orionids-2028', + emoji: '☄️', + title: 'Orionid Meteor Shower', + message: 'The Orionid shower peaks — fast, bright meteors from Halley\'s Comet debris. Up to 25/hour.', + color: '#2a1a5a', textColor: '#e8d8ff', + type: 'cosmic', nightOnly: true, + start: '2028-10-02', end: '2028-11-07', peak: '2028-10-21', + }, + { + id: 'leonids-2028', + emoji: '☄️', + title: 'Leonid Meteor Shower', + message: 'The Leonid shower peaks — fast meteors from comet Tempel-Tuttle, up to 15/hour.', + color: '#2a1a5a', textColor: '#e8d8ff', + type: 'cosmic', nightOnly: true, + start: '2028-11-06', end: '2028-11-30', peak: '2028-11-17', + }, + { + id: 'geminids-2028', + emoji: '☄️', + title: 'Geminid Meteor Shower', + message: 'The Geminids peak — the finest shower of the year, up to 150 meteors/hour, visible even before midnight.', + color: '#3a1a00', textColor: '#ffe8c0', + type: 'cosmic', nightOnly: true, + start: '2028-12-04', end: '2028-12-20', peak: '2028-12-13', + }, + { + id: 'ursids-2028', + emoji: '☄️', + title: 'Ursid Meteor Shower', + message: 'The Ursid shower peaks near the winter solstice — circumpolar, best from northern latitudes.', + color: '#2a1a5a', textColor: '#e8d8ff', + type: 'cosmic', nightOnly: true, + start: '2028-12-17', end: '2028-12-26', peak: '2028-12-22', + }, + + // -- ECLIPSES -------------------------------------------------------- + { + id: 'annular-solar-eclipse-2028-jan', + emoji: '🌑', + title: 'Annular Solar Eclipse', + message: 'An annular "ring of fire" eclipse today — the path crosses South America before ending over southern Spain, Portugal (Madeira) and northern Morocco. Partial eclipse across western Europe.', + color: '#1a0a2a', textColor: '#d8c8f8', + type: 'cosmic', nightOnly: false, + start: '2028-01-26', end: '2028-01-26', peak: '2028-01-26', + }, + { + id: 'total-solar-eclipse-2028-jul', + emoji: '🌑', + title: 'Total Solar Eclipse', + message: 'A total solar eclipse crosses Australia and New Zealand today — the path of totality runs directly over Sydney, with more than five minutes of darkness at its maximum.', + color: '#1a0a2a', textColor: '#d8c8f8', + type: 'cosmic', nightOnly: false, + start: '2028-07-22', end: '2028-07-22', peak: '2028-07-22', + }, + { + id: 'lunar-eclipse-2028-dec', + emoji: '🌕', + title: 'Total Lunar Eclipse', + message: 'A total lunar eclipse rings in the New Year — the Moon turns deep red (a "Blood Moon") as it passes through Earth\'s shadow. Visible across Europe, Africa, Asia and the Americas.', + color: '#3a0a0a', textColor: '#ffd8d8', + type: 'cosmic', nightOnly: true, + start: '2028-12-31', end: '2028-12-31', peak: '2028-12-31', + }, + + // -- PLANETARY EVENTS ------------------------------------------------ + { + id: 'jupiter-opposition-2028', + emoji: '🪐', + title: 'Jupiter at Opposition', + message: 'Jupiter is at its closest and brightest — visible all night long. Its cloud bands and four Galilean moons show through binoculars.', + color: '#1a2a3a', textColor: '#c8e8ff', + type: 'cosmic', nightOnly: true, + start: '2028-03-09', end: '2028-03-09', peak: '2028-03-09', + }, + { + id: 'saturn-opposition-2028', + emoji: '🪐', + title: 'Saturn at Opposition', + message: 'Saturn is at its closest and brightest tonight — visible all night long, its rings a highlight in any small telescope.', + color: '#1a2a3a', textColor: '#c8e8ff', + type: 'cosmic', nightOnly: true, + start: '2028-10-30', end: '2028-10-30', peak: '2028-10-30', + }, +]; + +export const almanac = [ + { + id: 'quadrantids-2028', + emoji: '☄️', + title: 'Quadrantid Meteor Shower', + desc: 'Up to 120 meteors/hour at a very sharp peak. Best in the hours before dawn on 4 Jan from a dark site.', + start: '2028-01-01', peak: '2028-01-04', + color: '#2a1a5a', textColor: '#e8d8ff', + latHint: 'north', + type: 'meteor', + }, + { + id: 'annular-solar-eclipse-2028-jan', + emoji: '🌑', + title: 'Annular Solar Eclipse', + desc: 'A "ring of fire" eclipse. The path crosses Ecuador, Peru, Brazil and French Guiana, then southern Spain, Madeira and northern Morocco. Partial across western Europe.', + start: '2028-01-26', peak: '2028-01-26', + color: '#1a0a2a', textColor: '#d8c8f8', + latHint: 'path:S. America → S. Spain, Madeira, Morocco — partial across W. Europe', + type: 'eclipse', + }, + { + id: 'jupiter-opposition-2028', + emoji: '🪐', + title: 'Jupiter at Opposition', + desc: 'Jupiter at its closest and brightest — cloud bands and the four Galilean moons visible through binoculars. Well placed all night.', + start: '2028-03-09', peak: '2028-03-09', + color: '#1a2a3a', textColor: '#c8e8ff', + latHint: null, + type: 'planetary', + }, + { + id: 'lyrids-2028', + emoji: '☄️', + title: 'Lyrid Meteor Shower', + desc: 'Up to 20 meteors/hour at peak. Active Apr 16–25, best after midnight from a dark site.', + start: '2028-04-16', peak: '2028-04-22', + color: '#2a1a5a', textColor: '#e8d8ff', + latHint: 'north', + type: 'meteor', + }, + { + id: 'eta-aquariids-2028', + emoji: '☄️', + title: 'Eta Aquariid Meteor Shower', + desc: 'Debris from Halley\'s Comet — up to 50/hour before dawn. Best from southern latitudes but visible worldwide.', + start: '2028-04-19', peak: '2028-05-05', + color: '#2a1a5a', textColor: '#e8d8ff', + latHint: 'south', + type: 'meteor', + }, + { + id: 'total-solar-eclipse-2028-jul', + emoji: '🌑', + title: 'Total Solar Eclipse', + desc: 'The path of totality crosses the Cocos and Christmas Islands, then Australia — directly over Sydney — and Queenstown, New Zealand. Over five minutes of totality at maximum.', + start: '2028-07-22', peak: '2028-07-22', + color: '#1a0a2a', textColor: '#d8c8f8', + latHint: 'path:Australia (Sydney), New Zealand (Queenstown)', + type: 'eclipse', + }, + { + id: 'perseids-2028', + emoji: '☄️', + title: 'Perseid Meteor Shower', + desc: 'One of the best showers of the year — up to 100/hour at peak, no telescope needed. Active Jul 17 – Aug 24.', + start: '2028-07-17', peak: '2028-08-12', + color: '#3a1a00', textColor: '#ffe8c0', + latHint: 'north', + type: 'meteor', + }, + { + id: 'orionids-2028', + emoji: '☄️', + title: 'Orionid Meteor Shower', + desc: 'Fast, bright meteors from Halley\'s Comet debris — up to 25/hour. Active Oct 2 – Nov 7.', + start: '2028-10-02', peak: '2028-10-21', + color: '#2a1a5a', textColor: '#e8d8ff', + latHint: null, + type: 'meteor', + }, + { + id: 'saturn-opposition-2028', + emoji: '🪐', + title: 'Saturn at Opposition', + desc: 'Saturn at its closest and brightest — visible all night, its rings a highlight in any small telescope.', + start: '2028-10-30', peak: '2028-10-30', + color: '#1a2a3a', textColor: '#c8e8ff', + latHint: null, + type: 'planetary', + }, + { + id: 'leonids-2028', + emoji: '☄️', + title: 'Leonid Meteor Shower', + desc: 'Fast meteors from comet Tempel-Tuttle. Up to 15/hour at peak. Active Nov 6–30.', + start: '2028-11-06', peak: '2028-11-17', + color: '#2a1a5a', textColor: '#e8d8ff', + latHint: null, + type: 'meteor', + }, + { + id: 'geminids-2028', + emoji: '☄️', + title: 'Geminid Meteor Shower', + desc: 'The finest shower of the year — up to 150 meteors/hour, visible even before midnight. Active Dec 4–20.', + start: '2028-12-04', peak: '2028-12-13', + color: '#3a1a00', textColor: '#ffe8c0', + latHint: 'north', + type: 'meteor', + }, + { + id: 'ursids-2028', + emoji: '☄️', + title: 'Ursid Meteor Shower', + desc: 'A quieter shower near the winter solstice — circumpolar, best from northern latitudes. Active Dec 17–26.', + start: '2028-12-17', peak: '2028-12-22', + color: '#2a1a5a', textColor: '#e8d8ff', + latHint: 'north', + type: 'meteor', + }, + { + id: 'lunar-eclipse-2028-dec', + emoji: '🌕', + title: 'Total Lunar Eclipse', + desc: 'A New Year\'s Eve "Blood Moon" — the Moon turns deep red in Earth\'s shadow. Visible from Europe, Africa, Asia and the Americas.', + start: '2028-12-31', peak: '2028-12-31', + color: '#3a0a0a', textColor: '#ffd8d8', + latHint: null, + type: 'eclipse', + }, +]; diff --git a/assets/js/events/calendar/2029.js b/assets/js/events/calendar/2029.js new file mode 100644 index 0000000..f9c490b --- /dev/null +++ b/assets/js/events/calendar/2029.js @@ -0,0 +1,265 @@ +// ------------------------------------------------------------------------ +// calendar/2029.js - Cosmic & almanac events for 2029. +// See ./2026.js for the shape of each array. +// +// Note: 2029's four solar eclipses are all minor partials, so only the two +// total lunar eclipses ("Blood Moons") are listed here. +// ------------------------------------------------------------------------ + +export const cosmic = [ + // -- METEOR SHOWERS -------------------------------------------------- + { + id: 'quadrantids-2029', + emoji: '☄️', + title: 'Quadrantid Meteor Shower', + message: 'The Quadrantid meteor shower is active — up to 120 meteors/hour at a sharp peak. Best in the hours before dawn from a dark site.', + color: '#2a1a5a', textColor: '#e8d8ff', + type: 'cosmic', nightOnly: true, + start: '2029-01-01', end: '2029-01-05', peak: '2029-01-03', + }, + { + id: 'lyrids-2029', + emoji: '☄️', + title: 'Lyrid Meteor Shower', + message: 'The Lyrid meteor shower peaks — up to 20 meteors/hour after midnight from a dark sky.', + color: '#2a1a5a', textColor: '#e8d8ff', + type: 'cosmic', nightOnly: true, + start: '2029-04-16', end: '2029-04-25', peak: '2029-04-22', + }, + { + id: 'eta-aquariids-2029', + emoji: '☄️', + title: 'Eta Aquariid Meteor Shower', + message: 'The Eta Aquariids peak — fragments of Halley\'s Comet, up to 50/hour in the hours before dawn.', + color: '#2a1a5a', textColor: '#e8d8ff', + type: 'cosmic', nightOnly: true, + start: '2029-04-19', end: '2029-05-28', peak: '2029-05-06', + }, + { + id: 'perseids-2029', + emoji: '☄️', + title: 'Perseid Meteor Shower', + message: 'The Perseids are active — one of the best showers of the year, up to 100 meteors/hour at peak around 12 Aug.', + color: '#3a1a00', textColor: '#ffe8c0', + type: 'cosmic', nightOnly: true, + start: '2029-07-17', end: '2029-08-24', peak: '2029-08-12', + }, + { + id: 'orionids-2029', + emoji: '☄️', + title: 'Orionid Meteor Shower', + message: 'The Orionid shower peaks — fast, bright meteors from Halley\'s Comet debris. Up to 25/hour.', + color: '#2a1a5a', textColor: '#e8d8ff', + type: 'cosmic', nightOnly: true, + start: '2029-10-02', end: '2029-11-07', peak: '2029-10-21', + }, + { + id: 'leonids-2029', + emoji: '☄️', + title: 'Leonid Meteor Shower', + message: 'The Leonid shower peaks — fast meteors from comet Tempel-Tuttle, up to 15/hour.', + color: '#2a1a5a', textColor: '#e8d8ff', + type: 'cosmic', nightOnly: true, + start: '2029-11-06', end: '2029-11-30', peak: '2029-11-17', + }, + { + id: 'geminids-2029', + emoji: '☄️', + title: 'Geminid Meteor Shower', + message: 'The Geminids peak — the finest shower of the year, up to 150 meteors/hour, visible even before midnight.', + color: '#3a1a00', textColor: '#ffe8c0', + type: 'cosmic', nightOnly: true, + start: '2029-12-04', end: '2029-12-20', peak: '2029-12-13', + }, + { + id: 'ursids-2029', + emoji: '☄️', + title: 'Ursid Meteor Shower', + message: 'The Ursid shower peaks near the winter solstice — circumpolar, best from northern latitudes.', + color: '#2a1a5a', textColor: '#e8d8ff', + type: 'cosmic', nightOnly: true, + start: '2029-12-17', end: '2029-12-26', peak: '2029-12-22', + }, + + // -- ECLIPSES -------------------------------------------------------- + { + id: 'lunar-eclipse-2029-jun', + emoji: '🌕', + title: 'Total Lunar Eclipse', + message: 'A total lunar eclipse tonight — the Moon turns deep red (a "Blood Moon") as it passes through Earth\'s shadow. Visible across Europe, Africa and the Americas.', + color: '#3a0a0a', textColor: '#ffd8d8', + type: 'cosmic', nightOnly: true, + start: '2029-06-26', end: '2029-06-26', peak: '2029-06-26', + }, + { + id: 'lunar-eclipse-2029-dec', + emoji: '🌕', + title: 'Total Lunar Eclipse', + message: 'The second total lunar eclipse of the year — another deep-red "Blood Moon" in Earth\'s shadow, visible across Europe, Asia, Africa and the Americas.', + color: '#3a0a0a', textColor: '#ffd8d8', + type: 'cosmic', nightOnly: true, + start: '2029-12-20', end: '2029-12-20', peak: '2029-12-20', + }, + + // -- PLANETARY EVENTS ------------------------------------------------ + { + id: 'mars-opposition-2029', + emoji: '🔴', + title: 'Mars at Opposition', + message: 'Mars is at opposition — a vivid red beacon visible all night long. This is a more distant opposition, but Mars still outshines almost every star in the sky.', + color: '#2a1520', textColor: '#ffc8d8', + type: 'cosmic', nightOnly: true, + start: '2029-03-25', end: '2029-03-25', peak: '2029-03-25', + }, + { + id: 'jupiter-opposition-2029', + emoji: '🪐', + title: 'Jupiter at Opposition', + message: 'Jupiter is at its closest and brightest — visible all night long. Its cloud bands and four Galilean moons show through binoculars.', + color: '#1a2a3a', textColor: '#c8e8ff', + type: 'cosmic', nightOnly: true, + start: '2029-04-12', end: '2029-04-12', peak: '2029-04-12', + }, + { + id: 'saturn-opposition-2029', + emoji: '🪐', + title: 'Saturn at Opposition', + message: 'Saturn is at its closest and brightest tonight — visible all night long, its rings a highlight in any small telescope.', + color: '#1a2a3a', textColor: '#c8e8ff', + type: 'cosmic', nightOnly: true, + start: '2029-11-12', end: '2029-11-12', peak: '2029-11-12', + }, +]; + +export const almanac = [ + { + id: 'quadrantids-2029', + emoji: '☄️', + title: 'Quadrantid Meteor Shower', + desc: 'Up to 120 meteors/hour at a very sharp peak. Best in the hours before dawn on 3 Jan from a dark site.', + start: '2029-01-01', peak: '2029-01-03', + color: '#2a1a5a', textColor: '#e8d8ff', + latHint: 'north', + type: 'meteor', + }, + { + id: 'mars-opposition-2029', + emoji: '🔴', + title: 'Mars at Opposition', + desc: 'Mars at opposition — a vivid red beacon visible all night. A more distant (aphelic) opposition, but Mars still outshines almost every star.', + start: '2029-03-25', peak: '2029-03-25', + color: '#2a1520', textColor: '#ffc8d8', + latHint: null, + type: 'planetary', + }, + { + id: 'jupiter-opposition-2029', + emoji: '🪐', + title: 'Jupiter at Opposition', + desc: 'Jupiter at its closest and brightest — cloud bands and the four Galilean moons visible through binoculars. Well placed all night.', + start: '2029-04-12', peak: '2029-04-12', + color: '#1a2a3a', textColor: '#c8e8ff', + latHint: null, + type: 'planetary', + }, + { + id: 'lyrids-2029', + emoji: '☄️', + title: 'Lyrid Meteor Shower', + desc: 'Up to 20 meteors/hour at peak. Active Apr 16–25, best after midnight from a dark site.', + start: '2029-04-16', peak: '2029-04-22', + color: '#2a1a5a', textColor: '#e8d8ff', + latHint: 'north', + type: 'meteor', + }, + { + id: 'eta-aquariids-2029', + emoji: '☄️', + title: 'Eta Aquariid Meteor Shower', + desc: 'Debris from Halley\'s Comet — up to 50/hour before dawn. Best from southern latitudes but visible worldwide.', + start: '2029-04-19', peak: '2029-05-06', + color: '#2a1a5a', textColor: '#e8d8ff', + latHint: 'south', + type: 'meteor', + }, + { + id: 'lunar-eclipse-2029-jun', + emoji: '🌕', + title: 'Total Lunar Eclipse', + desc: 'A deep-red "Blood Moon" as the Moon passes through Earth\'s shadow. Visible from Europe, Africa and the Americas.', + start: '2029-06-26', peak: '2029-06-26', + color: '#3a0a0a', textColor: '#ffd8d8', + latHint: null, + type: 'eclipse', + }, + { + id: 'perseids-2029', + emoji: '☄️', + title: 'Perseid Meteor Shower', + desc: 'One of the best showers of the year — up to 100/hour at peak, no telescope needed. Active Jul 17 – Aug 24.', + start: '2029-07-17', peak: '2029-08-12', + color: '#3a1a00', textColor: '#ffe8c0', + latHint: 'north', + type: 'meteor', + }, + { + id: 'orionids-2029', + emoji: '☄️', + title: 'Orionid Meteor Shower', + desc: 'Fast, bright meteors from Halley\'s Comet debris — up to 25/hour. Active Oct 2 – Nov 7.', + start: '2029-10-02', peak: '2029-10-21', + color: '#2a1a5a', textColor: '#e8d8ff', + latHint: null, + type: 'meteor', + }, + { + id: 'saturn-opposition-2029', + emoji: '🪐', + title: 'Saturn at Opposition', + desc: 'Saturn at its closest and brightest — visible all night, its rings a highlight in any small telescope.', + start: '2029-11-12', peak: '2029-11-12', + color: '#1a2a3a', textColor: '#c8e8ff', + latHint: null, + type: 'planetary', + }, + { + id: 'leonids-2029', + emoji: '☄️', + title: 'Leonid Meteor Shower', + desc: 'Fast meteors from comet Tempel-Tuttle. Up to 15/hour at peak. Active Nov 6–30.', + start: '2029-11-06', peak: '2029-11-17', + color: '#2a1a5a', textColor: '#e8d8ff', + latHint: null, + type: 'meteor', + }, + { + id: 'geminids-2029', + emoji: '☄️', + title: 'Geminid Meteor Shower', + desc: 'The finest shower of the year — up to 150 meteors/hour, visible even before midnight. Active Dec 4–20.', + start: '2029-12-04', peak: '2029-12-13', + color: '#3a1a00', textColor: '#ffe8c0', + latHint: 'north', + type: 'meteor', + }, + { + id: 'ursids-2029', + emoji: '☄️', + title: 'Ursid Meteor Shower', + desc: 'A quieter shower near the winter solstice — circumpolar, best from northern latitudes. Active Dec 17–26.', + start: '2029-12-17', peak: '2029-12-22', + color: '#2a1a5a', textColor: '#e8d8ff', + latHint: 'north', + type: 'meteor', + }, + { + id: 'lunar-eclipse-2029-dec', + emoji: '🌕', + title: 'Total Lunar Eclipse', + desc: 'The year\'s second "Blood Moon" — the Moon turns deep red in Earth\'s shadow. Visible from Europe, Asia, Africa and the Americas.', + start: '2029-12-20', peak: '2029-12-20', + color: '#3a0a0a', textColor: '#ffd8d8', + latHint: null, + type: 'eclipse', + }, +]; diff --git a/assets/js/events/calendar/2030.js b/assets/js/events/calendar/2030.js new file mode 100644 index 0000000..64edb7b --- /dev/null +++ b/assets/js/events/calendar/2030.js @@ -0,0 +1,243 @@ +// ------------------------------------------------------------------------ +// calendar/2030.js - Cosmic & almanac events for 2030. +// See ./2026.js for the shape of each array. +// ------------------------------------------------------------------------ + +export const cosmic = [ + // -- METEOR SHOWERS -------------------------------------------------- + { + id: 'quadrantids-2030', + emoji: '☄️', + title: 'Quadrantid Meteor Shower', + message: 'The Quadrantid meteor shower is active — up to 120 meteors/hour at a sharp peak. Best in the hours before dawn from a dark site.', + color: '#2a1a5a', textColor: '#e8d8ff', + type: 'cosmic', nightOnly: true, + start: '2030-01-01', end: '2030-01-05', peak: '2030-01-03', + }, + { + id: 'lyrids-2030', + emoji: '☄️', + title: 'Lyrid Meteor Shower', + message: 'The Lyrid meteor shower peaks — up to 20 meteors/hour after midnight from a dark sky.', + color: '#2a1a5a', textColor: '#e8d8ff', + type: 'cosmic', nightOnly: true, + start: '2030-04-16', end: '2030-04-25', peak: '2030-04-22', + }, + { + id: 'eta-aquariids-2030', + emoji: '☄️', + title: 'Eta Aquariid Meteor Shower', + message: 'The Eta Aquariids peak — fragments of Halley\'s Comet, up to 50/hour in the hours before dawn.', + color: '#2a1a5a', textColor: '#e8d8ff', + type: 'cosmic', nightOnly: true, + start: '2030-04-19', end: '2030-05-28', peak: '2030-05-06', + }, + { + id: 'perseids-2030', + emoji: '☄️', + title: 'Perseid Meteor Shower', + message: 'The Perseids are active — one of the best showers of the year, up to 100 meteors/hour at peak around 13 Aug.', + color: '#3a1a00', textColor: '#ffe8c0', + type: 'cosmic', nightOnly: true, + start: '2030-07-17', end: '2030-08-24', peak: '2030-08-13', + }, + { + id: 'orionids-2030', + emoji: '☄️', + title: 'Orionid Meteor Shower', + message: 'The Orionid shower peaks — fast, bright meteors from Halley\'s Comet debris. Up to 25/hour.', + color: '#2a1a5a', textColor: '#e8d8ff', + type: 'cosmic', nightOnly: true, + start: '2030-10-02', end: '2030-11-07', peak: '2030-10-21', + }, + { + id: 'leonids-2030', + emoji: '☄️', + title: 'Leonid Meteor Shower', + message: 'The Leonid shower peaks — fast meteors from comet Tempel-Tuttle, up to 15/hour.', + color: '#2a1a5a', textColor: '#e8d8ff', + type: 'cosmic', nightOnly: true, + start: '2030-11-06', end: '2030-11-30', peak: '2030-11-17', + }, + { + id: 'geminids-2030', + emoji: '☄️', + title: 'Geminid Meteor Shower', + message: 'The Geminids peak — the finest shower of the year, up to 150 meteors/hour, visible even before midnight.', + color: '#3a1a00', textColor: '#ffe8c0', + type: 'cosmic', nightOnly: true, + start: '2030-12-04', end: '2030-12-20', peak: '2030-12-14', + }, + { + id: 'ursids-2030', + emoji: '☄️', + title: 'Ursid Meteor Shower', + message: 'The Ursid shower peaks near the winter solstice — circumpolar, best from northern latitudes.', + color: '#2a1a5a', textColor: '#e8d8ff', + type: 'cosmic', nightOnly: true, + start: '2030-12-17', end: '2030-12-26', peak: '2030-12-22', + }, + + // -- ECLIPSES -------------------------------------------------------- + { + id: 'annular-solar-eclipse-2030-jun', + emoji: '🌑', + title: 'Annular Solar Eclipse', + message: 'An annular "ring of fire" eclipse today — the path sweeps across North Africa, Greece and Turkey, then on through Russia, Kazakhstan, China and Japan. Partial eclipse across much of Europe.', + color: '#1a0a2a', textColor: '#d8c8f8', + type: 'cosmic', nightOnly: false, + start: '2030-06-01', end: '2030-06-01', peak: '2030-06-01', + }, + { + id: 'total-solar-eclipse-2030-nov', + emoji: '🌑', + title: 'Total Solar Eclipse', + message: 'A total solar eclipse today — the path of totality crosses southern Africa (Namibia, Botswana and South Africa) before ending over southern Australia. Look for rapid temperature drops even in partial zones.', + color: '#1a0a2a', textColor: '#d8c8f8', + type: 'cosmic', nightOnly: false, + start: '2030-11-25', end: '2030-11-25', peak: '2030-11-25', + }, + + // -- PLANETARY EVENTS ------------------------------------------------ + { + id: 'jupiter-opposition-2030', + emoji: '🪐', + title: 'Jupiter at Opposition', + message: 'Jupiter is at its closest and brightest — visible all night long. Its cloud bands and four Galilean moons show through binoculars.', + color: '#1a2a3a', textColor: '#c8e8ff', + type: 'cosmic', nightOnly: true, + start: '2030-05-16', end: '2030-05-16', peak: '2030-05-16', + }, + { + id: 'saturn-opposition-2030', + emoji: '🪐', + title: 'Saturn at Opposition', + message: 'Saturn is at its closest and brightest tonight — visible all night long, its rings a highlight in any small telescope.', + color: '#1a2a3a', textColor: '#c8e8ff', + type: 'cosmic', nightOnly: true, + start: '2030-11-21', end: '2030-11-21', peak: '2030-11-21', + }, +]; + +export const almanac = [ + { + id: 'quadrantids-2030', + emoji: '☄️', + title: 'Quadrantid Meteor Shower', + desc: 'Up to 120 meteors/hour at a very sharp peak. Best in the hours before dawn on 3 Jan from a dark site.', + start: '2030-01-01', peak: '2030-01-03', + color: '#2a1a5a', textColor: '#e8d8ff', + latHint: 'north', + type: 'meteor', + }, + { + id: 'lyrids-2030', + emoji: '☄️', + title: 'Lyrid Meteor Shower', + desc: 'Up to 20 meteors/hour at peak. Active Apr 16–25, best after midnight from a dark site.', + start: '2030-04-16', peak: '2030-04-22', + color: '#2a1a5a', textColor: '#e8d8ff', + latHint: 'north', + type: 'meteor', + }, + { + id: 'eta-aquariids-2030', + emoji: '☄️', + title: 'Eta Aquariid Meteor Shower', + desc: 'Debris from Halley\'s Comet — up to 50/hour before dawn. Best from southern latitudes but visible worldwide.', + start: '2030-04-19', peak: '2030-05-06', + color: '#2a1a5a', textColor: '#e8d8ff', + latHint: 'south', + type: 'meteor', + }, + { + id: 'jupiter-opposition-2030', + emoji: '🪐', + title: 'Jupiter at Opposition', + desc: 'Jupiter at its closest and brightest — cloud bands and the four Galilean moons visible through binoculars. Well placed all night.', + start: '2030-05-16', peak: '2030-05-16', + color: '#1a2a3a', textColor: '#c8e8ff', + latHint: null, + type: 'planetary', + }, + { + id: 'annular-solar-eclipse-2030-jun', + emoji: '🌑', + title: 'Annular Solar Eclipse', + desc: 'A "ring of fire" eclipse. The path crosses Algeria, Tunisia, Greece and Turkey, then Russia, Kazakhstan, China and Japan. Partial eclipse across much of Europe.', + start: '2030-06-01', peak: '2030-06-01', + color: '#1a0a2a', textColor: '#d8c8f8', + latHint: 'path:N. Africa, Greece, Turkey, Russia, China, Japan — partial across Europe', + type: 'eclipse', + }, + { + id: 'perseids-2030', + emoji: '☄️', + title: 'Perseid Meteor Shower', + desc: 'One of the best showers of the year — up to 100/hour at peak, no telescope needed. Active Jul 17 – Aug 24.', + start: '2030-07-17', peak: '2030-08-13', + color: '#3a1a00', textColor: '#ffe8c0', + latHint: 'north', + type: 'meteor', + }, + { + id: 'orionids-2030', + emoji: '☄️', + title: 'Orionid Meteor Shower', + desc: 'Fast, bright meteors from Halley\'s Comet debris — up to 25/hour. Active Oct 2 – Nov 7.', + start: '2030-10-02', peak: '2030-10-21', + color: '#2a1a5a', textColor: '#e8d8ff', + latHint: null, + type: 'meteor', + }, + { + id: 'leonids-2030', + emoji: '☄️', + title: 'Leonid Meteor Shower', + desc: 'Fast meteors from comet Tempel-Tuttle. Up to 15/hour at peak. Active Nov 6–30.', + start: '2030-11-06', peak: '2030-11-17', + color: '#2a1a5a', textColor: '#e8d8ff', + latHint: null, + type: 'meteor', + }, + { + id: 'saturn-opposition-2030', + emoji: '🪐', + title: 'Saturn at Opposition', + desc: 'Saturn at its closest and brightest — visible all night, its rings a highlight in any small telescope.', + start: '2030-11-21', peak: '2030-11-21', + color: '#1a2a3a', textColor: '#c8e8ff', + latHint: null, + type: 'planetary', + }, + { + id: 'total-solar-eclipse-2030-nov', + emoji: '🌑', + title: 'Total Solar Eclipse', + desc: 'The path of totality crosses Namibia, Botswana and South Africa (near Durban), then ends over southern Australia. Partial eclipse across southern Africa and Australasia.', + start: '2030-11-25', peak: '2030-11-25', + color: '#1a0a2a', textColor: '#d8c8f8', + latHint: 'path:Namibia, Botswana, South Africa → southern Australia', + type: 'eclipse', + }, + { + id: 'geminids-2030', + emoji: '☄️', + title: 'Geminid Meteor Shower', + desc: 'The finest shower of the year — up to 150 meteors/hour, visible even before midnight. Active Dec 4–20.', + start: '2030-12-04', peak: '2030-12-14', + color: '#3a1a00', textColor: '#ffe8c0', + latHint: 'north', + type: 'meteor', + }, + { + id: 'ursids-2030', + emoji: '☄️', + title: 'Ursid Meteor Shower', + desc: 'A quieter shower near the winter solstice — circumpolar, best from northern latitudes. Active Dec 17–26.', + start: '2030-12-17', peak: '2030-12-22', + color: '#2a1a5a', textColor: '#e8d8ff', + latHint: 'north', + type: 'meteor', + }, +]; diff --git a/assets/js/events/cosmic-calendar.js b/assets/js/events/cosmic-calendar.js index 9cb23c4..eddea6f 100644 --- a/assets/js/events/cosmic-calendar.js +++ b/assets/js/events/cosmic-calendar.js @@ -2,275 +2,31 @@ // cosmic-calendar.js - Hardcoded cosmic events (meteor showers, eclipses, // planetary oppositions/conjunctions) used by getActiveEvents. // +// The per-year data now lives in ./calendar/.js — each of those files +// exports a `cosmic` array (banner events) and an `almanac` array (the +// "What's Coming" panel). This module just concatenates the cosmic arrays +// in chronological order. +// // Each entry: { id, start: 'YYYY-MM-DD', end: 'YYYY-MM-DD', // peak: 'YYYY-MM-DD' (optional), ...eventProps } // Active if today falls within [start, end] (inclusive). // Night-only events (meteor showers, eclipses) are marked nightOnly: true // so the cell icons only appear in night-time rows. +// +// To add a new year: create ./calendar/.js (copy an existing one), +// then import it below and add its `cosmic` spread to COSMIC_CALENDAR. // ------------------------------------------------------------------------ +import { cosmic as cosmic2026 } from './calendar/2026.js'; +import { cosmic as cosmic2027 } from './calendar/2027.js'; +import { cosmic as cosmic2028 } from './calendar/2028.js'; +import { cosmic as cosmic2029 } from './calendar/2029.js'; +import { cosmic as cosmic2030 } from './calendar/2030.js'; + export const COSMIC_CALENDAR = [ - - // -- METEOR SHOWERS -------------------------------------------------- - { - id: 'quadrantids-2026', - emoji: '☄️', - title: 'Quadrantid Meteor Shower', - message: 'The Quadrantid meteor shower is active — up to 120 meteors/hour at peak. Best after midnight in a dark sky.', - color: '#2a1a5a', - textColor: '#e8d8ff', - type: 'cosmic', - nightOnly: true, - start: '2026-01-01', end: '2026-01-05', peak: '2026-01-03', - }, - { - id: 'lyrids-2026', - emoji: '☄️', - title: 'Lyrid Meteor Shower', - message: 'The Lyrid meteor shower peaks tonight — up to 20 meteors/hour from a dark sky after midnight.', - color: '#2a1a5a', - textColor: '#e8d8ff', - type: 'cosmic', - nightOnly: true, - start: '2026-04-16', end: '2026-04-25', peak: '2026-04-22', - }, - { - id: 'eta-aquariids-2026', - emoji: '☄️', - title: 'Eta Aquariid Meteor Shower', - message: 'The Eta Aquariid shower peaks tonight — fragments of Halley\'s Comet, up to 50/hour before dawn.', - color: '#2a1a5a', - textColor: '#e8d8ff', - type: 'cosmic', - nightOnly: true, - start: '2026-04-19', end: '2026-05-28', peak: '2026-05-06', - }, - { - id: 'perseids-2026', - emoji: '☄️', - title: 'Perseid Meteor Shower', - message: 'The Perseids are active — one of the best showers of the year, up to 100 meteors/hour at peak.', - color: '#3a1a00', - textColor: '#ffe8c0', - type: 'cosmic', - nightOnly: true, - start: '2026-07-17', end: '2026-08-24', peak: '2026-08-12', - }, - { - id: 'orionids-2026', - emoji: '☄️', - title: 'Orionid Meteor Shower', - message: 'The Orionid shower peaks tonight — fast, bright meteors from Halley\'s Comet debris. Up to 25/hour.', - color: '#2a1a5a', - textColor: '#e8d8ff', - type: 'cosmic', - nightOnly: true, - start: '2026-10-02', end: '2026-11-07', peak: '2026-10-21', - }, - { - id: 'leonids-2026', - emoji: '☄️', - title: 'Leonid Meteor Shower', - message: 'The Leonid shower is active tonight — fast, bright meteors from comet Tempel-Tuttle.', - color: '#2a1a5a', - textColor: '#e8d8ff', - type: 'cosmic', - nightOnly: true, - start: '2026-11-06', end: '2026-11-30', peak: '2026-11-17', - }, - { - id: 'geminids-2026', - emoji: '☄️', - title: 'Geminid Meteor Shower', - message: 'The Geminids peak tonight — the best shower of the year, up to 150 meteors/hour. No moon interference.', - color: '#3a1a00', - textColor: '#ffe8c0', - type: 'cosmic', - nightOnly: true, - start: '2026-12-04', end: '2026-12-20', peak: '2026-12-13', - }, - { - id: 'ursids-2026', - emoji: '☄️', - title: 'Ursid Meteor Shower', - message: 'The Ursid shower peaks tonight — a quieter festive shower near the winter solstice.', - color: '#2a1a5a', - textColor: '#e8d8ff', - type: 'cosmic', - nightOnly: true, - start: '2026-12-17', end: '2026-12-26', peak: '2026-12-22', - }, - - // -- ECLIPSES -------------------------------------------------------- - { - id: 'solar-eclipse-2026-aug', - emoji: '🌑', - title: 'Total Solar Eclipse', - message: 'A total solar eclipse crosses Europe and North Africa today — look for rapid temperature drops and unusual animal behaviour even in partial zones.', - color: '#1a0a2a', - textColor: '#d8c8f8', - type: 'cosmic', - nightOnly: false, - start: '2026-08-12', end: '2026-08-12', - }, - { - id: 'lunar-eclipse-2026-mar', - emoji: '🌕', - title: 'Total Lunar Eclipse', - message: 'A total lunar eclipse is visible tonight — the Moon turns deep red (a "Blood Moon") as it passes through Earth\'s shadow.', - color: '#3a0a0a', - textColor: '#ffd8d8', - type: 'cosmic', - nightOnly: true, - start: '2026-03-03', end: '2026-03-03', - }, - - // -- PLANETARY EVENTS ------------------------------------------------ - { - id: 'saturn-opposition-2026', - emoji: '🪐', - title: 'Saturn at Opposition', - message: 'Saturn is at its closest and brightest tonight — visible all night long, rings tilted beautifully toward Earth.', - color: '#1a2a3a', - textColor: '#c8e8ff', - type: 'cosmic', - nightOnly: true, - start: '2026-09-23', end: '2026-09-23', - }, - { - id: 'jupiter-opposition-2026', - emoji: '🪐', - title: 'Jupiter at Opposition', - message: 'Jupiter is at its closest and brightest tonight — you can see its cloud bands with binoculars.', - color: '#1a2a3a', - textColor: '#c8e8ff', - type: 'cosmic', - nightOnly: true, - start: '2026-10-08', end: '2026-10-08', - }, - { - id: 'mars-conjunction-2026', - emoji: '🔴', - title: 'Mars & Venus Conjunction', - message: 'Mars and Venus are remarkably close in the evening sky tonight — a striking pair visible to the naked eye.', - color: '#2a1520', - textColor: '#ffc8d8', - type: 'cosmic', - nightOnly: true, - start: '2026-06-30', end: '2026-07-02', - }, - - // -- 2027 METEOR SHOWERS --------------------------------------------- - { - id: 'quadrantids-2027', - emoji: '☄️', - title: 'Quadrantid Meteor Shower', - message: 'The Quadrantid meteor shower is active — up to 120 meteors/hour at peak. Best in the hours before dawn on 4 Jan from a dark site.', - color: '#2a1a5a', textColor: '#e8d8ff', - type: 'cosmic', nightOnly: true, - start: '2027-01-01', end: '2027-01-05', peak: '2027-01-04', - }, - { - id: 'lyrids-2027', - emoji: '☄️', - title: 'Lyrid Meteor Shower', - message: 'The Lyrid meteor shower peaks — up to 20 meteors/hour after midnight. Note: bright waning gibbous moon may reduce visibility this year.', - color: '#2a1a5a', textColor: '#e8d8ff', - type: 'cosmic', nightOnly: true, - start: '2027-04-16', end: '2027-04-25', peak: '2027-04-23', - }, - { - id: 'eta-aquariids-2027', - emoji: '☄️', - title: 'Eta Aquariid Meteor Shower', - message: 'The Eta Aquariids peak — fragments of Halley\'s Comet, up to 50/hour before dawn. New moon on 6 May means excellent dark skies this year.', - color: '#2a1a5a', textColor: '#e8d8ff', - type: 'cosmic', nightOnly: true, - start: '2027-04-19', end: '2027-05-28', peak: '2027-05-05', - }, - { - id: 'perseids-2027', - emoji: '☄️', - title: 'Perseid Meteor Shower', - message: 'The Perseids are active — one of the best showers of the year, up to 100 meteors/hour at peak around 13 Aug.', - color: '#3a1a00', textColor: '#ffe8c0', - type: 'cosmic', nightOnly: true, - start: '2027-07-17', end: '2027-08-24', peak: '2027-08-13', - }, - { - id: 'orionids-2027', - emoji: '☄️', - title: 'Orionid Meteor Shower', - message: 'The Orionid shower peaks — fast, bright meteors from Halley\'s Comet debris. Up to 25/hour.', - color: '#2a1a5a', textColor: '#e8d8ff', - type: 'cosmic', nightOnly: true, - start: '2027-10-02', end: '2027-11-07', peak: '2027-10-21', - }, - { - id: 'leonids-2027', - emoji: '☄️', - title: 'Leonid Meteor Shower', - message: 'The Leonid shower peaks — fast meteors from comet Tempel-Tuttle, up to 15/hour.', - color: '#2a1a5a', textColor: '#e8d8ff', - type: 'cosmic', nightOnly: true, - start: '2027-11-06', end: '2027-11-30', peak: '2027-11-17', - }, - { - id: 'geminids-2027', - emoji: '☄️', - title: 'Geminid Meteor Shower', - message: 'The Geminids peak — the finest shower of the year, up to 150 meteors/hour, visible even before midnight.', - color: '#3a1a00', textColor: '#ffe8c0', - type: 'cosmic', nightOnly: true, - start: '2027-12-04', end: '2027-12-20', peak: '2027-12-14', - }, - { - id: 'ursids-2027', - emoji: '☄️', - title: 'Ursid Meteor Shower', - message: 'The Ursid shower peaks near the winter solstice — circumpolar, best from northern latitudes.', - color: '#2a1a5a', textColor: '#e8d8ff', - type: 'cosmic', nightOnly: true, - start: '2027-12-17', end: '2027-12-26', peak: '2027-12-22', - }, - - // -- 2027 ECLIPSES --------------------------------------------------- - { - id: 'annular-solar-eclipse-2027-feb', - emoji: '🌑', - title: 'Annular Solar Eclipse', - message: 'An annular solar eclipse creates a "ring of fire" effect — visible across parts of South America, Africa and the Indian Ocean.', - color: '#1a0a2a', textColor: '#d8c8f8', - type: 'cosmic', nightOnly: false, - start: '2027-02-06', end: '2027-02-06', peak: '2027-02-06', - }, - { - id: 'total-solar-eclipse-2027-aug', - emoji: '🌑', - title: 'Total Solar Eclipse', - message: 'A spectacular total solar eclipse — the path of totality crosses Morocco, Spain, Algeria, Libya, Egypt and Saudi Arabia. One of the longest totalities of the century.', - color: '#1a0a2a', textColor: '#d8c8f8', - type: 'cosmic', nightOnly: false, - start: '2027-08-02', end: '2027-08-02', peak: '2027-08-02', - }, - - // -- 2027 PLANETARY EVENTS ------------------------------------------- - { - id: 'mars-opposition-2027', - emoji: '🔴', - title: 'Mars at Opposition', - message: 'Mars is at its closest and brightest — a vivid red beacon visible all night long. Good binoculars will reveal its surface colour.', - color: '#2a1520', textColor: '#ffc8d8', - type: 'cosmic', nightOnly: true, - start: '2027-02-19', end: '2027-02-19', peak: '2027-02-19', - }, - { - id: 'venus-jupiter-conjunction-2027', - emoji: '🪐', - title: 'Venus & Jupiter Conjunction', - message: 'Venus and Jupiter appear strikingly close together in the evening sky — a dazzling naked-eye pairing of the two brightest planets.', - color: '#1a2a3a', textColor: '#c8e8ff', - type: 'cosmic', nightOnly: true, - start: '2027-08-23', end: '2027-08-27', peak: '2027-08-25', - }, + ...cosmic2026, + ...cosmic2027, + ...cosmic2028, + ...cosmic2029, + ...cosmic2030, ];