feat: implement initial home page with dynamic content, API, and dedicated components.

This commit is contained in:
Wini_Fy
2026-02-05 15:56:06 +07:00
parent 857d250435
commit 11f435378f
8 changed files with 189 additions and 102 deletions

View File

@@ -8,21 +8,42 @@ import FAQSection from './components/home/FAQSection';
import Achievements from './components/home/Achievements';
import Partners from './components/home/Partners';
import BlogPreview from './components/home/BlogPreview';
import homeData from './home.json';
import localHomeData from './home.json';
import { fetchHomeData } from '@/api';
import { getCmsImageUrl } from '@/utils/image';
export default async function Home() {
// Fetch home data (blog aggregation is now handled by the backend)
const apiHomeData = await fetchHomeData();
// Use API home data if available, otherwise fallback to local JSON
const data = JSON.parse(JSON.stringify(apiHomeData || localHomeData));
// Process Hero Image URL
if (data.hero?.backgroundImage) {
data.hero.backgroundImage = getCmsImageUrl(data.hero.backgroundImage);
}
// Process blog images from CMS (thumbnail normalization)
if (data.blogPreview?.items) {
data.blogPreview.items = data.blogPreview.items.map((item: any) => ({
...item,
thumbnail: getCmsImageUrl(item.thumbnail) || '/assets/img/home-1/news/01.jpg'
}));
}
export default function Home() {
return (
<>
<HeroSection data={homeData.hero} />
<WhyChooseUs data={homeData.whyChooseUs} />
<VisaSolutions data={homeData.visaSolutions} />
<VisaCountries data={homeData.visaCountries} />
<Testimonials data={homeData.testimonials} />
<VideoGallery data={homeData.videoGallery} />
<FAQSection data={homeData.faq} />
<Achievements data={homeData.achievements} />
<Partners data={homeData.partners} />
<BlogPreview data={homeData.blogPreview} />
<HeroSection data={data.hero} />
<WhyChooseUs data={data.whyChooseUs} />
<VisaSolutions data={data.visaSolutions} />
<VisaCountries data={data.visaCountries} />
<Testimonials data={data.testimonials} />
<VideoGallery data={data.videoGallery} />
<FAQSection data={data.faq} />
<Achievements data={data.achievements} />
<Partners data={data.partners} />
<BlogPreview data={data.blogPreview} />
</>
);
}