'use client'; import { useState, useEffect } from 'react'; import { HeroSection } from '@/components/home/HeroSection'; import { FeaturesSection } from '@/components/home/FeaturesSection'; import { TopProfessionals } from '@/components/home/TopProfessionals'; import { TestimonialsSection } from '@/components/home/TestimonialsSection'; import { cmsService, resolveImageUrl } from '@/services/cms.service'; import type { HeroContent, FeaturesContent, TopProfessionalsContent, TestimonialsContent } from '@/types/cms'; // Shared landing/dashboard content rendered by both /home and /user/dashboard. export function HomeDashboard() { const [cmsData, setCmsData] = useState>({}); const [cmsLoaded, setCmsLoaded] = useState(false); useEffect(() => { const fetchCms = async () => { try { const sections = await cmsService.getPageContent('landing'); const data: Record = {}; for (const s of sections) { const content = s.content as Record; // Resolve S3 keys in image fields if (s.sectionKey === 'features' && Array.isArray(content.features)) { for (const feat of content.features as { iconPath?: string }[]) { if (feat.iconPath) feat.iconPath = await resolveImageUrl(feat.iconPath); } } if (s.sectionKey === 'testimonials' && Array.isArray(content.stats)) { for (const stat of content.stats as { iconPath?: string }[]) { if (stat.iconPath) stat.iconPath = await resolveImageUrl(stat.iconPath); } } data[s.sectionKey] = content; } setCmsData(data); } catch { // Use default content on error } finally { setCmsLoaded(true); } }; fetchCms(); }, []); return (
{cmsLoaded && }
); }