"use client"; import { useState, useEffect } from "react"; import React from "react"; import visaData from "../visa.json"; import Breadcrumb from "../components/Breadcrumb"; const ASSET_URL = process.env.NEXT_PUBLIC_API_URL || ""; interface VisaCountryData { id: number; name: string; icon: string; services: string[]; } interface CountryDetailsProps { params: Promise<{ slug: string; }>; } // Helper function to map slugs to country names const getCountryFromSlug = (slug: string): string => { const slugToCountry: { [key: string]: string } = { france: "France", uk: "UK", canada: "Canada", germany: "Germany", spain: "Spain", "south-korea": "South Korea", japan: "Japan", croatia: "Croatia", england: "England", indonesia: "Indonesia", "united-states-of-america": "United States of America", }; return slugToCountry[slug] || slug; }; export default function CountryDetailsPage({ params }: CountryDetailsProps) { const [country, setCountry] = useState(null); const [loading, setLoading] = useState(true); const [slug, setSlug] = useState(""); useEffect(() => { // Unwrap the params Promise Promise.resolve(params).then((resolvedParams) => { const currentSlug = resolvedParams.slug; setSlug(currentSlug); const countryName = getCountryFromSlug(currentSlug); const foundCountry = visaData.visaSystem.summaryList.find( (c) => c.name === countryName, ); if (foundCountry) { setCountry(foundCountry); } setLoading(false); }); }, [params]); if (loading) { return (
); } if (!country) { return (

Country not found

); } const breadcrumbData = visaData.visaSystem.breadcrumb; const countryData = visaData.visaSystem.detailedView.activeCountry; const relatedCountries = visaData.visaSystem.detailedView.relatedCountries; const contactInfo = visaData.visaSystem.contactInfo; return ( <> {/* Breadcrumb-Wrapper Section Start */} {/* Country-details Section Start */}
{/* Main Content */}
img

{countryData.name}

{countryData.description}

{countryData.additionalInfo}

{countryData.tagline}
{/* Visa Types */}
{/* Render mảng đầu tiên (index 0) */} {countryData.visaTypes[0] && (
{countryData.visaTypes[0].items.map( (item: any, itemIdx: number) => (
{item.title}

{item.description}

), )}
)} {/* Render mảng thứ hai (index 1) */} {countryData.visaTypes[1] && (
{countryData.visaTypes[1].items.map( (item: any, itemIdx: number) => (
{item.title}

{item.description}

), )}
)}
{/* Visa Process */}

{countryData.visaProcess.title}

    {countryData.visaProcess.steps.map( (process: any, idx: number) => (
  • {process.number}. {process.title} – {process.description}
  • ), )}
{/* Gallery */}
{countryData.gallery.map((image: string, idx: number) => (
img
))}
{/* Visa Categories */}

{countryData.visaCategories.title}

{countryData.visaCategories.steps.map( (subGroup: string[], groupIdx: number) => (
    {/* Map lần 2 để render từng chuỗi trong mảng con */} {subGroup.map((category: string, idx: number) => (
  • {category}
  • ))}
), )} {/* Service Options */}

{countryData.visaService.title}

    {countryData.visaService.steps.map( (process: any, idx: number) => (
  • {process.number}. {process.title} – {process.description}
  • ), )}
{/* Sidebar */}
{relatedCountries.map((relCountry: any, idx: number) => (
img
{relCountry.name}
))} {/* Contact Box */}

{contactInfo.sectionTitle}

{contactInfo.helpText}

{contactInfo.phone.label}:
{contactInfo.phone.value}
{contactInfo.email.label}:
{contactInfo.email.value}
{contactInfo.location.label}:
{contactInfo.location.address}
); }