import React, { useState, useEffect } from 'react'; import { Calendar, Heart, Users, MapPin, Clock } from 'lucide-react'; const WeddingAnniversaryCalendar = () => { const [anniversaries, setAnniversaries] = useState({}); const [selectedDate, setSelectedDate] = useState(null); const [currentMonth, setCurrentMonth] = useState(new Date().getMonth()); const [currentYear] = useState(new Date().getFullYear()); useEffect(() => { const loadData = async () => { try { const fileContent = await window.fs.readFile('paste.txt', { encoding: 'utf8' }); const lines = fileContent.trim().split('\n'); const dataLines = lines.slice(1); const weddings = dataLines.map(line => { const parts = line.split('\t'); if (parts.length >= 5) { const dateStr = parts[0]; const marriageId = parts[1]; const groom = parts[2]; const bride = parts[3]; const location = parts[4]; const [day, month, year] = dateStr.split('-'); const date = new Date(parseInt(year), parseInt(month) - 1, parseInt(day)); return { date: date, dateStr: dateStr, marriageId: marriageId, groom: groom, bride: bride, location: location, monthDay: `${month.padStart(2, '0')}-${day.padStart(2, '0')}`, displayDate: `${month}/${day}`, originalYear: parseInt(year) }; } return null; }).filter(w => w !== null); // Group by month-day const anniversariesByDate = {}; weddings.forEach(wedding => { const key = wedding.monthDay; if (!anniversariesByDate[key]) { anniversariesByDate[key] = []; } anniversariesByDate[key].push(wedding); }); setAnniversaries(anniversariesByDate); } catch (error) { console.error('Error loading data:', error); } }; loadData(); }, []); const monthNames = [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ]; const getDaysInMonth = (month, year) => { return new Date(year, month + 1, 0).getDate(); }; const getFirstDayOfMonth = (month, year) => { return new Date(year, month, 1).getDay(); }; const getAnniversariesForDate = (day, month) => { const key = `${(month + 1).toString().padStart(2, '0')}-${day.toString().padStart(2, '0')}`; return anniversaries[key] || []; }; const renderCalendar = () => { const daysInMonth = getDaysInMonth(currentMonth, currentYear); const firstDay = getFirstDayOfMonth(currentMonth, currentYear); const days = []; // Empty cells for days before the first day of month for (let i = 0; i < firstDay; i++) { days.push(
); } // Days of the month for (let day = 1; day <= daysInMonth; day++) { const dayAnniversaries = getAnniversariesForDate(day, currentMonth); const hasAnniversaries = dayAnniversaries.length > 0; days.push(
hasAnniversaries ? setSelectedDate({ day, month: currentMonth, anniversaries: dayAnniversaries }) : null} >
{day}
{hasAnniversaries && (
{dayAnniversaries.length}
{dayAnniversaries[0].groom.split(' ')[0]} & {dayAnniversaries[0].bride.split(' ')[0]} {dayAnniversaries.length > 1 && ` +${dayAnniversaries.length - 1} more`}
)}
); } return days; }; const totalAnniversaries = Object.values(anniversaries).reduce((sum, arr) => sum + arr.length, 0); const uniqueDates = Object.keys(anniversaries).length; return (

Wedding Anniversary Calendar

Track {totalAnniversaries} wedding anniversaries across {uniqueDates} different dates throughout the year

{/* Calendar */}
{/* Calendar Header */}

{monthNames[currentMonth]} {currentYear}

{/* Day headers */}
{['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'].map(day => (
{day}
))}
{/* Calendar grid */}
{renderCalendar()}
{/* Details Panel */}
{/* Anniversary Stats */}

Anniversary Stats

Total Marriages: {totalAnniversaries}
Unique Dates: {uniqueDates}
This Month: {Object.keys(anniversaries).filter(date => { const [month] = date.split('-'); return parseInt(month) === currentMonth + 1; }).reduce((sum, date) => sum + anniversaries[date].length, 0)}
{/* Selected Date Details */} {selectedDate && (

{monthNames[selectedDate.month]} {selectedDate.day} Anniversaries

{selectedDate.anniversaries.map((wedding, index) => { const yearsMarried = currentYear - wedding.originalYear; return (
{wedding.groom} & {wedding.bride}
Married {wedding.originalYear} ({yearsMarried} years)
{wedding.location}
ID: {wedding.marriageId}
); })}
)} {/* Instructions */}

How to Use

  • • Click the arrows to navigate months
  • • Red highlighted dates have anniversaries
  • • Click on a date to see anniversary details
  • • Numbers show how many couples celebrate each day
); }; export default WeddingAnniversaryCalendar;

 Push Notifications are disabled

hide

Bahamas Package Wedding

 Add to homescreen

hide