@@ -11,8 +11,8 @@ import { DeleteOperationProvider } from '@/contexts/DeleteOperationContext';
1111import { BillingProvider } from '@/contexts/BillingContext' ;
1212import { useAccounts } from '@/hooks/use-accounts' ;
1313import { Loader2 } from 'lucide-react' ;
14- import { MaintenancePage } from '@/components/maintenance/maintenance-page' ;
1514import { StatusOverlay } from '@/components/ui/status-overlay' ;
15+ import { ApiHealthBanner } from '@/components/ui/api-health-banner' ;
1616import type { IMaintenanceNotice } from '@/lib/edge-flags' ;
1717import { MaintenanceNotice } from './_components/maintenance-notice' ;
1818import { MaintenanceBanner } from './_components/maintenance-banner' ;
@@ -37,6 +37,7 @@ export default function HomeLayout({
3737 const { user, isLoaded } = useUser ( ) ;
3838 const [ sidebarOpen , setSidebarOpen ] = useState ( false ) ;
3939 const [ isClient , setIsClient ] = useState ( false ) ;
40+ const [ showHealthBanner , setShowHealthBanner ] = useState ( true ) ;
4041 const pathname = usePathname ( ) ;
4142
4243 // TODO: Implement maintenance notice fetching from API or server component
@@ -97,27 +98,28 @@ export default function HomeLayout({
9798 ) ;
9899 }
99100
100- // Enhanced: Show loading state while checking auth or health
101- if ( ! isClient || ! isLoaded || isCheckingHealth ) {
101+ // Health banner shown when API is unhealthy (non-blocking)
102+ const healthBanner = ! isApiHealthy && ! isCheckingHealth && showHealthBanner ? (
103+ < ApiHealthBanner onDismiss = { ( ) => setShowHealthBanner ( false ) } />
104+ ) : null ;
105+
106+ // Show loading state while checking auth (health check runs in background)
107+ if ( ! isClient || ! isLoaded ) {
102108 return (
103109 < div className = "flex items-center justify-center min-h-screen" >
104110 < Loader2 className = "h-8 w-8 animate-spin text-primary" />
105111 </ div >
106112 ) ;
107113 }
108114
109- // Enhanced: Show maintenance page if API is not healthy
110- if ( ! isApiHealthy ) {
111- return < MaintenancePage /> ;
112- }
113-
114115 // Enhanced: Graceful degradation - Don't render anything if not authenticated
115116 // Note: BillingProvider removed from unauthenticated branch - billing is only needed for authenticated users
116117 if ( ! user ) {
117118 return (
118119 < div
119120 className = { `w-full relative min-h-screen ${ ! isThreadPage ? 'gradient-home-bg' : 'bg-thread-panel' } ` }
120121 >
122+ { healthBanner }
121123 { ! isThreadPage && < Navbar sidebarOpen = { false } /> }
122124 < div className = { isThreadPage ? "pt-0" : "pt-6" } >
123125 < Suspense fallback = { < PageLoadingFallback /> } >
@@ -142,6 +144,8 @@ export default function HomeLayout({
142144 < SidebarInset >
143145 { /* Enhanced: Maintenance banner */ }
144146 { maintenanceBanner }
147+ { /* Health banner when API is unhealthy */ }
148+ { healthBanner }
145149
146150 < div
147151 className = { `w-full relative min-h-screen ${ ! isThreadPage ? 'gradient-home-bg' : 'bg-thread-panel' } ` }
0 commit comments