diff --git a/src/App.tsx b/src/App.tsx
index f8e2fff..4ba96a0 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -4,19 +4,14 @@ import {
ArrowRight,
Backpack,
CheckCircle2,
- Facebook,
Globe,
Heart,
- Instagram,
Mail,
MapPin,
- Menu,
- Moon,
Phone,
Shirt,
Sparkles,
Star,
- SunMedium,
Users,
Building2,
BookOpenText,
@@ -67,6 +62,10 @@ import AdvancedAnalyticsDashboard from './components/AdvancedAnalyticsDashboard'
import MobileVolunteerApp from './components/MobileVolunteerApp'
import StaffTrainingDashboard from './components/StaffTrainingDashboard'
+// Phase 4: Extracted Components
+import { Navigation } from './components/Navigation'
+import { Footer } from './components/Footer'
+
/**
* Miracles in Motion — Complete Non-Profit Website
* A comprehensive 501(c)3 organization website with modern design,
@@ -778,175 +777,9 @@ function SkipToContent() {
)
}
-interface NavProps {
- darkMode: boolean
- setDarkMode: (value: boolean) => void
- mobileMenuOpen: boolean
- setMobileMenuOpen: (value: boolean) => void
-}
+// Nav component has been extracted to ./components/Navigation.tsx
-function Nav({ darkMode, setDarkMode, mobileMenuOpen, setMobileMenuOpen }: NavProps) {
- // Close mobile menu when route changes
- useEffect(() => {
- setMobileMenuOpen(false)
- }, [window.location.hash])
-
- // Handle keyboard navigation
- const handleKeyDown = (e: React.KeyboardEvent, action: () => void) => {
- if (e.key === 'Enter' || e.key === ' ') {
- e.preventDefault()
- action()
- }
- }
-
- return (
- <>
-
-
- {/* Mobile Menu */}
-
- >
- )
-}
-
-function LogoMark() {
- return (
-
-
-
-
- )
-}
+// LogoMark component has been extracted to ./components/ui/LogoMark.tsx
/* ===================== Home Page ===================== */
function HomePage() {
@@ -4374,61 +4207,7 @@ function BackgroundDecor() {
)
}
-function Footer() {
- return (
-
- )
-}
+// Footer component has been extracted to ./components/Footer.tsx
function StickyDonate() {
return (
@@ -4615,7 +4394,7 @@ function AppContent() {
)}
-