;
- // 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 && }
-
-
-
- );
+ return ;
}
diff --git a/src/app/home/page.tsx b/src/app/home/page.tsx
deleted file mode 100644
index eefe108..0000000
--- a/src/app/home/page.tsx
+++ /dev/null
@@ -1,16 +0,0 @@
-import UserLayout from "../(user)/layout";
-import DashboardPage from "../(user)/user/dashboard/page";
-
-export const metadata = {
- title: "RE-Quest - Connect with Trusted Real Estate Professionals",
- description:
- "Discover verified real estate professionals for buying, selling, renting, and investing. Search by location, specialization, and expertise to connect with trusted agents on RE-Quest.",
-};
-
-export default function HomePage() {
- return (
-
-
-
- );
-}
diff --git a/src/components/home/HomeDashboard.tsx b/src/components/home/HomeDashboard.tsx
new file mode 100644
index 0000000..c83bb92
--- /dev/null
+++ b/src/components/home/HomeDashboard.tsx
@@ -0,0 +1,54 @@
+'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 && }
+
+
+
+ );
+}