Component Categories
Forms & User Input
Components that collect user information and facilitate engagement.DonationForm
Secure donation form with one-time and recurring options, fee coverage, and DonorKit integration
PrayerRequestForm
Prayer request submission form with anonymous option and Formspree integration
UI & Alerts
Components for displaying important messages and notifications to users.AlertBanner
Modal alert dialog for important announcements with dismissal tracking
CookieBanner
GDPR/CCPA-compliant cookie consent banner with granular privacy controls
SeasonalBanner
Automatic liturgical season banners with countdown timers for holidays
WeatherBanner
Emergency service cancellation banner for weather-related closures
Accessibility
Components that enhance website accessibility for all users.AccessibilityMenu
Comprehensive WCAG 2.1 AA compliant accessibility controls panel
Calendar & Events
Components for displaying church events and schedules.SundayCalendar
Dynamic schedule of upcoming Sunday services with API integration
Interactive Displays
Components that showcase dynamic content and testimonies.SalvationMarquee
Scrolling marquee of salvation testimonies (React component)
Additional Components
The website also includes several utility and layout components not individually documented but used throughout the site: Layout Components (src/ui/):
- Header - Site navigation with mobile menu, used in all pages via Layout
- Footer - Site footer with contact info and links, used in all pages via Layout
- AlertSmall - Compact alert messages used in Layout for site-wide announcements
- LocationPermission - Prompts users for location access when needed
- PrivacyBanner - Privacy notification banner shown in Layout
- LocationMap - Interactive Mapbox map component (documented in Worship page)
- SharePost - Social sharing buttons (documented in Blog page)
- ExternalLinkWarning - Warning modal when leaving the site
- SelfXSS - Console warning to prevent self-XSS attacks
Component Architecture
Astro Components (.astro)
Most components are built as Astro components, which provide:- Server-side rendering for better performance
- Scoped styles that don’t leak
- Built-in TypeScript support with Props interfaces
- Client-side interactivity via
<script>tags
React Components (.tsx)
Some components use React for advanced interactivity:- SalvationMarquee: Uses
@joycostudio/marquee/reactfor smooth scrolling
Common Patterns
Props Interface
All components define their props using TypeScript interfaces:Client-Side Scripts
Many components include client-side JavaScript for interactivity:Style Scoping
Components use both scoped and global styles:Best Practices
When using these components, always:
- Import from the correct path:
'../components/ComponentName.astro' - Provide required props (marked with no
?in the interface) - Test accessibility features with keyboard navigation
- Check responsive behavior on mobile devices