/schedule presents the full 7-day program for the Rajat Mahotsav celebration. It renders a calendar grid on desktop and a collapsible accordion on mobile, both powered by the same scheduleData array defined in app/schedule/page.tsx.
Event dates
The celebration runs from Monday July 27 through Sunday August 2, 2026 at Shree Swaminarayan Temple Secaucus, New Jersey.July 27 — Monday
Welcome Program · All Parayan Mahapooja · Opening Ceremony
July 28 — Tuesday
Gnan Sathe Gamat · Shakotsav
July 29 — Wednesday
Gurupoonam · Bhakti Sandhya
July 30 — Thursday
Ladies Program · Samuh Raas
July 31 — Friday
Hindola Program · Bhakti Nrutya
August 1 — Saturday
Nagaryatra · Abhishek Program · Sanskrutik Drama
August 2 — Sunday
Patotsav Celebrations
Lunch and dinner are included each day but are excluded from the event count badge shown on each calendar tile.
Schedule data structure
Each day is represented as aScheduleDay object. Events within each day use the Event interface.
app/schedule/page.tsx
scheduleData array is defined inline in app/schedule/page.tsx:23.
Desktop calendar view
On viewports wider than768px the page renders a 7-column calendar grid. Clicking a day tile selects it and animates an event details panel below.
- Tile behavior
- Event details panel
Each calendar tile shows:
- Month label in the top-left corner
- Event count badge (meals excluded) in the top-right corner
- Date number in large type at center
- 3-letter weekday abbreviation below the date
- A bottom border indicator that slides with Framer Motion
layoutId="selectedIndicator"when selected
scale-105) and gains an ring-2 ring-orange-200 outline. Other tiles scale up on hover (whileHover={{ y: -4 }}).Mobile accordion view
Below768px the page switches to a stacked accordion. Each day renders as a card with a tappable header.
- Mobile layout
- Breakpoint detection
- A date circle shows the day number and month abbreviation
- The weekday name and event count appear beside the circle
- A chevron icon rotates 90° when the day is expanded (
animate={{ rotate: selectedDay === index ? 90 : 0 }}) - Tapping an already-open day collapses it (
setSelectedDay(selectedDay === index ? -1 : index))
x: -10 → 0 transitions.MobileTimeline component
components/organisms/MobileTimeline.tsx is a separate full-page view that presents the historical timeline (1970–2026), not the event schedule. It reuses data from lib/timeline-data.ts.
Key characteristics:
- Uses
IntersectionObserverwiththreshold: 0.2to trigger per-item fade-in animations - Each item transitions from
opacity-0 translate-y-8toopacity-100 translate-y-0when it enters the viewport - Items are rendered using
TimelineGridTilewithvariant="mobile" - The heading “Our Journey” and closing tagline “Let’s continue making history” use the
font-figtree italic font-boldclass with an orange-to-red gradient
components/organisms/MobileTimeline.tsx
Theme constants
All colors in the schedule page are controlled through atheme object defined at the top of the component. To change the accent color, update the values there rather than editing individual class names.
