diff --git a/app/about/about.json b/app/about/about.json
index 73963bd..dcdfd59 100644
--- a/app/about/about.json
+++ b/app/about/about.json
@@ -1,33 +1,97 @@
{
- "title": "Về Chúng Tôi",
- "subtitle": "Đối tác tin cậy cho dịch vụ visa và du lịch",
- "description": "Chúng tôi là công ty hàng đầu trong lĩnh vực tư vấn visa và dịch vụ du lịch, với hơn 10 năm kinh nghiệm phục vụ khách hàng.",
- "sections": [
- {
- "heading": "Sứ Mệnh",
- "content": "Mang đến cho khách hàng những trải nghiệm du lịch tuyệt vời và hỗ trợ thủ tục visa một cách nhanh chóng, chính xác."
- },
- {
- "heading": "Tầm Nhìn",
- "content": "Trở thành công ty dẫn đầu trong lĩnh vực dịch vụ visa và du lịch tại Việt Nam."
- },
- {
- "heading": "Giá Trị Cốt Lõi",
- "content": "Uy tín - Chất lượng - Tận tâm - Chuyên nghiệp"
- }
- ],
+ "hero": {
+ "title": "About Us",
+ "subtitle": "Global Education Simplified",
+ "breadcrumb": [
+ "Home",
+ "About Us"
+ ],
+ "backgroundImage": "/assets/img/inner-page/breadcrumb.jpg"
+ },
+ "intro": {
+ "heading": "Building Pathways to Your Immigration Success",
+ "description": "We provide expert guidance, personalized solutions, and transparent processes to help you achieve your immigration goals. Our dedicated team ensures a smooth journey, building pathways to your international success.",
+ "highlights": [
+ "Expert Visa Consulting",
+ "Smooth Documentation Process",
+ "Personalized Student Guidance"
+ ],
+ "image": "/assets/img/inner-page/intro.jpg"
+ },
+ "mission": {
+ "title": "Our Commitment to Your Future",
+ "items": [
+ {
+ "label": "Mission",
+ "description": "To guide students with expert visa consulting, ensuring a smooth process from application to approval and turning dreams into reality."
+ },
+ {
+ "label": "Vision",
+ "description": "To be the most trusted global education consultancy, expanding opportunities and building paths to international success for every student."
+ },
+ {
+ "label": "Values",
+ "description": "Transparency, integrity, and excellence in every visa application, ensuring reliable assistance and professional support."
+ }
+ ]
+ },
"stats": [
{
- "number": "10000+",
- "label": "Khách hàng hài lòng"
+ "label": "Years Experience",
+ "value": 10
},
{
- "number": "50+",
- "label": "Quốc gia hỗ trợ visa"
+ "label": "Students Helped",
+ "value": 1000
},
{
- "number": "99%",
- "label": "Tỷ lệ thành công"
+ "label": "Success Rate",
+ "value": "95%"
+ },
+ {
+ "label": "Countries Covered",
+ "value": 50
}
- ]
+ ],
+ "team": {
+ "title": "Meet Our Expert Team",
+ "members": [
+ {
+ "name": "Eleanor Pena",
+ "role": "Lead Legal Consultant",
+ "image": "/assets/img/home-1/testimonial/client.png",
+ "social": {
+ "facebook": "href",
+ "linkedin": "href"
+ }
+ },
+ {
+ "name": "Jerome Bell",
+ "role": "Senior Visa Expert",
+ "image": "/assets/img/home-1/testimonial/client-2.png",
+ "social": {
+ "facebook": "href",
+ "linkedin": "href"
+ }
+ },
+ {
+ "name": "Marvin McKinney",
+ "role": "Immigration Advisor",
+ "image": "/assets/img/home-1/news/client.png",
+ "social": {
+ "facebook": "href",
+ "linkedin": "href"
+ }
+ },
+ {
+ "name": "Kathryn Murphy",
+ "role": "Education Consultant",
+ "image": "/assets/img/home-1/testimonial/client.png",
+ "social": {
+ "facebook": "href",
+ "linkedin": "href"
+ }
+ }
+ ]
+ }
}
diff --git a/app/about/page.tsx b/app/about/page.tsx
index 46f771d..c909cf5 100644
--- a/app/about/page.tsx
+++ b/app/about/page.tsx
@@ -1,49 +1,24 @@
-import aboutData from "./about.json";
+import {
+ AboutHero,
+ AboutIntro,
+ AboutMission,
+ AboutStats,
+ AboutTeam,
+ AboutFeatures,
+ AboutNews
+} from '../components/about';
+import aboutData from './about.json';
export default function AboutPage() {
- return (
-
-
- {/* Header */}
-
-
- {aboutData.title}
-
-
{aboutData.subtitle}
-
- {aboutData.description}
-
-
-
- {/* Sections */}
-
- {aboutData.sections.map((section, index) => (
-
-
- {section.heading}
-
-
{section.content}
-
- ))}
-
-
- {/* Stats */}
-
-
- Thành Tích Của Chúng Tôi
-
-
- {aboutData.stats.map((stat, index) => (
-
-
- {stat.number}
-
-
{stat.label}
-
- ))}
-
-
-
-
- );
+ return (
+ <>
+
+
+
+
+
+
+
+ >
+ );
}
diff --git a/app/about/types.ts b/app/about/types.ts
new file mode 100644
index 0000000..f8049fc
--- /dev/null
+++ b/app/about/types.ts
@@ -0,0 +1,37 @@
+export interface AboutData {
+ hero: {
+ title: string;
+ subtitle: string;
+ breadcrumb: string[];
+ backgroundImage: string;
+ };
+ intro: {
+ heading: string;
+ description: string;
+ highlights: string[];
+ image: string;
+ };
+ mission: {
+ title: string;
+ items: {
+ label: string;
+ description: string;
+ }[];
+ };
+ stats: {
+ label: string;
+ value: number | string;
+ }[];
+ team: {
+ title: string;
+ members: {
+ name: string;
+ role: string;
+ image: string;
+ social: {
+ facebook: string;
+ linkedin: string;
+ };
+ }[];
+ };
+}
diff --git a/app/blog/[slug]/components/NewsDetailsContent.tsx b/app/blog/[slug]/components/NewsDetailsContent.tsx
new file mode 100644
index 0000000..569f7c8
--- /dev/null
+++ b/app/blog/[slug]/components/NewsDetailsContent.tsx
@@ -0,0 +1,226 @@
+import Link from "next/link";
+
+export default function NewsDetailsContent() {
+ return (
+
+
+
+
+
+
+
+
+
+ By Admin
+
+
+
+ 11 March 2025
+
+
+
+ 0 Comments
+
+
+
Work Visa vs. Student Visa Which is Right for You?
+
+ Choosing between a work visa and a student visa depends on your career and academic goals. A
+ student visa allows you to pursue higher education abroad, gain international exposure, and
+ sometimes work part-time while studying. On the other hand, a work visa is for professionals
+ seeking employment opportunities and long-term career growth in another country.
+
+
+ Both options have unique benefits, eligibility requirements, and future pathways. Understanding
+ your personal ambitions, financial plans, and long-term vision will help you decide which visa
+ option best suits your journey.
+
+
Work Visa vs. Student Visa: Which is Right for You?
+
+ Choosing between a student visa and a work visa is a major decision that shapes your future
+ abroad. Both visa types open unique opportunities, but the right choice depends on your goals,
+ priorities, and resources. A student visa is designed for individuals who wish to pursue higher
+ education in a foreign country.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This blog really helped me understand the difference between student and work visas. The
+ explanations were clear and practical.
+
+
+
+ It provides access to world-class universities, cultural exposure, and global networking
+ opportunities. With a student visa, you may also get part-time work rights, which can help support
+ your expenses and give you valuable international work experience. However, the primary focus
+ remains on academics and personal growth. On the other hand, a work visa is perfect for those who
+ want to establish themselves in a career overseas.
+
+
+ It provides immediate access to job markets, stable income, and often a pathway to permanent
+ residency. Work visas are suitable for skilled professionals who are ready to contribute to the
+ global workforce and achieve long-term career goals. Ultimately, the choice comes down to your
+ personal aspirations. If education and exploration are your priorities, a student visa is ideal. If
+ career advancement and stability are your goals, a work visa is the right fit.
+
+
+
+
+ Tags:
+ WorkVisa
+ FamilyVisa
+ StudentVisa
+
+
+
+
+
+
+
02 Comments
+
+
+
+
+
+
+
+
+ February 10, 2024
+
Frank Flores
+
+
+ Reply
+
+
+
+ Neque porro est qui dolorem ipsum quia quaed inventor veritatis et quasi architecto var sed
+ efficitur turpis gilla sed sit amet finibus eros. Lorem Ipsum is simply dummy
+
+
+
+
+
+
+
+
+
+
+
Charlie Tushar
+ February 10, 2024
+
+
+ Reply
+
+
+
+ Neque porro est qui dolorem ipsum quia quaed inventor veritatis et quasi architecto var sed
+ efficitur turpis gilla sed sit amet finibus eros. Lorem Ipsum is simply dummy
+
+
+
+
+
+
+
+
+
+
+ February 10, 2024
+
Fatma Sariqul
+
+
+ Reply
+
+
+
+ Neque porro est qui dolorem ipsum quia quaed inventor veritatis et quasi architecto var sed
+ efficitur turpis gilla sed sit amet finibus eros. Lorem Ipsum is simply dummy
+
+
+
+
+
Leave A Comment
+
+
+
+
+ );
+}
diff --git a/app/blog/[slug]/components/NewsDetailsSection.tsx b/app/blog/[slug]/components/NewsDetailsSection.tsx
new file mode 100644
index 0000000..8f088f7
--- /dev/null
+++ b/app/blog/[slug]/components/NewsDetailsSection.tsx
@@ -0,0 +1,17 @@
+import NewsDetailsContent from "./NewsDetailsContent";
+import Sidebar from "@/app/blog/components/Sidebar";
+
+export default function NewsDetailsSection() {
+ return (
+
+ );
+}
diff --git a/app/blog/[slug]/page.tsx b/app/blog/[slug]/page.tsx
new file mode 100644
index 0000000..eec7592
--- /dev/null
+++ b/app/blog/[slug]/page.tsx
@@ -0,0 +1,17 @@
+import Breadcrumb from "@/app/components/Breadcrumb";
+import NewsDetailsSection from "./components/NewsDetailsSection";
+
+interface BlogDetailsPageProps {
+ params: {
+ slug: string;
+ };
+}
+
+export default function BlogDetailsPage(_props: BlogDetailsPageProps) {
+ return (
+ <>
+
+
+ >
+ );
+}
diff --git a/app/blog/components/Breadcrumb.tsx b/app/blog/components/Breadcrumb.tsx
deleted file mode 100644
index 2be740c..0000000
--- a/app/blog/components/Breadcrumb.tsx
+++ /dev/null
@@ -1,23 +0,0 @@
-export default function Breadcrumb() {
- return (
-
-
-
-
-
-
-
Blog Stardard
-
-
- Home
-
-
-
-
- Blog Stardard
-
-
-
-
- );
-}
\ No newline at end of file
diff --git a/app/blog/components/NewsList.tsx b/app/blog/components/NewsList.tsx
index fe2c610..cb1736c 100644
--- a/app/blog/components/NewsList.tsx
+++ b/app/blog/components/NewsList.tsx
@@ -1,3 +1,5 @@
+import Link from "next/link";
+
export default function NewsList() {
return (
@@ -19,14 +21,14 @@ export default function NewsList() {
A business consultant provides expert guidance, strategic planning, and problem-solving support—helping startups avoid mistakes, grow faster, and operate more efficiently from day one.
-
+
VIEW MORE
-
+
{/* News Post 2 */}
@@ -47,14 +49,14 @@ export default function NewsList() {
Immigration consultants play a vital role in guiding applicants, simplifying complex processes, offering expert advice, and ensuring successful outcomes for study, work, or permanent residency abroad.
-
+
VIEW MORE
-
+
{/* News Post 3 */}
@@ -75,14 +77,14 @@ export default function NewsList() {
Stay informed with the latest immigration policy updates, ensuring you understand new rules, visa requirements, and opportunities that impact your study, work, or migration journey abroad.
-
+
VIEW MORE
-
+
diff --git a/app/blog/components/Sidebar.tsx b/app/blog/components/Sidebar.tsx
index 19e2c73..2842f4c 100644
--- a/app/blog/components/Sidebar.tsx
+++ b/app/blog/components/Sidebar.tsx
@@ -1,3 +1,5 @@
+import Link from "next/link";
+
export default function Sidebar() {
return (
@@ -16,15 +18,15 @@ export default function Sidebar() {
{/* Categories */}
-
Cetegories
+ Categories
@@ -40,7 +42,7 @@ export default function Sidebar() {
March 26, 2025
@@ -53,7 +55,7 @@ export default function Sidebar() {
March 26, 2025
@@ -66,7 +68,7 @@ export default function Sidebar() {
March 26, 2025
@@ -82,12 +84,12 @@ export default function Sidebar() {
diff --git a/app/blog/page.tsx b/app/blog/page.tsx
index 90f5250..50883a4 100644
--- a/app/blog/page.tsx
+++ b/app/blog/page.tsx
@@ -1,10 +1,10 @@
-import Breadcrumb from "./components/Breadcrumb";
+import Breadcrumb from "@/app/components/Breadcrumb";
import NewsSection from "./components/NewsSection";
export default function NewsPage() {
return (
<>
-
+
>
);
diff --git a/app/components/BackToTop.tsx b/app/components/BackToTop.tsx
new file mode 100644
index 0000000..bc2ce0d
--- /dev/null
+++ b/app/components/BackToTop.tsx
@@ -0,0 +1,7 @@
+export default function BackToTop() {
+ return (
+
+
+
+ );
+}
diff --git a/app/components/Breadcrumb.tsx b/app/components/Breadcrumb.tsx
index ead1dcf..79c902b 100644
--- a/app/components/Breadcrumb.tsx
+++ b/app/components/Breadcrumb.tsx
@@ -1,31 +1,31 @@
interface BreadcrumbProps {
- title: string;
- current: string;
+ title: string;
+ current: string;
}
export default function Breadcrumb({ title, current }: BreadcrumbProps) {
- return (
-
-
-
-
-
-
-
{title}
-
-
- Home
-
-
-
-
- {current}
-
-
-
-
- );
+ return (
+
+
+
+
+
+
+
{title}
+
+
+ Home
+
+
+
+
+ {current}
+
+
+
+
+ );
}
diff --git a/app/components/Footer.tsx b/app/components/Footer.tsx
deleted file mode 100644
index dc1fb12..0000000
--- a/app/components/Footer.tsx
+++ /dev/null
@@ -1,191 +0,0 @@
-import Link from "next/link";
-
-export default function Footer() {
- const currentYear = new Date().getFullYear();
-
- const quickLinks = [
- { name: "Về chúng tôi", href: "/about" },
- { name: "Dịch vụ", href: "/services" },
- { name: "Bảng giá", href: "/pricing" },
- { name: "Blog", href: "/blog" },
- { name: "Liên hệ", href: "/contact" },
- ];
-
- const visaServices = [
- { name: "Visa Mỹ", href: "/visa" },
- { name: "Visa Schengen", href: "/visa" },
- { name: "Visa Nhật Bản", href: "/visa" },
- { name: "Visa Hàn Quốc", href: "/visa" },
- { name: "Visa Canada", href: "/visa" },
- ];
-
- const countries = [
- { name: "Châu Âu", href: "/countries" },
- { name: "Bắc Mỹ", href: "/countries" },
- { name: "Châu Á", href: "/countries" },
- { name: "Châu Đại Dương", href: "/countries" },
- ];
-
- return (
-
- );
-}
diff --git a/app/components/Header.tsx b/app/components/Header.tsx
deleted file mode 100644
index 3e8f926..0000000
--- a/app/components/Header.tsx
+++ /dev/null
@@ -1,114 +0,0 @@
-"use client";
-
-import { useState } from "react";
-import Link from "next/link";
-
-export default function Header() {
- const [isMenuOpen, setIsMenuOpen] = useState(false);
-
- const navigation = [
- { name: "Trang chủ", href: "/" },
- { name: "Về chúng tôi", href: "/about" },
- { name: "Dịch vụ", href: "/services" },
- { name: "Visa", href: "/visa" },
- { name: "Quốc gia", href: "/countries" },
- { name: "Bảng giá", href: "/pricing" },
- { name: "Blog", href: "/blog" },
- { name: "Liên hệ", href: "/contact" },
- ];
-
- return (
-
- );
-}
diff --git a/app/components/Loader.tsx b/app/components/Loader.tsx
new file mode 100644
index 0000000..bcb074e
--- /dev/null
+++ b/app/components/Loader.tsx
@@ -0,0 +1,49 @@
+"use client";
+
+import { useEffect, useState } from "react";
+
+export default function Loader() {
+ const [show, setShow] = useState(true);
+
+ useEffect(() => {
+ const timer = setTimeout(() => setShow(false), 700);
+ return () => clearTimeout(timer);
+ }, []);
+
+ if (!show) return null;
+
+ return (
+
+
+
+
+ V
+ I
+ S
+ A
+ W
+ A
+ Y
+
+
Loading
+
+
+
+ );
+}
+
diff --git a/app/components/MouseCursor.tsx b/app/components/MouseCursor.tsx
new file mode 100644
index 0000000..d9de8bf
--- /dev/null
+++ b/app/components/MouseCursor.tsx
@@ -0,0 +1,8 @@
+export default function MouseCursor() {
+ return (
+ <>
+
+
+ >
+ );
+}
diff --git a/app/components/about/AboutFeatures.tsx b/app/components/about/AboutFeatures.tsx
new file mode 100644
index 0000000..18992c7
--- /dev/null
+++ b/app/components/about/AboutFeatures.tsx
@@ -0,0 +1,71 @@
+import Link from 'next/link';
+
+const AboutFeatures = () => {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+ Your Travel Made Easy
+
+ Smooth Visa Journey Guaranteed
+
+
+
+ We provide expert guidance for every visa application, ensuring smooth processing, personalized support, and reliable assistance
+
+
+
+
+
+
+
Expert Consultants
+
+ Skilled and knowledgeable visa advisors. Skilled and knowled geable visa advisors.
+
+
+
+
+
+
+
+
+
Personalized Support
+
+ Skilled and knowledgeable visa advisors. Skilled and knowled geable visa advisors.
+
+
+
+
+
+
+
+
+
Transparent Process
+
+ Skilled and knowledgeable visa advisors. Skilled and knowled geable visa advisors.
+
+
+
+
+ Get Started Today
+
+
+
+
+
+
+
+
+ );
+};
+
+export default AboutFeatures;
diff --git a/app/components/about/AboutHero.tsx b/app/components/about/AboutHero.tsx
new file mode 100644
index 0000000..b18f21a
--- /dev/null
+++ b/app/components/about/AboutHero.tsx
@@ -0,0 +1,37 @@
+import Link from 'next/link';
+import { AboutData } from '../../about/types';
+
+interface AboutHeroProps {
+ data: AboutData['hero'];
+}
+
+const AboutHero = ({ data }: AboutHeroProps) => {
+ return (
+
+
+
+
+
+
+
{data.title}
+
+ {data.breadcrumb.map((item, index) => (
+
+ {index === data.breadcrumb.length - 1 ? (
+ item
+ ) : (
+ <>
+ {item}
+
+ >
+ )}
+
+ ))}
+
+
+
+
+ );
+};
+
+export default AboutHero;
diff --git a/app/components/about/AboutIntro.tsx b/app/components/about/AboutIntro.tsx
new file mode 100644
index 0000000..337ea63
--- /dev/null
+++ b/app/components/about/AboutIntro.tsx
@@ -0,0 +1,32 @@
+import { AboutData } from '../../about/types';
+
+interface AboutIntroProps {
+ data: AboutData['intro'];
+}
+
+const AboutIntro = ({ data }: AboutIntroProps) => {
+ return (
+
+
+
+
+ Company Intro
+
+ {data.heading}
+
+
+
+ {data.description}
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default AboutIntro;
diff --git a/app/components/about/AboutMission.tsx b/app/components/about/AboutMission.tsx
new file mode 100644
index 0000000..6b6ac48
--- /dev/null
+++ b/app/components/about/AboutMission.tsx
@@ -0,0 +1,66 @@
+import Link from 'next/link';
+import { AboutData } from '../../about/types';
+
+interface AboutMissionProps {
+ data: AboutData['mission'];
+}
+
+const AboutMission = ({ data }: AboutMissionProps) => {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ About Our Consultancy
+
+ {data.title}
+
+
+
+ {data.items.map((item, index) => (
+
+
+
+ {item.label}
+
+
{item.description}
+
+ ))}
+
+
+ Get Started
+
+
+
+
+
+
+
+
+ );
+};
+
+export default AboutMission;
diff --git a/app/components/about/AboutNews.tsx b/app/components/about/AboutNews.tsx
new file mode 100644
index 0000000..edf3287
--- /dev/null
+++ b/app/components/about/AboutNews.tsx
@@ -0,0 +1,92 @@
+import Link from 'next/link';
+
+const AboutNews = () => {
+ const newsItems = [
+ {
+ image: '/assets/img/home-1/news/news-1.jpg',
+ category: 'Student Visa',
+ comments: '08',
+ date: '20 August ,2025',
+ title: 'Step-by-Step Guide to Applying for a Student Visa',
+ author: 'Sohel',
+ authorImage: '/assets/img/home-1/news/client.png'
+ },
+ {
+ image: '/assets/img/home-1/news/news-2.jpg',
+ category: 'IELTS / TOEFL',
+ comments: '08',
+ date: '20 August ,2025',
+ title: 'Tips to Prepare Financial Documents for Visa Approval',
+ author: 'Sohel',
+ authorImage: '/assets/img/home-1/news/client.png'
+ },
+ {
+ image: '/assets/img/home-1/news/news-3.jpg',
+ category: 'Study Abroad',
+ comments: '08',
+ date: '20 August ,2025',
+ title: 'Post-Arrival Guide What Every Student Should Know',
+ author: 'Sohel',
+ authorImage: '/assets/img/home-1/news/client.png'
+ }
+ ];
+
+ return (
+
+
+
+
+ Visa Tips & Guides
+
+ Latest Insights & Updates
+
+
+
+ view all articies
+
+
+
+
+ {newsItems.map((item, index) => (
+
+
+
+
+
{item.category}
+
+
+
+
+ Comment ({item.comments})
+ _ {item.date}
+
+
+
+ {item.title}
+
+
+
+
+
+
By {item.author}
+
+
+ View Articles
+
+
+
+
+
+ ))}
+
+
+
+ );
+};
+
+export default AboutNews;
diff --git a/app/components/about/AboutStats.tsx b/app/components/about/AboutStats.tsx
new file mode 100644
index 0000000..9f08697
--- /dev/null
+++ b/app/components/about/AboutStats.tsx
@@ -0,0 +1,45 @@
+import { AboutData } from '../../about/types';
+
+interface AboutStatsProps {
+ data: AboutData['stats'];
+}
+
+const AboutStats = ({ data }: AboutStatsProps) => {
+ return (
+
+
+
+
+
+
+ Did You Know
+
+ Our Achievements in Numbers
+
+
+
+
+
+
+ {data.map((stat, index) => {
+ // Helper to extract number and suffix from value
+ const valueStr = String(stat.value);
+ const numericMatch = valueStr.match(/(\d+)/);
+ const numericValue = numericMatch ? numericMatch[0] : "0";
+ const suffix = valueStr.replace(numericValue, "");
+
+ return (
+
+
00 {suffix}
+ {stat.label}
+
+ );
+ })}
+
+
+
+
+ );
+};
+
+export default AboutStats;
diff --git a/app/components/about/AboutTeam.tsx b/app/components/about/AboutTeam.tsx
new file mode 100644
index 0000000..317d0ad
--- /dev/null
+++ b/app/components/about/AboutTeam.tsx
@@ -0,0 +1,42 @@
+import { AboutData } from '../../about/types';
+
+interface AboutTeamProps {
+ data: AboutData['team'];
+}
+
+const AboutTeam = ({ data }: AboutTeamProps) => {
+ return (
+
+
+
+ Our Expert Team
+
+ {data.title}
+
+
+
+ {data.members.map((member, index) => (
+
+
+
+
+
+
+
{member.name}
+
{member.role}
+
+ {member.social.facebook &&
}
+ {member.social.linkedin &&
}
+
+
+
+
+
+ ))}
+
+
+
+ );
+};
+
+export default AboutTeam;
diff --git a/app/components/about/index.ts b/app/components/about/index.ts
new file mode 100644
index 0000000..288c398
--- /dev/null
+++ b/app/components/about/index.ts
@@ -0,0 +1,7 @@
+export { default as AboutHero } from './AboutHero';
+export { default as AboutIntro } from './AboutIntro';
+export { default as AboutMission } from './AboutMission';
+export { default as AboutFeatures } from './AboutFeatures';
+export { default as AboutNews } from './AboutNews';
+export { default as AboutStats } from './AboutStats';
+export { default as AboutTeam } from './AboutTeam';
diff --git a/app/components/common/Preloader.tsx b/app/components/common/Preloader.tsx
new file mode 100644
index 0000000..f71efda
--- /dev/null
+++ b/app/components/common/Preloader.tsx
@@ -0,0 +1,82 @@
+'use client';
+
+import { useEffect, useState } from 'react';
+
+const Preloader = () => {
+ const [isLoading, setIsLoading] = useState(true);
+
+ useEffect(() => {
+ // Simulate loading time or wait for window load
+ const handleLoad = () => {
+ // Add a small delay to ensure assets are loaded or at least a smooth transition
+ setTimeout(() => {
+ setIsLoading(false);
+ }, 500);
+ };
+
+ if (document.readyState === 'complete') {
+ handleLoad();
+ } else {
+ window.addEventListener('load', handleLoad);
+ // Fallback in case load event already fired or takes too long
+ const timeoutId = setTimeout(handleLoad, 3000);
+ return () => {
+ window.removeEventListener('load', handleLoad);
+ clearTimeout(timeoutId);
+ };
+ }
+ }, []);
+
+ if (!isLoading) return null;
+
+ return (
+
+
+
+
+
+
+ V
+
+
+ I
+
+
+ S
+
+
+ A
+
+
+ W
+
+
+ A
+
+
+ Y
+
+
+
Loading
+
+
+
+ );
+};
+
+export default Preloader;
diff --git a/app/components/home/Achievements.tsx b/app/components/home/Achievements.tsx
new file mode 100644
index 0000000..689328c
--- /dev/null
+++ b/app/components/home/Achievements.tsx
@@ -0,0 +1,47 @@
+interface AchievementsProps {
+ data: {
+ heading: string;
+ subheading: string;
+ items: {
+ value: string;
+ suffix: string;
+ label: string;
+ description: string;
+ }[];
+ };
+}
+
+const Achievements = ({ data }: AchievementsProps) => {
+ return (
+
+
+
+
+
+
+ {data.subheading}
+
+ {data.heading}
+
+
+
+
+
+
+ {data.items.map((item, index) => (
+
+
00 {item.suffix}
+
{item.label}
+
+ {item.description}
+
+
+ ))}
+
+
+
+
+ );
+};
+
+export default Achievements;
diff --git a/app/components/home/BlogPreview.tsx b/app/components/home/BlogPreview.tsx
new file mode 100644
index 0000000..28ca33a
--- /dev/null
+++ b/app/components/home/BlogPreview.tsx
@@ -0,0 +1,89 @@
+import Link from 'next/link';
+
+interface BlogPreviewProps {
+ data: {
+ heading: string;
+ subheading: string;
+ ctaButton: {
+ label: string;
+ href: string;
+ };
+ items: {
+ title: string;
+ excerpt: string;
+ category: string;
+ date: string;
+ author: {
+ name: string;
+ avatar: string;
+ };
+ comments: number;
+ link: string;
+ thumbnail: string;
+ }[];
+ };
+}
+
+const BlogPreview = ({ data }: BlogPreviewProps) => {
+ const formatDate = (dateString: string) => {
+ const date = new Date(dateString);
+ return date.toLocaleDateString('en-US', { day: 'numeric', month: 'long', year: 'numeric' });
+ };
+
+ return (
+
+
+
+
+ {data.subheading}
+
+ {data.heading}
+
+
+
+ {data.ctaButton.label}
+
+
+
+
+ {data.items.map((item, index) => (
+
+
+
+
+
{item.category}
+
+
+
+
+ Comment ({item.comments.toString().padStart(2, '0')})
+ _ {formatDate(item.date)}
+
+
+
+ {item.title}
+
+
+
+
+
+
By {item.author.name}
+
+
View Articles
+
+
+
+
+ ))}
+
+
+
+ );
+};
+
+export default BlogPreview;
diff --git a/app/components/home/FAQSection.tsx b/app/components/home/FAQSection.tsx
new file mode 100644
index 0000000..dc28c12
--- /dev/null
+++ b/app/components/home/FAQSection.tsx
@@ -0,0 +1,83 @@
+import Link from 'next/link';
+
+interface FAQSectionProps {
+ data: {
+ heading: string;
+ subheading: string;
+ description: string;
+ ctaButton: {
+ label: string;
+ href: string;
+ };
+ items: {
+ question: string;
+ answer: string;
+ }[];
+ };
+}
+
+const FAQSection = ({ data }: FAQSectionProps) => {
+ return (
+
+
+
+
+
+
+
+ {data.subheading}
+
+ {data.heading}
+
+
+
+ {data.description}
+
+
+ {data.ctaButton.label}
+
+
+
+
+
+
+
+ {data.items.map((item, index) => (
+
+
+
+ {item.question}
+
+
+
+
+ ))}
+
+
+
+
+
+
+
+ );
+};
+
+export default FAQSection;
diff --git a/app/components/home/HeroSection.tsx b/app/components/home/HeroSection.tsx
new file mode 100644
index 0000000..07d93e1
--- /dev/null
+++ b/app/components/home/HeroSection.tsx
@@ -0,0 +1,100 @@
+import Link from 'next/link';
+
+interface HeroSectionProps {
+ data: {
+ title: string;
+ subtitle: string;
+ description: string;
+ primaryButton: {
+ label: string;
+ href: string;
+ };
+ secondaryButton: {
+ label: string;
+ href: string;
+ };
+ backgroundImage: string;
+ videoUrl: string;
+ };
+}
+
+const HeroSection = ({ data }: HeroSectionProps) => {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{data.subtitle}
+
+ {data.title}
+
+
+
+
+
+ {data.description}
+
+
+
+ {data.primaryButton.label}
+
+
+
+ {data.secondaryButton.label}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default HeroSection;
diff --git a/app/components/home/Partners.tsx b/app/components/home/Partners.tsx
new file mode 100644
index 0000000..4135917
--- /dev/null
+++ b/app/components/home/Partners.tsx
@@ -0,0 +1,58 @@
+interface PartnersProps {
+ data: {
+ heading: string;
+ items: {
+ name: string;
+ logo: string;
+ year: string;
+ }[];
+ };
+}
+
+const Partners = ({ data }: PartnersProps) => {
+ return (
+ <>
+ {/* Awards Section */}
+
+
+
+ {data.items.slice(0, 4).map((partner, index) => (
+
+
+
+
+
+
{partner.name}
+
{partner.year}
+
+
+ ))}
+
+
+
+
+ {/* Brand Partners Section */}
+
+
+
+
+
+
+ {data.items.slice(4).map((partner, index) => (
+
+
+
+
+
+ ))}
+
+
+
+
+
+
+ >
+ );
+};
+
+export default Partners;
diff --git a/app/components/home/Testimonials.tsx b/app/components/home/Testimonials.tsx
new file mode 100644
index 0000000..9e75793
--- /dev/null
+++ b/app/components/home/Testimonials.tsx
@@ -0,0 +1,74 @@
+interface TestimonialsProps {
+ data: {
+ heading: string;
+ subheading: string;
+ videoUrl: string;
+ videoThumbnail: string;
+ items: {
+ name: string;
+ role: string;
+ country: string;
+ rating: number;
+ comment: string;
+ avatar: string;
+ }[];
+ };
+}
+
+const Testimonials = ({ data }: TestimonialsProps) => {
+ return (
+
+
+
+ {data.subheading}
+
+ {data.heading}
+
+
+
+
+
+
+
+
+
+
Real stories
+
+
+
+
+
+ {data.items.map((testimonial, index) => (
+
+
+
+ {Array.from({ length: testimonial.rating }).map((_, i) => (
+
+ ))}
+
+
+ {testimonial.comment}
+
+
+
+
+
+
+
{testimonial.name}
+ {testimonial.country}
+
+
+
+
+ ))}
+
+
+
+
+
+
+
+ );
+};
+
+export default Testimonials;
diff --git a/app/components/home/VideoGallery.tsx b/app/components/home/VideoGallery.tsx
new file mode 100644
index 0000000..44faf61
--- /dev/null
+++ b/app/components/home/VideoGallery.tsx
@@ -0,0 +1,35 @@
+interface VideoGalleryProps {
+ data: {
+ heading: string;
+ videoUrl: string;
+ thumbnail: string;
+ };
+}
+
+const VideoGallery = ({ data }: VideoGalleryProps) => {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{data.heading.split(' ').map((word, index) => (
+ {word}{index === 0 ? : ' '}
+ ))}
+
+
+
+ );
+};
+
+export default VideoGallery;
diff --git a/app/components/home/VisaCountries.tsx b/app/components/home/VisaCountries.tsx
new file mode 100644
index 0000000..1d44bfc
--- /dev/null
+++ b/app/components/home/VisaCountries.tsx
@@ -0,0 +1,82 @@
+import Link from 'next/link';
+
+interface VisaCountriesProps {
+ data: {
+ heading: string;
+ subheading: string;
+ description: string;
+ countries: {
+ name: string;
+ code: string;
+ flag: string;
+ link: string;
+ visaTypes: string[];
+ }[];
+ ctaButton: {
+ label: string;
+ href: string;
+ };
+ };
+}
+
+const VisaCountries = ({ data }: VisaCountriesProps) => {
+ // Display the first country as featured
+ const featuredCountry = data.countries[0];
+ const halfLength = Math.ceil(featuredCountry.visaTypes.length / 2);
+ const firstColumn = featuredCountry.visaTypes.slice(0, halfLength);
+ const secondColumn = featuredCountry.visaTypes.slice(halfLength);
+
+ return (
+
+
+
+
+
+
+
+ {data.subheading}
+
+ {data.heading}
+
+
+
+ {data.description}
+
+
+
+ {firstColumn.map((visaType, index) => (
+
+
+ {visaType}
+
+ ))}
+
+
+ {secondColumn.map((visaType, index) => (
+
+
+ {visaType}
+
+ ))}
+
+
+
+ {data.ctaButton.label}
+
+
+
+
+
+
+
+
{featuredCountry.code}.{featuredCountry.name}
+
+
+
+
+
+
+ );
+};
+
+export default VisaCountries;
diff --git a/app/components/home/VisaSolutions.tsx b/app/components/home/VisaSolutions.tsx
new file mode 100644
index 0000000..c11bbcc
--- /dev/null
+++ b/app/components/home/VisaSolutions.tsx
@@ -0,0 +1,52 @@
+import Link from 'next/link';
+
+interface VisaSolutionsProps {
+ data: {
+ heading: string;
+ subheading: string;
+ items: {
+ number: string;
+ title: string;
+ description: string;
+ link: string;
+ }[];
+ };
+}
+
+const VisaSolutions = ({ data }: VisaSolutionsProps) => {
+ return (
+
+
+
+ {data.subheading}
+
+ {data.heading}
+
+
+
+ {data.items.map((item, index) => (
+
+
+
+
+
+
{item.number}
+
+ {item.title}
+
+
+
+
+ {item.description}
+
+
Service Details
+
+
+
+
+ ))}
+
+ );
+};
+
+export default VisaSolutions;
diff --git a/app/components/home/WhyChooseUs.tsx b/app/components/home/WhyChooseUs.tsx
new file mode 100644
index 0000000..e8e7c1e
--- /dev/null
+++ b/app/components/home/WhyChooseUs.tsx
@@ -0,0 +1,87 @@
+import Link from 'next/link';
+
+interface WhyChooseUsProps {
+ data: {
+ heading: string;
+ subheading: string;
+ description: string;
+ items: {
+ icon: string;
+ title: string;
+ description: string;
+ }[];
+ features: string[];
+ ctaButton: {
+ label: string;
+ href: string;
+ };
+ };
+}
+
+const WhyChooseUs = ({ data }: WhyChooseUsProps) => {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {data.subheading}
+
+ {data.heading.split(' Dreams ')[0]} Dreams {data.heading.split(' Dreams ')[1]}
+
+
+
+ {data.description}
+
+
+ {data.items.map((item, index) => (
+
+
{item.title}-
+
{item.description}
+
+ ))}
+
+
+ {data.features.map((feature, index) => (
+
+
+ {feature}
+
+ ))}
+
+
+ {data.ctaButton.label}
+
+
+
+
+
+
+
+
+ );
+};
+
+export default WhyChooseUs;
diff --git a/app/components/layout/Container.tsx b/app/components/layout/Container.tsx
new file mode 100644
index 0000000..0150d65
--- /dev/null
+++ b/app/components/layout/Container.tsx
@@ -0,0 +1,17 @@
+import React from 'react';
+
+interface ContainerProps {
+ children: React.ReactNode;
+ className?: string;
+ fluid?: boolean;
+}
+
+const Container: React.FC = ({ children, className = '', fluid = false }) => {
+ return (
+
+ {children}
+
+ );
+};
+
+export default Container;
diff --git a/app/components/layout/Footer/Footer.tsx b/app/components/layout/Footer/Footer.tsx
new file mode 100644
index 0000000..e97ee25
--- /dev/null
+++ b/app/components/layout/Footer/Footer.tsx
@@ -0,0 +1,13 @@
+import FooterTop from './FooterTop';
+import FooterBottom from './FooterBottom';
+
+const Footer = () => {
+ return (
+ <>
+
+
+ >
+ );
+};
+
+export default Footer;
diff --git a/app/components/layout/Footer/FooterBottom.tsx b/app/components/layout/Footer/FooterBottom.tsx
new file mode 100644
index 0000000..5e32054
--- /dev/null
+++ b/app/components/layout/Footer/FooterBottom.tsx
@@ -0,0 +1,28 @@
+import Link from 'next/link';
+
+const FooterBottom = () => {
+ return (
+
+
+
+
+ Copyright© GRAMENTHEME All Rights Reserved.
+
+
+
+ Terms & Conditions
+
+
+ Privacy Policy
+
+
+ Contact Us
+
+
+
+
+
+ );
+};
+
+export default FooterBottom;
diff --git a/app/components/layout/Footer/FooterTop.tsx b/app/components/layout/Footer/FooterTop.tsx
new file mode 100644
index 0000000..b954267
--- /dev/null
+++ b/app/components/layout/Footer/FooterTop.tsx
@@ -0,0 +1,55 @@
+import Link from 'next/link';
+
+const FooterTop = () => {
+ return (
+
+
+
+
+
+
+
+
734 Luy Ban Bich St, Tan Thanh Ward, Tan Phu Dist, HCMC
+
+
+
+
+
+
+ Home
+
+
+ About Us
+
+
+ Visa
+
+
+ Pages
+
+
+ Article
+
+
+ Contact Us
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default FooterTop;
diff --git a/app/components/layout/Header/Header.tsx b/app/components/layout/Header/Header.tsx
new file mode 100644
index 0000000..3484090
--- /dev/null
+++ b/app/components/layout/Header/Header.tsx
@@ -0,0 +1,25 @@
+import HeaderTop from './HeaderTop';
+import HeaderBottom from './HeaderBottom';
+
+const Header = () => {
+ return (
+ <>
+
+
+ {/* Search Popup - kept here for now as part of header logic/structure */}
+
+ >
+ );
+};
+
+export default Header;
diff --git a/app/components/layout/Header/HeaderBottom.tsx b/app/components/layout/Header/HeaderBottom.tsx
new file mode 100644
index 0000000..4b87d29
--- /dev/null
+++ b/app/components/layout/Header/HeaderBottom.tsx
@@ -0,0 +1,154 @@
+'use client';
+
+import Link from 'next/link';
+import HeaderMenu from './HeaderMenu';
+
+const homeMegaMenu = (
+ <>
+
+
+
+
+
+ Multi Page
+
+
+
+
+
+ Home 01
+
+
+
+
+
+
+
+
+ Multi Page
+
+
+
+
+
+ Home 02
+
+
+
+
+
+
+
+
+ Multi Page
+
+
+
+
+
+ Home 03
+
+
+
+ >
+);
+
+const menuItems = [
+ {
+ label: 'Home',
+ href: '/',
+ megaMenuContent: homeMegaMenu
+ },
+ {
+ label: 'About Us',
+ href: '/about'
+ },
+ {
+ label: 'Pages',
+ href: '#',
+ submenu: [
+ {
+ label: 'Service',
+ href: '#',
+ submenu: [
+ { label: 'Service', href: '/service' },
+ { label: 'Service Details', href: '/service-details' }
+ ]
+ },
+ {
+ label: 'Country List',
+ href: '#',
+ submenu: [
+ { label: 'Country List', href: '/country-list' },
+ { label: 'Country Details', href: '/country-details' }
+ ]
+ },
+ { label: 'Our Pricing', href: '/pricing' },
+ { label: 'Appointment', href: '/appointment' },
+ { label: '404 Page', href: '/404' },
+ { label: 'Coming Soon', href: '/coming-soon' }
+ ]
+ },
+ {
+ label: 'VISA',
+ href: '#',
+ submenu: [
+ { label: 'Visa List', href: '/country-list' },
+ { label: 'Visa Details', href: '/country-details' }
+ ]
+ },
+ {
+ label: 'Blog',
+ href: '#',
+ submenu: [
+ { label: 'Blog Grid', href: '/news-grid' },
+ { label: 'Blog Standard', href: '/news' },
+ { label: 'Blog Details', href: '/news-details' }
+ ]
+ },
+ {
+ label: 'Contact Us',
+ href: '/contact'
+ }
+];
+
+const HeaderBottom = () => {
+ return (
+
+ );
+};
+
+export default HeaderBottom;
diff --git a/app/components/layout/Header/HeaderMenu.tsx b/app/components/layout/Header/HeaderMenu.tsx
new file mode 100644
index 0000000..3a083b5
--- /dev/null
+++ b/app/components/layout/Header/HeaderMenu.tsx
@@ -0,0 +1,68 @@
+import Link from 'next/link';
+
+interface MenuItem {
+ label: string;
+ href: string;
+ submenu?: MenuItem[];
+ isMegaMenu?: boolean; // For Home demo images if needed, though simple recursion handles most
+ megaMenuContent?: React.ReactNode; // Flexible slot for complex mega menus
+}
+
+interface HeaderMenuProps {
+ menuItems: MenuItem[];
+}
+
+const HeaderMenu: React.FC = ({ menuItems }) => {
+ return (
+
+
+
+ );
+};
+
+export default HeaderMenu;
diff --git a/app/components/layout/Header/HeaderTop.tsx b/app/components/layout/Header/HeaderTop.tsx
new file mode 100644
index 0000000..50539b5
--- /dev/null
+++ b/app/components/layout/Header/HeaderTop.tsx
@@ -0,0 +1,63 @@
+import Link from 'next/link';
+
+const HeaderTop = () => {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+ English
+
+
+
+ English
+
+
+ Bangla
+
+
+ Hindi
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default HeaderTop;
diff --git a/app/home.json b/app/home.json
new file mode 100644
index 0000000..f260aed
--- /dev/null
+++ b/app/home.json
@@ -0,0 +1,457 @@
+{
+ "header": {
+ "top": {
+ "phone": "+09 378 357 5222",
+ "email": "info@hailearning.edu.vn",
+ "location": "69 Street, 5th Avenue LA, United States",
+ "socialLinks": [
+ {
+ "platform": "linkedin",
+ "url": "https://linkedin.com",
+ "icon": "fa-brands fa-linkedin"
+ },
+ {
+ "platform": "twitter",
+ "url": "https://twitter.com",
+ "icon": "fa-brands fa-twitter"
+ },
+ {
+ "platform": "instagram",
+ "url": "https://instagram.com",
+ "icon": "fa-brands fa-instagram"
+ },
+ {
+ "platform": "youtube",
+ "url": "https://youtube.com",
+ "icon": "fa-brands fa-youtube"
+ }
+ ]
+ },
+ "menu": [
+ {
+ "label": "Home",
+ "href": "/",
+ "children": []
+ },
+ {
+ "label": "About Us",
+ "href": "/about",
+ "children": []
+ },
+ {
+ "label": "Pages",
+ "href": "#",
+ "children": [
+ {
+ "label": "Service",
+ "href": "/service",
+ "children": [
+ {
+ "label": "Service",
+ "href": "/service"
+ },
+ {
+ "label": "Service Details",
+ "href": "/service-details"
+ }
+ ]
+ },
+ {
+ "label": "Country List",
+ "href": "/country-list",
+ "children": [
+ {
+ "label": "Country List",
+ "href": "/country-list"
+ },
+ {
+ "label": "Country Details",
+ "href": "/country-details"
+ }
+ ]
+ },
+ {
+ "label": "Our Pricing",
+ "href": "/pricing"
+ },
+ {
+ "label": "Appointment",
+ "href": "/appointment"
+ }
+ ]
+ },
+ {
+ "label": "VISA",
+ "href": "#",
+ "children": [
+ {
+ "label": "Visa List",
+ "href": "/visa-list"
+ },
+ {
+ "label": "Visa Details",
+ "href": "/visa-details"
+ }
+ ]
+ },
+ {
+ "label": "Blog",
+ "href": "#",
+ "children": [
+ {
+ "label": "Blog Grid",
+ "href": "/blog-grid"
+ },
+ {
+ "label": "Blog Standard",
+ "href": "/blog"
+ },
+ {
+ "label": "Blog Details",
+ "href": "/blog-details"
+ }
+ ]
+ },
+ {
+ "label": "Contact Us",
+ "href": "/contact"
+ }
+ ]
+ },
+ "hero": {
+ "title": "From Application to Visa – We've Got You Covered",
+ "subtitle": "Global Education Simplified",
+ "description": "We guide you through every step of the education visa process, from initial application to final approval, ensuring a smooth, hassle-free journey.",
+ "primaryButton": {
+ "label": "Apply now",
+ "href": "/contact"
+ },
+ "secondaryButton": {
+ "label": "Book Free Consultation",
+ "href": "/contact"
+ },
+ "backgroundImage": "/assets/img/home-1/hero/bg.jpg",
+ "videoUrl": "https://www.youtube.com/watch?v=Cn4G2lZ_g2I"
+ },
+ "whyChooseUs": {
+ "heading": "Turning Study Abroad Dreams Into Reality",
+ "subheading": "About Our Consultancy",
+ "description": "We guide students with expert visa consulting, ensuring a smooth process from application to approval, turning study abroad aspirations into life-changing opportunities for a brighter future.",
+ "items": [
+ {
+ "icon": "/assets/img/home-1/icon/01.svg",
+ "title": "Global Reach",
+ "description": "Expanding Opportunities Worldwide"
+ },
+ {
+ "icon": "/assets/img/home-1/icon/01.svg",
+ "title": "Expert Guidance",
+ "description": "Professional Support Every Step"
+ }
+ ],
+ "features": [
+ "Fastest Visa form processing with skilled immigration agents",
+ "Partnership with International Educational Institutions"
+ ],
+ "ctaButton": {
+ "label": "Get Started",
+ "href": "/about"
+ }
+ },
+ "visaSolutions": {
+ "heading": "Comprehensive Visa Solutions",
+ "subheading": "Our Expert Services",
+ "items": [
+ {
+ "number": "01",
+ "title": "Student Visa Guidance",
+ "description": "Assistance with admission, documentation, and visa application.Assistance",
+ "link": "/service-details"
+ },
+ {
+ "number": "02",
+ "title": "PTE Exam Preparation",
+ "description": "We provide expert guidance and personalized support throughout the education visa process,",
+ "link": "/service-details"
+ },
+ {
+ "number": "03",
+ "title": "University Selection Assistance",
+ "description": "We provide expert guidance and personalized support throughout the education visa process,",
+ "link": "/service-details"
+ },
+ {
+ "number": "04",
+ "title": "IELTS Exam Preparation",
+ "description": "We provide expert guidance and personalized support throughout the education visa process,",
+ "link": "/service-details"
+ }
+ ]
+ },
+ "visaCountries": {
+ "heading": "Visa & VISAWAY Services To UK",
+ "subheading": "UK. United Kingdom",
+ "description": "The Express Entry program is designed for skilled workers who wish to immigrate to Canada. It includes the Federal Skilled Worker Program, the Federal Skilled…",
+ "countries": [
+ {
+ "name": "United Kingdom",
+ "code": "UK",
+ "flag": "/assets/img/home-1/feature/shape.png",
+ "link": "/country-details/uk",
+ "visaTypes": [
+ "Visitor Visa",
+ "Student Visa & Admission",
+ "Work Visa – H1B",
+ "Business Visa",
+ "Work permit for Canada",
+ "Student Visa for Canada"
+ ]
+ },
+ {
+ "name": "United States",
+ "code": "US",
+ "flag": "/assets/img/flags/us.png",
+ "link": "/country-details/us",
+ "visaTypes": [
+ "Student Visa F-1",
+ "Work Visa H1-B",
+ "Tourist Visa B-2"
+ ]
+ },
+ {
+ "name": "Canada",
+ "code": "CA",
+ "flag": "/assets/img/flags/canada.png",
+ "link": "/country-details/canada",
+ "visaTypes": [
+ "Study Permit",
+ "Work Permit",
+ "Express Entry"
+ ]
+ },
+ {
+ "name": "Australia",
+ "code": "AU",
+ "flag": "/assets/img/flags/australia.png",
+ "link": "/country-details/australia",
+ "visaTypes": [
+ "Student Visa 500",
+ "Skilled Migration",
+ "Working Holiday"
+ ]
+ },
+ {
+ "name": "Germany",
+ "code": "DE",
+ "flag": "/assets/img/flags/germany.png",
+ "link": "/country-details/germany",
+ "visaTypes": [
+ "Student Visa",
+ "Job Seeker Visa",
+ "EU Blue Card"
+ ]
+ }
+ ],
+ "ctaButton": {
+ "label": "Get Started",
+ "href": "/contact"
+ }
+ },
+ "testimonials": {
+ "heading": "Student Reviews & Testimonials",
+ "subheading": "What Our Students Say",
+ "videoUrl": "https://www.youtube.com/watch?v=Cn4G2lZ_g2I",
+ "videoThumbnail": "/assets/img/home-1/testimonial/01.jpg",
+ "items": [
+ {
+ "name": "Sohel Tanvir",
+ "role": "Student",
+ "country": "Canada",
+ "rating": 5,
+ "comment": "Professional and reliable service. They explained each step clearly, prepared my documents, and supported me during the interview. My visa approval came faster than expected.",
+ "avatar": "/assets/img/home-1/testimonial/client.png"
+ },
+ {
+ "name": "Ayesha Rahman",
+ "role": "Student",
+ "country": "UK. United Kingdom",
+ "rating": 5,
+ "comment": "The consultancy guided me from start to finish, making my study abroad journey smooth and stress-free. Thanks to their expert support, I secured my visa successfully.",
+ "avatar": "/assets/img/home-1/testimonial/client-2.png"
+ },
+ {
+ "name": "Michael Chen",
+ "role": "Graduate Student",
+ "country": "Australia",
+ "rating": 5,
+ "comment": "Outstanding service from beginning to end. The team was knowledgeable, responsive, and made the entire visa process seamless. Highly recommend to anyone planning to study abroad.",
+ "avatar": "/assets/img/home-1/testimonial/client.png"
+ }
+ ]
+ },
+ "videoGallery": {
+ "heading": "VIDEO PLAY GALLERY",
+ "videoUrl": "https://ex-coders.com/vdo/visa.mp4",
+ "thumbnail": "/assets/img/home-1/feature/text.png"
+ },
+ "faq": {
+ "heading": "Got Questions? We've Got Answers",
+ "subheading": "Visa FAQs",
+ "description": "We understand students often have many questions about studying abroad. Our experts provide clear.",
+ "ctaButton": {
+ "label": "contact us",
+ "href": "/contact"
+ },
+ "items": [
+ {
+ "question": "How long does the student visa process usually take?",
+ "answer": "The student visa process typically takes 4-8 weeks depending on the country and time of year. We recommend starting the application process at least 3 months before your intended travel date to ensure sufficient time for document preparation and processing."
+ },
+ {
+ "question": "Do you assist with scholarship applications as well?",
+ "answer": "Yes, we guide students in identifying suitable scholarships, preparing strong applications, and increasing chances of securing financial aid for their studies abroad."
+ },
+ {
+ "question": "Will you guide me in preparing for the visa interview?",
+ "answer": "Absolutely! We provide comprehensive visa interview preparation, including mock interviews, document review, and tips on how to answer common questions confidently and effectively."
+ },
+ {
+ "question": "Do you offer post-arrival support for students?",
+ "answer": "Yes, we provide post-arrival support including airport pickup coordination, accommodation assistance, university orientation guidance, and ongoing support throughout your study period."
+ },
+ {
+ "question": "What documents are required for a student visa application?",
+ "answer": "Required documents typically include a valid passport, university acceptance letter, proof of financial support, academic transcripts, language proficiency test scores, and health insurance. We provide a complete checklist tailored to your destination country."
+ }
+ ]
+ },
+ "achievements": {
+ "heading": "Our Achievements in Numbers",
+ "subheading": "Did You Know",
+ "items": [
+ {
+ "value": "1000",
+ "suffix": "k+",
+ "label": "Students Guided",
+ "description": "Successfully assisted over a thousand students worldwide."
+ },
+ {
+ "value": "50",
+ "suffix": "+",
+ "label": "Countries Covered",
+ "description": "Helping students apply to universities in more than 50 countries."
+ },
+ {
+ "value": "95",
+ "suffix": "%",
+ "label": "Visa Success Rate",
+ "description": "Inspired students to reach their goals globally"
+ },
+ {
+ "value": "10",
+ "suffix": "+",
+ "label": "Years of Experience",
+ "description": "Trusted experts in global education consulting."
+ }
+ ]
+ },
+ "partners": {
+ "heading": "Our Trusted Partners",
+ "items": [
+ {
+ "name": "Best Visa Consultancy",
+ "logo": "/assets/img/home-1/feature/icon-1.png",
+ "year": "2025"
+ },
+ {
+ "name": "Visa Success Award",
+ "logo": "/assets/img/home-1/feature/icon-2.png",
+ "year": "2025"
+ },
+ {
+ "name": "Innovation Award",
+ "logo": "/assets/img/home-1/feature/icon-3.png",
+ "year": "2025"
+ },
+ {
+ "name": "Global Education Partner",
+ "logo": "/assets/img/home-1/feature/icon-4.png",
+ "year": "2025"
+ },
+ {
+ "name": "University Partner 1",
+ "logo": "/assets/img/home-1/brand/01.png",
+ "year": "2025"
+ },
+ {
+ "name": "University Partner 2",
+ "logo": "/assets/img/home-1/brand/02.png",
+ "year": "2025"
+ },
+ {
+ "name": "University Partner 3",
+ "logo": "/assets/img/home-1/brand/03.png",
+ "year": "2025"
+ },
+ {
+ "name": "University Partner 4",
+ "logo": "/assets/img/home-1/brand/04.png",
+ "year": "2025"
+ },
+ {
+ "name": "University Partner 5",
+ "logo": "/assets/img/home-1/brand/05.png",
+ "year": "2025"
+ }
+ ]
+ },
+ "blogPreview": {
+ "heading": "Latest Insights & Updates",
+ "subheading": "Visa Tips & Guides",
+ "ctaButton": {
+ "label": "view all articles",
+ "href": "/blog"
+ },
+ "items": [
+ {
+ "title": "Step-by-Step Guide to Applying for a Student Visa",
+ "excerpt": "Learn the complete process of applying for a student visa, from gathering documents to attending your interview. Our comprehensive guide covers everything you need to know.",
+ "category": "Student Visa",
+ "date": "2025-08-20",
+ "author": {
+ "name": "Sohel",
+ "avatar": "/assets/img/home-1/news/client.png"
+ },
+ "comments": 8,
+ "link": "/blog/step-by-step-guide-student-visa",
+ "thumbnail": "/assets/img/home-1/news/news-1.jpg"
+ },
+ {
+ "title": "Tips to Prepare Financial Documents for Visa Approval",
+ "excerpt": "Financial documentation is crucial for visa approval. Discover expert tips on preparing bank statements, sponsorship letters, and proof of funds that meet embassy requirements.",
+ "category": "IELTS / TOEFL",
+ "date": "2025-08-20",
+ "author": {
+ "name": "Sohel",
+ "avatar": "/assets/img/home-1/news/client.png"
+ },
+ "comments": 8,
+ "link": "/blog/financial-documents-visa-approval",
+ "thumbnail": "/assets/img/home-1/news/news-2.jpg"
+ },
+ {
+ "title": "Post-Arrival Guide What Every Student Should Know",
+ "excerpt": "Moving to a new country can be overwhelming. Our post-arrival guide helps international students navigate accommodation, banking, healthcare, and cultural adaptation successfully.",
+ "category": "Study Abroad",
+ "date": "2025-08-20",
+ "author": {
+ "name": "Sohel",
+ "avatar": "/assets/img/home-1/news/client.png"
+ },
+ "comments": 8,
+ "link": "/blog/post-arrival-guide-students",
+ "thumbnail": "/assets/img/home-1/news/news-3.jpg"
+ }
+ ]
+ }
+}
diff --git a/app/layout.tsx b/app/layout.tsx
index 58b4207..d330d31 100644
--- a/app/layout.tsx
+++ b/app/layout.tsx
@@ -1,14 +1,17 @@
import type { Metadata } from "next";
import "./globals.css";
+
import Header from "./components/Header";
import Footer from "./components/Footer";
+import Loader from "./components/Loader";
+import BackToTop from "./components/BackToTop";
+import MouseCursor from "./components/MouseCursor";
import Script from "next/script";
export const metadata: Metadata = {
- title: "VisaService - Dịch vụ visa uy tín",
- description:
- "Dịch vụ visa chuyên nghiệp với tỷ lệ thành công 99%. Hỗ trợ visa cho hơn 50 quốc gia.",
+ title: "Visaway – Immigration & Visa Consulting HTML Template",
+ description: "Visaway – Immigration & Visa Consulting HTML Template",
};
export default function RootLayout({
@@ -17,45 +20,46 @@ export default function RootLayout({
children: React.ReactNode;
}>) {
return (
-
+
- {/* Nhúng các file CSS template như news.html */}
+ {/* Favicon */}
+
+ {/* Bootstrap min.css */}
+ {/* All Min Css */}
+ {/* Animate.css */}
+ {/* Magnific Popup.css */}
+ {/* MeanMenu.css */}
+ {/* Odometer.css */}
+ {/* Swiper Bundle.css */}
+ {/* Nice Select.css */}
+ {/* Main.css */}
-
+
+
+
+
- {children}
+
+ {children}
+
- {/* Nhúng các script JS giống news.html */}
-
-
-
-
-
+
+ {/* Scripts */}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/example/index.html b/docs/example/index.html
new file mode 100644
index 0000000..84fdce6
--- /dev/null
+++ b/docs/example/index.html
@@ -0,0 +1,1261 @@
+
+
+
+
+
+
+
+
+
+
+
+ Visaway – Immigration & Visa Consulting HTML Template
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ V
+
+
+ I
+
+
+ S
+
+
+ A
+
+
+ W
+
+
+ A
+
+
+ Y
+
+
+
Loading
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Nullam dignissim, ante scelerisque the is euismod fermentum odio sem semper the is erat, a feugiat leo urna eget eros. Duis Aenean a imperdiet risus.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Global Education Simplified
+
+ From Application to Visa – We’ve Got You Covered
+
+
+
+ We guide you through every step of the education visa process, from initial application to final approval, ensuring a smooth, hassle-free journey.
+
+
+
+
+
+
+
Global Education Simplified
+
+ From Application to Visa – We’ve Got You Covered
+
+
+
+ We guide you through every step of the education visa process, from initial application to final approval, ensuring a smooth, hassle-free journey.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ About Our Consultancy
+
+ Turning Study Abroad Dreams Into Reality
+
+
+
+ We guide students with expert visa consulting, ensuring a smooth process from application to approval, turning study abroad aspirations into life-changing opportunities for a brighter future.
+
+
+
+
Global Reach-
+
Expanding Opportunities Worldwide
+
+
+
Global Reach-
+
Expanding Opportunities Worldwide
+
+
+
+
+
+ Fastest Visa form processing with skilled immigration agents
+
+
+
+ Partnership with International Educational Institutions
+
+
+
+ Get Started
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Our Expert Services
+
+ Comprehensive Visa Solutions
+
+
+
+
+
+
+
+
+
+
+ Assistance with admission, documentation, and visa application.Assistance
+
+
Service Details
+
+
+
+
+
+
+
+
+
+
+
+ We provide expert guidance and personalized support throughout the education visa process,
+
+
Service Details
+
+
+
+
+
+
+
+
+
+
+
+ We provide expert guidance and personalized support throughout the education visa process,
+
+
Service Details
+
+
+
+
+
+
+
+
+
+
+
+ We provide expert guidance and personalized support throughout the education visa process,
+
+
Service Details
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UK. United Kingdom
+
+ Visa & vISAWAY Services To uk
+
+
+
+ The Express Entry program is designed for skilled workers who wish to immigrate to Canada. It includes the Federal Skilled Worker Program, the Federal Skilled…
+
+
+
+
+
+ Visitor Visa
+
+
+
+ Student Visa & Admission
+
+
+
+ Work Visa – H1B
+
+
+
+
+
+ Business Visa
+
+
+
+ Work permit for Canada
+
+
+
+ Student Visa for Canada
+
+
+
+
+ Get Started
+
+
+
+
+
+
+
+
UK.United Kingdom
+
+
+
+
+
+
+
+
+
+
+
+
+ What Our Students Say
+
+ Student Reviews & Testimonials
+
+
+
+
+
+
+
+
+
Real stories
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Professional and reliable service. They explained each step clearly, prepared my documents, and supported me during the interview. My visa approval came faster than expected.”
+
+
+
+
+
+
+
Sohel Tanvir
+ Canada
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ “The consultancy guided me from start to finish, making my study abroad journey smooth and stress-free. Thanks to their expert support, I secured my visa successfully.”
+
+
+
+
+
+
+
Ayesha Rahman
+ UK. United Kingdom
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
VIDEO PLAY GALLARY
+
+
+
+
+
+
+
+
+
+
+
+
+ Visa FAQs
+
+ Got Questions? We’ve Got Answers
+
+
+
+ We understand students often have many questions about studying abroad. Our experts provide clear.
+
+
+ contact us
+
+
+
+
+
+
+
+
+
+
+
+
+ Yes, we guide students in identifying suitable scholarships, preparing strong applications, and increasing chances.
+
+
+
+
+
+
+
+
+
+ Yes, we guide students in identifying suitable scholarships, preparing strong applications, and increasing chances.
+
+
+
+
+
+
+
+
+
+ Yes, we guide students in identifying suitable scholarships, preparing strong applications, and increasing chances.
+
+
+
+
+
+
+
+
+
+ Yes, we guide students in identifying suitable scholarships, preparing strong applications, and increasing chances.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Did You Know
+
+ Our Achievements in Numbers
+
+
+
+
+
+
+
+
00 k+
+
Students Guided
+
+ Successfully assisted over a thousand students worldwide.
+
+
+
+
00 +
+
Countries Covered
+
+ Helping students apply to universities
+ in more than 50 countries.
+
+
+
+
00 %
+
Visa Success Rate
+
+ Inspired students to reach their goals globally
+
+
+
+
00 +
+
Visa Success Rate
+
+ Trusted experts in global education consulting.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Best Visa Consultancy
+
2025
+
+
+
+
+
+
+
+
Visa Success Award
+
2025
+
+
+
+
+
+
+
+
Innovation Award
+
2025
+
+
+
+
+
+
+
+
Global Education Partner
+
2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Student Visa
+
+
+
+
+ Comment (08)
+ _ 20 August ,2025
+
+
+
+
+
+
+
+
+
+
+
IELTS / TOEFL
+
+
+
+
+ Comment (08)
+ _ 20 August ,2025
+
+
+
+
+
+
+
+
+
+
+
Study Abroad
+
+
+
+
+ Comment (08)
+ _ 20 August ,2025
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/public/assets/css/main.css b/public/assets/css/main.css
index 8473855..5b37157 100644
--- a/public/assets/css/main.css
+++ b/public/assets/css/main.css
@@ -3442,7 +3442,7 @@ span {
background-color: var(--theme);
left: 0;
right: initial;
- width: 337px;
+ width: 300px;
z-index: -1;
}
.header-top-section .container-fluid {
@@ -3473,16 +3473,24 @@ span {
.header-top-wrapper .header-left .list {
display: flex;
align-items: center;
- gap: 60px;
+ gap: 30px;
+ margin: 0;
+ padding: 0;
+ list-style: none;
}
.header-top-wrapper .header-left .list li {
+ display: flex;
+ align-items: center;
+ font-size: 14px;
color: rgba(255, 255, 255, 0.7);
+ white-space: nowrap;
}
.header-top-wrapper .header-left .list li a {
color: rgba(255, 255, 255, 0.7);
+ text-decoration: none;
}
.header-top-wrapper .header-left .list li i {
- margin-right: 12px;
+ margin-right: 8px;
color: var(--theme);
}
.header-top-wrapper .header-left .list li.style-2 {
@@ -3495,7 +3503,8 @@ span {
font-size: 18px;
color: var(--white);
display: inline-block;
- margin-right: 12px;
+ margin-right: 6px;
+ font-weight: 500;
}
.header-top-wrapper .header-right {
display: flex;