The organisms
index.ts re-exports 21 named components. Components not listed there (such as DesktopNavigation, LandingPageMobile, PhotoAlbumModal) are imported directly from their file path.Navigation
Navigation
File:components/organisms/navigation.tsxExported as:
Navigation
The primary site-wide navigation bar. On the home page it is position: absolute (overlays the hero); on all other pages it is position: relative. It renders:
- A
NavBar(tubelight style) on the left with all route links - The main logo and Maninagar logo grouped on the right
- An Admin link injected dynamically when the logged-in user has an allowed admin email domain (checked via Supabase auth)
ResizeObserver so the nav collapses gracefully without overflowing.
DesktopNavigation
File:components/organisms/desktop-navigation.tsx
Alternate fixed navigation used on specific pages. Hides on scroll using a translate-y transition. Uses the GlowMenu component (glow-menu.tsx) for the menu bar and the useDeviceType() hook to conditionally show labels.
FloatingMenuButton
File:components/organisms/floating-menu-button.tsxExported as:
FloatingMenuButton
Mobile floating action button fixed at bottom-6 left-6. Appears after scrolling 300 px. Tapping it opens an animated slide-up menu panel listing all site routes, with expandable sub-items for the Seva group.
- Adapts icon colour based on background brightness (same algorithm as
ScrollToTop) - Closes automatically on route change via
usePathname() - Sub-items expand/collapse with framer-motion height animation
- Active route highlighted with
bg-red-500/20
TubelightNavigation / TubelightNavbar
Files:components/organisms/tubelight-navigation.tsx, components/organisms/tubelight-navbar.tsxExported as:
TubelightNavigation
The glowing “tubelight” animated underline nav used inside the primary Navigation component.
Layout
TitleSection (landing-page.tsx)
File:components/organisms/landing-page.tsxExported as:
TitleSection
Desktop hero section. Occupies the full viewport height and is split into two regions:
- Top 65%:
Skiper53animated image carousel (from@skiper-ui) fades in after the loading screen exits - Bottom 40%: Liquid glass card on a
slate-900background, containing event title, location,CountdownTimer, and CTA buttons (Register Now / About the Mahotsav)
!isLoading from useLoading().
TitleSectionMobile (landing-page-mobile.tsx)
File:components/organisms/landing-page-mobile.tsx
Mobile-specific hero section. Replaces the Skiper53 carousel with a custom MobileImageCarousel — a horizontal fan of 8 guru portraits where tapping a panel expands it to 35% width.
getCloudflareImageBiggest() for full-resolution display.
Header
File:components/organisms/header.tsxExported as:
Header
Minimal page header with the Nxt (Vercel-style) logo SVG, a horizontal nav with three links (Features, Pricing, Docs), and a gooey-effect Login button group. Used on internal/utility pages.
StickyFooter
File:components/organisms/sticky-footer.tsxExported as:
StickyFooter
Site-wide footer with responsive desktop/mobile layouts. Contains:
- Temple name and address (200 Swamibapa Way, Secaucus, NJ 07094)
- Inspirational attribution to His Divine Holiness Acharya Shree Jitendriyapriyadasji Swamiji Maharaj
- Social links: Maninagar website, YouTube, Instagram
- Footer links: Privacy Policy, Contact Us, About
border-red-500/60), backdrop blur, and bg-title-section-bg.
StandardPageHeader
File:components/organisms/standard-page-header.tsxExported as:
StandardPageHeader
Reusable animated page title block used at the top of interior pages.
y: 30 → 0 framer-motion transition.
ShaderBackground
File:components/organisms/shader-background.tsxExported as:
ShaderBackground
Full-screen animated mesh gradient background using @paper-design/shaders-react MeshGradient. Wraps children in a min-h-screen container.
| Device | Primary speed | Secondary shader |
|---|---|---|
| Mobile | 0.20 | Disabled |
| Tablet | 0.20 | Enabled |
| Desktop | 0.55 | Enabled (opacity 50%) |
glass-effect and gooey-filter are injected into the DOM. Mouse enter/leave activates the isActive state (reserved for future interactive effects).
Colours: ["#0D132D", "#0D132D", "#FFFFFF", "#F3F3F3"] — deep navy to white.
ScrollColorWrapper
File:components/organisms/scroll-color-wrapper.tsx
Wrapper that changes background colour on scroll, used for section transitions.
ParallaxDivider
File:components/organisms/parallax-divider.tsx
Decorative section divider with a parallax scroll effect.
ParallaxQuote
File:components/organisms/parallax-quote.tsx
Full-width quote block with parallax scrolling. Used between sections in the main page and video section.
Forms
SevaSubmissionForm
File:components/organisms/seva-submission-form.tsxExported as:
SevaSubmissionForm
Spiritual seva submission form on the /spiritual-seva page. Validates with react-hook-form + zod and submits to Supabase.
Fields:
| Field | Type | Required |
|---|---|---|
| First Name | Text | Yes |
| Middle Name | Text | No |
| Last Name | Text | Yes |
| Ghaam | Text | Yes |
| Phone Number | Phone (international) | Yes |
| Country | Select | Yes |
| Mandal | Select or auto-filled | Yes |
| Seva Types | Checkboxes (multi-select) | Min 1 |
| Seva counts | Number per selected type | Yes |
react-phone-number-input. On success, a toast is shown: “Seva recorded, ! Jay Shree Swaminarayan”.
Media
AudioPlayer
File:components/audio-player.tsx(root components directory, not in organisms) Persistent floating play/pause button for the background prayer audio. Fixed at
bottom-6 right-18 z-40.
- Is only shown once audio is loaded (
isLoadedfromAudioContext) - Shows a
animate-float-attentionpulse animation until the user first scrolls - Adapts icon colour based on background brightness
- Calls
toggle()fromuseAudioContext()on click
AashirwadVideoPlayer
File:components/organisms/aashirwad-video-player.tsxExported as:
AashirwadVideoPlayer
Full-screen section with a Cloudflare Stream video embed. Shows a GIF thumbnail until the user clicks play, then replaces it with a lazy-loaded <iframe> with autoplay=true.
VideoSection
File:components/organisms/video-section.tsxExported as:
VideoSection
YouTube video showcase section with three Rajat Mahotsav trailer/drone videos. Rendered as a 3-column grid on xl and above, and as an Embla swipe carousel below that. Auto-advances the mobile carousel every 4.5 seconds.
VideoCard is played, background audio is paused via useAudioContext().pause(). Carousel slide changes reset the playing state.
ImageCarouselModal
File:components/organisms/image-carousel-modal.tsxExported as:
ImageCarouselModal
Full-screen lightbox modal for browsing an array of images. Navigation via prev/next buttons, dot indicators, and touch swipe (using framer-motion drag with a swipe power threshold).
stiffness: 300, damping: 30).
PhotoAlbumModal
File:components/organisms/photo-album-modal.tsx
Extended version of ImageCarouselModal accepting EventPhoto[] objects (with metadata) instead of plain strings. Adds keyboard navigation (← →, Escape) and an initialIndex prop for opening at a specific photo.
ResponsiveImageGallery
File:components/organisms/responsive-image-gallery.tsxExported as:
ResponsiveImageGallery
Shows exactly three images. On md and above renders a 3-column grid with staggered framer-motion entrance animations. On mobile it renders a MobileSectionCarousel.
ImageMarquee
File:components/organisms/image-marquee.tsxExported as:
ImageMarquee
Horizontally scrolling marquee of images, used for decorative photo strips.
GuruCarousel
File:components/organisms/guru-carousel.tsxExported as:
GuruCarousel
Horizontal scrolling carousel of GuruCard molecules displaying the lineage of gurus.
MobileSectionCarousel
File:components/organisms/mobile-section-carousel.tsxExported as:
MobileSectionCarousel
Embla-based swipe carousel for small screens. Used by ResponsiveImageGallery as its mobile fallback.
Animations
MobileTimeline
File:components/organisms/MobileTimeline.tsxExported as:
MobileTimeline
The full mobile-only timeline page component. Renders all entries from lib/timeline-data.ts as a stacked list of TimelineGridTile molecules. Items animate in using IntersectionObserver — each tile transitions from opacity-0 translate-y-8 to visible when 20% enters the viewport.
FloatingMenuButton and renders a closing tagline: “Let’s continue making history”.
AnimatedTextSection
File:components/organisms/animated-text-section.tsxExported as:
AnimatedTextSection
Section with text that animates in as it enters the viewport.
StickyScrollReveal
File:components/organisms/sticky-scroll-reveal.tsx
Aceternity sticky-scroll reveal effect. Content scrolls while the display panel stays fixed.
IntroVideoReveal
File:components/organisms/intro-video-reveal.tsx
Video reveal animation for the intro sequence.
BentoInitiatives
File:components/organisms/bento-initiatives.tsxExported as:
BentoInitiatives
Bento-grid layout showcasing the mahotsav’s seva initiatives.
PathOfServiceStory
File:components/organisms/path-of-service-story.tsxExported as:
PathOfServiceStory
Narrative section telling the story of service contributions.
PratisthataStory
File:components/organisms/pratishta-story.tsx
Section narrating the history of the temple’s pratishtha (consecration).
AashirwadSection
File:components/organisms/aashirwad-section.tsx
Decorative blessings (aashirwad) section.
BhagwanSevaExamples
File:components/organisms/bhagwan-seva-examples.tsx
Showcases examples of spiritual seva for Bhagwan.
VideoBackgroundSection
File:components/organisms/video-background-section.tsx
Section with a looping background video.
VideoSchema
File:components/organisms/video-schema.tsx
Structured data (<script type="application/ld+json">) injection for video SEO.
InvitationPDFViewer
File:components/organisms/invitation-pdf-viewer.tsx
Embeds the event invitation PDF on the /invitation page.
EventDetailsModal
File:components/organisms/event-details-modal.tsx
Modal for displaying full details of a single event from the Latest Events page.
EventsFilterBar
File:components/organisms/events-filter-bar.tsx
Filter controls (date range picker + search) for the Latest Events grid.
EventsGrid
File:components/organisms/events-grid.tsx
Responsive grid of EventCard molecules on the Latest Events page.
CalendarRAC
File:components/organisms/calendar-rac.tsx
Full RangeCalendar built with react-aria-components. Used inside EventsDatePicker.
GlowMenu
File:components/organisms/glow-menu.tsx
Menu bar with a glow/highlight effect used inside DesktopNavigation.
Summary by category
Navigation
Navigation, DesktopNavigation, FloatingMenuButton, TubelightNavigation, TubelightNavbar, GlowMenuLayout
TitleSection, TitleSectionMobile, Header, StickyFooter, StandardPageHeader, ShaderBackground, ScrollColorWrapper, ParallaxDivider, ParallaxQuoteForms
SevaSubmissionForm, CalendarRAC, EventsFilterBarMedia
AudioPlayer, AashirwadVideoPlayer, VideoSection, VideoBackgroundSection, ImageCarouselModal, PhotoAlbumModal, ResponsiveImageGallery, ImageMarquee, GuruCarousel, MobileSectionCarouselAnimations
MobileTimeline, AnimatedTextSection, StickyScrollReveal, IntroVideoReveal, BentoInitiatives, PathOfServiceStoryContent
AashirwadSection, BhagwanSevaExamples, PratisthataStory, InvitationPDFViewer, EventDetailsModal, EventsGrid, VideoSchema