forked from UKSOURCE/hailearning.edu.vn
refactor ui and json data about
This commit is contained in:
@@ -2,95 +2,119 @@
|
|||||||
"hero": {
|
"hero": {
|
||||||
"title": "About Us",
|
"title": "About Us",
|
||||||
"subtitle": "Global Education Simplified",
|
"subtitle": "Global Education Simplified",
|
||||||
"breadcrumb": [
|
"breadcrumb": ["Home", "About Us"],
|
||||||
"Home",
|
|
||||||
"About Us"
|
|
||||||
],
|
|
||||||
"backgroundImage": "/assets/img/inner-page/breadcrumb.jpg"
|
"backgroundImage": "/assets/img/inner-page/breadcrumb.jpg"
|
||||||
},
|
},
|
||||||
"intro": {
|
"intro": {
|
||||||
|
"subheading": "Company Intro",
|
||||||
"heading": "Building Pathways to Your Immigration Success",
|
"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.",
|
"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"
|
"image": "/assets/img/inner-page/intro.jpg"
|
||||||
},
|
},
|
||||||
"mission": {
|
"mission": {
|
||||||
"title": "Our Commitment to Your Future",
|
"subheading": "About Our Consultancy",
|
||||||
|
"heading": "Turning Study Abroad Dreams Into Reality",
|
||||||
|
"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.",
|
||||||
|
"images": {
|
||||||
|
"main": "/assets/img/home-1/about/about-1.jpg",
|
||||||
|
"secondary": "/assets/img/home-1/about/about-02.jpg",
|
||||||
|
"bgShape": "/assets/img/home-1/about/Vector.png",
|
||||||
|
"planeShape": "/assets/img/home-1/about/plane.png",
|
||||||
|
"topShape": "/assets/img/home-1/about/shape.png",
|
||||||
|
"globeShape": "/assets/img/home-1/about/globe.png"
|
||||||
|
},
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{
|
||||||
"label": "Mission",
|
"icon": "/assets/img/home-1/icon/01.svg",
|
||||||
"description": "To guide students with expert visa consulting, ensuring a smooth process from application to approval and turning dreams into reality."
|
"label": "Global Reach",
|
||||||
|
"description": "Expanding Opportunities Worldwide"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label": "Vision",
|
"icon": "/assets/img/home-1/icon/01.svg",
|
||||||
"description": "To be the most trusted global education consultancy, expanding opportunities and building paths to international success for every student."
|
"label": "Global Reach",
|
||||||
},
|
"description": "Expanding Opportunities Worldwide"
|
||||||
{
|
|
||||||
"label": "Values",
|
|
||||||
"description": "Transparency, integrity, and excellence in every visa application, ensuring reliable assistance and professional support."
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"stats": [
|
|
||||||
{
|
|
||||||
"label": "Years Experience",
|
|
||||||
"value": 10
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"label": "Students Helped",
|
|
||||||
"value": 1000
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"label": "Success Rate",
|
|
||||||
"value": "95%"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"label": "Countries Covered",
|
|
||||||
"value": 50
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"team": {
|
"features": [
|
||||||
"title": "Meet Our Expert Team",
|
"Fastest Visa form processing with skilled immigration agents",
|
||||||
"members": [
|
"Partnership with International Educational Institutions"
|
||||||
{
|
],
|
||||||
"name": "Eleanor Pena",
|
"ctaButton": {
|
||||||
"role": "Lead Legal Consultant",
|
"label": "Get Started",
|
||||||
"image": "/assets/img/home-1/testimonial/client.png",
|
"href": "/about"
|
||||||
"social": {
|
|
||||||
"facebook": "href",
|
|
||||||
"linkedin": "href"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"features": {
|
||||||
|
"backgroundImage": "/assets/img/home-2/feature/bg-shape.png",
|
||||||
|
"subheading": "Your Travel Made Easy",
|
||||||
|
"heading": "Smooth Visa Journey Guaranteed",
|
||||||
|
"description": "We provide expert guidance for every visa application, ensuring smooth processing, personalized support, and reliable assistance",
|
||||||
|
"image": "/assets/img/home-2/feature/02.png",
|
||||||
|
"items": [
|
||||||
{
|
{
|
||||||
"name": "Jerome Bell",
|
"icon": "/assets/img/home-2/icon/01.png",
|
||||||
"role": "Senior Visa Expert",
|
"title": "Expert Consultants",
|
||||||
"image": "/assets/img/home-1/testimonial/client-2.png",
|
"description": "Skilled and knowledgeable visa advisors. Skilled and knowledgeable visa advisors."
|
||||||
"social": {
|
|
||||||
"facebook": "href",
|
|
||||||
"linkedin": "href"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Marvin McKinney",
|
"icon": "/assets/img/home-2/icon/01.png",
|
||||||
"role": "Immigration Advisor",
|
"title": "Personalized Support",
|
||||||
"image": "/assets/img/home-1/news/client.png",
|
"description": "Skilled and knowledgeable visa advisors. Skilled and knowledgeable visa advisors."
|
||||||
"social": {
|
|
||||||
"facebook": "href",
|
|
||||||
"linkedin": "href"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Kathryn Murphy",
|
"icon": "/assets/img/home-2/icon/01.png",
|
||||||
"role": "Education Consultant",
|
"title": "Transparent Process",
|
||||||
"image": "/assets/img/home-1/testimonial/client.png",
|
"description": "Skilled and knowledgeable visa advisors. Skilled and knowledgeable visa advisors."
|
||||||
"social": {
|
|
||||||
"facebook": "href",
|
|
||||||
"linkedin": "href"
|
|
||||||
}
|
}
|
||||||
|
],
|
||||||
|
"ctaButton": {
|
||||||
|
"label": "Get Started Today",
|
||||||
|
"href": "/contact"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"news": {
|
||||||
|
"subheading": "Visa Tips & Guides",
|
||||||
|
"heading": "Latest Insights & Updates",
|
||||||
|
"ctaButton": {
|
||||||
|
"label": "view all articles",
|
||||||
|
"href": "/blog"
|
||||||
|
},
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"title": "Step-by-Step Guide to Applying for a Student Visa",
|
||||||
|
"category": "Student Visa",
|
||||||
|
"date": "20 August ,2025",
|
||||||
|
"comments": 8,
|
||||||
|
"author": {
|
||||||
|
"name": "Sohel",
|
||||||
|
"avatar": "/assets/img/home-1/news/client.png"
|
||||||
|
},
|
||||||
|
"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",
|
||||||
|
"category": "IELTS / TOEFL",
|
||||||
|
"date": "20 August ,2025",
|
||||||
|
"comments": 8,
|
||||||
|
"author": {
|
||||||
|
"name": "Sohel",
|
||||||
|
"avatar": "/assets/img/home-1/news/client.png"
|
||||||
|
},
|
||||||
|
"link": "/blog/financial-documents-visa-approval",
|
||||||
|
"thumbnail": "/assets/img/home-1/news/news-2.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Post-Arrival Guide What Every Student Should Know",
|
||||||
|
"category": "Study Abroad",
|
||||||
|
"date": "20 August ,2025",
|
||||||
|
"comments": 8,
|
||||||
|
"author": {
|
||||||
|
"name": "Sohel",
|
||||||
|
"avatar": "/assets/img/home-1/news/client.png"
|
||||||
|
},
|
||||||
|
"link": "/blog/post-arrival-guide-students",
|
||||||
|
"thumbnail": "/assets/img/home-1/news/news-3.jpg"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +1,5 @@
|
|||||||
import {
|
import { AboutHero, AboutIntro, AboutMission, AboutFeatures, AboutNews } from "../components/about";
|
||||||
AboutHero,
|
import aboutData from "./about.json";
|
||||||
AboutIntro,
|
|
||||||
AboutMission,
|
|
||||||
AboutStats,
|
|
||||||
AboutTeam,
|
|
||||||
AboutFeatures,
|
|
||||||
AboutNews
|
|
||||||
} from '../components/about';
|
|
||||||
import aboutData from './about.json';
|
|
||||||
|
|
||||||
export default function AboutPage() {
|
export default function AboutPage() {
|
||||||
return (
|
return (
|
||||||
@@ -15,10 +7,8 @@ export default function AboutPage() {
|
|||||||
<AboutHero data={aboutData.hero} />
|
<AboutHero data={aboutData.hero} />
|
||||||
<AboutIntro data={aboutData.intro} />
|
<AboutIntro data={aboutData.intro} />
|
||||||
<AboutMission data={aboutData.mission} />
|
<AboutMission data={aboutData.mission} />
|
||||||
<AboutStats data={aboutData.stats} />
|
<AboutFeatures data={aboutData.features} />
|
||||||
<AboutTeam data={aboutData.team} />
|
<AboutNews data={aboutData.news} />
|
||||||
<AboutFeatures />
|
|
||||||
<AboutNews />
|
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,32 +6,68 @@ export interface AboutData {
|
|||||||
backgroundImage: string;
|
backgroundImage: string;
|
||||||
};
|
};
|
||||||
intro: {
|
intro: {
|
||||||
|
subheading: string;
|
||||||
heading: string;
|
heading: string;
|
||||||
description: string;
|
description: string;
|
||||||
highlights: string[];
|
|
||||||
image: string;
|
image: string;
|
||||||
};
|
};
|
||||||
mission: {
|
mission: {
|
||||||
title: string;
|
subheading: string;
|
||||||
|
heading: string;
|
||||||
|
description: string;
|
||||||
|
images: {
|
||||||
|
main: string;
|
||||||
|
secondary: string;
|
||||||
|
bgShape: string;
|
||||||
|
planeShape: string;
|
||||||
|
topShape: string;
|
||||||
|
globeShape: string;
|
||||||
|
};
|
||||||
items: {
|
items: {
|
||||||
|
icon: string;
|
||||||
label: string;
|
label: string;
|
||||||
description: string;
|
description: string;
|
||||||
}[];
|
}[];
|
||||||
};
|
features: string[];
|
||||||
stats: {
|
ctaButton: {
|
||||||
label: string;
|
label: string;
|
||||||
value: number | string;
|
href: string;
|
||||||
}[];
|
|
||||||
team: {
|
|
||||||
title: string;
|
|
||||||
members: {
|
|
||||||
name: string;
|
|
||||||
role: string;
|
|
||||||
image: string;
|
|
||||||
social: {
|
|
||||||
facebook: string;
|
|
||||||
linkedin: string;
|
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
features: {
|
||||||
|
backgroundImage: string;
|
||||||
|
subheading: string;
|
||||||
|
heading: string;
|
||||||
|
description: string;
|
||||||
|
image: string;
|
||||||
|
items: {
|
||||||
|
icon: string;
|
||||||
|
title: string;
|
||||||
|
description: string;
|
||||||
|
}[];
|
||||||
|
ctaButton: {
|
||||||
|
label: string;
|
||||||
|
href: string;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
news: {
|
||||||
|
subheading: string;
|
||||||
|
heading: string;
|
||||||
|
ctaButton: {
|
||||||
|
label: string;
|
||||||
|
href: string;
|
||||||
|
};
|
||||||
|
items: {
|
||||||
|
title: string;
|
||||||
|
category: string;
|
||||||
|
date: string;
|
||||||
|
comments: number;
|
||||||
|
author: {
|
||||||
|
name: string;
|
||||||
|
avatar: string;
|
||||||
|
};
|
||||||
|
link: string;
|
||||||
|
thumbnail: string;
|
||||||
}[];
|
}[];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,62 +1,44 @@
|
|||||||
import Link from 'next/link';
|
import Link from "next/link";
|
||||||
|
import { AboutData } from "../../about/types";
|
||||||
|
|
||||||
const AboutFeatures = () => {
|
interface AboutFeaturesProps {
|
||||||
|
data: AboutData["features"];
|
||||||
|
}
|
||||||
|
|
||||||
|
const AboutFeatures = ({ data }: AboutFeaturesProps) => {
|
||||||
return (
|
return (
|
||||||
<section className="choose-us-section-2 section-padding fix bg-cover" style={{ backgroundImage: 'url(/assets/img/home-2/feature/bg-shape.png)' }}>
|
<section
|
||||||
|
className="choose-us-section-2 section-padding fix bg-cover"
|
||||||
|
style={{ backgroundImage: `url(${data.backgroundImage})` }}
|
||||||
|
>
|
||||||
<div className="container">
|
<div className="container">
|
||||||
<div className="choose-us-wrapper-2">
|
<div className="choose-us-wrapper-2">
|
||||||
<div className="row g-4">
|
<div className="row g-4">
|
||||||
<div className="col-lg-6">
|
<div className="col-lg-6">
|
||||||
<div className="choose-us-image">
|
<div className="choose-us-image">
|
||||||
<img src="/assets/img/home-2/feature/02.png" alt="img" />
|
<img src={data.image} alt="img" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="col-lg-6">
|
<div className="col-lg-6">
|
||||||
<div className="feature-content">
|
<div className="feature-content">
|
||||||
<div className="section-title mb-0">
|
<div className="section-title mb-0">
|
||||||
<span className="sub-title-2 wow fadeInUp">Your Travel Made Easy</span>
|
<span className="sub-title-2 wow fadeInUp">{data.subheading}</span>
|
||||||
<h2 className="split-text-right split-text-in-right">
|
<h2 className="split-text-right split-text-in-right">{data.heading}</h2>
|
||||||
Smooth Visa Journey Guaranteed
|
|
||||||
</h2>
|
|
||||||
</div>
|
</div>
|
||||||
<p className="text">
|
<p className="text">{data.description}</p>
|
||||||
We provide expert guidance for every visa application, ensuring smooth processing, personalized support, and reliable assistance
|
{data.items.map((item, index) => (
|
||||||
</p>
|
<div key={index} className="choose-us-box">
|
||||||
<div className="choose-us-box">
|
|
||||||
<div className="icon">
|
<div className="icon">
|
||||||
<img src="/assets/img/home-2/icon/01.png" alt="img" />
|
<img src={item.icon} alt="img" />
|
||||||
</div>
|
</div>
|
||||||
<div className="content">
|
<div className="content">
|
||||||
<h5>Expert Consultants</h5>
|
<h5>{item.title}</h5>
|
||||||
<p>
|
<p>{item.description}</p>
|
||||||
Skilled and knowledgeable visa advisors. Skilled and knowled geable visa advisors.
|
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="choose-us-box">
|
))}
|
||||||
<div className="icon">
|
<Link href={data.ctaButton.href} className="theme-btn">
|
||||||
<img src="/assets/img/home-2/icon/01.png" alt="img" />
|
{data.ctaButton.label}
|
||||||
</div>
|
|
||||||
<div className="content">
|
|
||||||
<h5>Personalized Support</h5>
|
|
||||||
<p>
|
|
||||||
Skilled and knowledgeable visa advisors. Skilled and knowled geable visa advisors.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div className="choose-us-box">
|
|
||||||
<div className="icon">
|
|
||||||
<img src="/assets/img/home-2/icon/01.png" alt="img" />
|
|
||||||
</div>
|
|
||||||
<div className="content">
|
|
||||||
<h5>Transparent Process</h5>
|
|
||||||
<p>
|
|
||||||
Skilled and knowledgeable visa advisors. Skilled and knowled geable visa advisors.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<Link href="/contact" className="theme-btn">
|
|
||||||
Get Started Today
|
|
||||||
<i className="fa-solid fa-arrow-right"></i>
|
<i className="fa-solid fa-arrow-right"></i>
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { AboutData } from '../../about/types';
|
import { AboutData } from "../../about/types";
|
||||||
|
|
||||||
interface AboutIntroProps {
|
interface AboutIntroProps {
|
||||||
data: AboutData['intro'];
|
data: AboutData["intro"];
|
||||||
}
|
}
|
||||||
|
|
||||||
const AboutIntro = ({ data }: AboutIntroProps) => {
|
const AboutIntro = ({ data }: AboutIntroProps) => {
|
||||||
@@ -10,14 +10,10 @@ const AboutIntro = ({ data }: AboutIntroProps) => {
|
|||||||
<div className="container">
|
<div className="container">
|
||||||
<div className="section-title-area">
|
<div className="section-title-area">
|
||||||
<div className="section-title">
|
<div className="section-title">
|
||||||
<span className="sub-title-2 wow fadeInUp">Company Intro</span>
|
<span className="sub-title-2 wow fadeInUp">{data.subheading}</span>
|
||||||
<h2 className="split-text-right split-text-in-right">
|
<h2 className="split-text-right split-text-in-right">{data.heading}</h2>
|
||||||
{data.heading}
|
|
||||||
</h2>
|
|
||||||
</div>
|
</div>
|
||||||
<p>
|
<p>{data.description}</p>
|
||||||
{data.description}
|
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
<div className="row">
|
<div className="row">
|
||||||
<div className="intro-image tp-clip-anim p-relative">
|
<div className="intro-image tp-clip-anim p-relative">
|
||||||
|
|||||||
@@ -1,57 +1,70 @@
|
|||||||
import Link from 'next/link';
|
import Link from "next/link";
|
||||||
import { AboutData } from '../../about/types';
|
import { AboutData } from "../../about/types";
|
||||||
|
|
||||||
interface AboutMissionProps {
|
interface AboutMissionProps {
|
||||||
data: AboutData['mission'];
|
data: AboutData["mission"];
|
||||||
}
|
}
|
||||||
|
|
||||||
const AboutMission = ({ data }: AboutMissionProps) => {
|
const AboutMission = ({ data }: AboutMissionProps) => {
|
||||||
return (
|
return (
|
||||||
<section className="about-section section-padding fix pb-0">
|
<section className="about-section section-padding fix pb-0">
|
||||||
<div className="top-shape">
|
<div className="top-shape">
|
||||||
<img src="/assets/img/home-1/about/globe.png" alt="img" />
|
<img src={data.images.globeShape} alt="img" />
|
||||||
</div>
|
</div>
|
||||||
<div className="container">
|
<div className="container">
|
||||||
<div className="about-wrapper">
|
<div className="about-wrapper">
|
||||||
<div className="row g-4">
|
<div className="row g-4">
|
||||||
<div className="col-lg-6">
|
<div className="col-lg-6">
|
||||||
<div className="about-image">
|
<div className="about-image">
|
||||||
<img src="/assets/img/home-1/about/about-1.jpg" alt="img" className="wow img-custom-anim-left" />
|
<img src={data.images.main} alt="img" className="wow img-custom-anim-left" />
|
||||||
<div className="about-image-2">
|
<div className="about-image-2">
|
||||||
<img src="/assets/img/home-1/about/about-02.jpg" alt="img" className="wow img-custom-anim-right" />
|
<img src={data.images.secondary} alt="img" className="wow img-custom-anim-right" />
|
||||||
</div>
|
</div>
|
||||||
<div className="bg-shape">
|
<div className="bg-shape">
|
||||||
<img src="/assets/img/home-1/about/Vector.png" alt="img" />
|
<img src={data.images.bgShape} alt="img" />
|
||||||
</div>
|
</div>
|
||||||
<div className="plane-shape float-bob-y">
|
<div className="plane-shape float-bob-y">
|
||||||
<img src="/assets/img/home-1/about/plane.png" alt="img" />
|
<img src={data.images.planeShape} alt="img" />
|
||||||
</div>
|
</div>
|
||||||
<div className="top-shape float-bob-y">
|
<div className="top-shape float-bob-y">
|
||||||
<img src="/assets/img/home-1/about/shape.png" alt="img" />
|
<img src={data.images.topShape} alt="img" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="col-lg-6">
|
<div className="col-lg-6">
|
||||||
<div className="about-content">
|
<div className="about-content">
|
||||||
<div className="section-title mb-0">
|
<div className="section-title mb-0">
|
||||||
<span className="sub-title wow fadeInUp">About Our Consultancy</span>
|
<span className="sub-title wow fadeInUp">{data.subheading}</span>
|
||||||
<h2 className="split-text-right split-text-in-right">
|
<h2 className="split-text-right split-text-in-right">{data.heading}</h2>
|
||||||
{data.title}
|
|
||||||
</h2>
|
|
||||||
</div>
|
</div>
|
||||||
|
<p className="text wow fadeInUp" data-wow-delay=".3s">
|
||||||
|
{data.description}
|
||||||
|
</p>
|
||||||
<div className="about-item wow fadeInUp" data-wow-delay=".5s">
|
<div className="about-item wow fadeInUp" data-wow-delay=".5s">
|
||||||
{data.items.map((item, index) => (
|
{data.items.map((item, index) => (
|
||||||
<div key={index} className="content mb-3">
|
<div key={index} className="content">
|
||||||
<span>
|
<span>
|
||||||
<img src="/assets/img/home-1/icon/01.svg" alt="" className="me-2" />
|
<img src={item.icon} alt="" className="me-2 d-inline-block" />
|
||||||
<strong>{item.label}</strong>
|
{item.label}-
|
||||||
</span>
|
</span>
|
||||||
<p>{item.description}</p>
|
<p>{item.description}</p>
|
||||||
</div>
|
</div>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
<Link href="/contact" className="theme-btn wow fadeInUp" data-wow-delay=".5s">
|
<ul className="list wow fadeInUp" data-wow-delay=".3s">
|
||||||
Get Started
|
{data.features.map((feature, index) => (
|
||||||
|
<li key={index}>
|
||||||
|
<i className="fa-solid fa-chevrons-right"></i>
|
||||||
|
{feature}
|
||||||
|
</li>
|
||||||
|
))}
|
||||||
|
</ul>
|
||||||
|
<Link
|
||||||
|
href={data.ctaButton.href}
|
||||||
|
className="theme-btn wow fadeInUp"
|
||||||
|
data-wow-delay=".5s"
|
||||||
|
>
|
||||||
|
{data.ctaButton.label}
|
||||||
<i className="fa-solid fa-arrow-right"></i>
|
<i className="fa-solid fa-arrow-right"></i>
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,63 +1,48 @@
|
|||||||
import Link from 'next/link';
|
import Link from "next/link";
|
||||||
|
import { AboutData } from "../../about/types";
|
||||||
|
|
||||||
const AboutNews = () => {
|
interface AboutNewsProps {
|
||||||
const newsItems = [
|
data: AboutData["news"];
|
||||||
{
|
}
|
||||||
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'
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
|
const AboutNews = ({ data }: AboutNewsProps) => {
|
||||||
return (
|
return (
|
||||||
<section className="news-section section-padding fix pt-0">
|
<section className="news-section section-padding fix pt-0">
|
||||||
<div className="container">
|
<div className="container">
|
||||||
<div className="section-title-area">
|
<div className="section-title-area">
|
||||||
<div className="section-title">
|
<div className="section-title">
|
||||||
<span className="sub-title">Visa Tips & Guides</span>
|
<span className="sub-title">{data.subheading}</span>
|
||||||
<h2 className="split-text-right split-text-in-right">
|
<h2 className="split-text-right split-text-in-right">{data.heading}</h2>
|
||||||
Latest Insights & Updates
|
|
||||||
</h2>
|
|
||||||
</div>
|
</div>
|
||||||
<Link href="/news" className="theme-btn">
|
<Link href={data.ctaButton.href} className="theme-btn">
|
||||||
view all articies
|
{data.ctaButton.label}
|
||||||
<i className="fa-solid fa-arrow-right"></i>
|
<i className="fa-solid fa-arrow-right"></i>
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
<div className="row">
|
<div className="row">
|
||||||
{newsItems.map((item, index) => (
|
{data.items.map((item, index) => (
|
||||||
<div key={index} className="col-xl-4 col-lg-6 col-md-6">
|
<div key={index} className="col-xl-4 col-lg-6 col-md-6">
|
||||||
<div className="news-card-item">
|
<div className="news-card-item">
|
||||||
<div className="news-image">
|
<div className="news-image">
|
||||||
<img src={item.image} alt="img" />
|
<img src={item.thumbnail} alt="img" />
|
||||||
<span>{item.category}</span>
|
<span>{item.category}</span>
|
||||||
<div className="news-layer-wrapper">
|
<div className="news-layer-wrapper">
|
||||||
<div className="news-layer-image" style={{ backgroundImage: `url('${item.image}')` }}></div>
|
<div
|
||||||
<div className="news-layer-image" style={{ backgroundImage: `url('${item.image}')` }}></div>
|
className="news-layer-image"
|
||||||
<div className="news-layer-image" style={{ backgroundImage: `url('${item.image}')` }}></div>
|
style={{ backgroundImage: `url('${item.thumbnail}')` }}
|
||||||
<div className="news-layer-image" style={{ backgroundImage: `url('${item.image}')` }}></div>
|
></div>
|
||||||
|
<div
|
||||||
|
className="news-layer-image"
|
||||||
|
style={{ backgroundImage: `url('${item.thumbnail}')` }}
|
||||||
|
></div>
|
||||||
|
<div
|
||||||
|
className="news-layer-image"
|
||||||
|
style={{ backgroundImage: `url('${item.thumbnail}')` }}
|
||||||
|
></div>
|
||||||
|
<div
|
||||||
|
className="news-layer-image"
|
||||||
|
style={{ backgroundImage: `url('${item.thumbnail}')` }}
|
||||||
|
></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="news-content">
|
<div className="news-content">
|
||||||
@@ -66,16 +51,14 @@ const AboutNews = () => {
|
|||||||
<span>_ {item.date}</span>
|
<span>_ {item.date}</span>
|
||||||
</div>
|
</div>
|
||||||
<h3>
|
<h3>
|
||||||
<Link href="/news-details">
|
<Link href={item.link}>{item.title}</Link>
|
||||||
{item.title}
|
|
||||||
</Link>
|
|
||||||
</h3>
|
</h3>
|
||||||
<div className="news-bottom">
|
<div className="news-bottom">
|
||||||
<div className="info-item">
|
<div className="info-item">
|
||||||
<img src={item.authorImage} alt="img" />
|
<img src={item.author.avatar} alt="img" />
|
||||||
<span>By {item.author}</span>
|
<span>By {item.author.name}</span>
|
||||||
</div>
|
</div>
|
||||||
<Link href="/news-details" className="link-btn">
|
<Link href={item.link} className="link-btn">
|
||||||
View Articles<i className="fa-solid fa-arrow-right"></i>
|
View Articles<i className="fa-solid fa-arrow-right"></i>
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,45 +0,0 @@
|
|||||||
import { AboutData } from '../../about/types';
|
|
||||||
|
|
||||||
interface AboutStatsProps {
|
|
||||||
data: AboutData['stats'];
|
|
||||||
}
|
|
||||||
|
|
||||||
const AboutStats = ({ data }: AboutStatsProps) => {
|
|
||||||
return (
|
|
||||||
<section className="counter-section section-padding pb-0 fix bg-cover" style={{ backgroundImage: "url('/assets/img/home-1/feature/bg-2.jpg')" }}>
|
|
||||||
<div className="shape">
|
|
||||||
<img src="/assets/img/home-1/feature/shape-2.png" alt="img" />
|
|
||||||
</div>
|
|
||||||
<div className="container">
|
|
||||||
<div className="section-title text-center">
|
|
||||||
<span className="sub-title bg-2 wow fadeInUp">Did You Know</span>
|
|
||||||
<h2 className="text-white split-text-right split-text-in-right">
|
|
||||||
Our Achievements in Numbers
|
|
||||||
</h2>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div className="counter-wrapper">
|
|
||||||
<div className="container">
|
|
||||||
<div className="counter-main-item">
|
|
||||||
{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 (
|
|
||||||
<div key={index} className={`counter-item ${index < 3 ? 'style-2' : ''}`}>
|
|
||||||
<h2><span className="odometer" data-count={numericValue}>00</span>{suffix}</h2>
|
|
||||||
<h5>{stat.label}</h5>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
})}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
export default AboutStats;
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
import { AboutData } from '../../about/types';
|
|
||||||
|
|
||||||
interface AboutTeamProps {
|
|
||||||
data: AboutData['team'];
|
|
||||||
}
|
|
||||||
|
|
||||||
const AboutTeam = ({ data }: AboutTeamProps) => {
|
|
||||||
return (
|
|
||||||
<section className="team-section section-padding fix pt-0">
|
|
||||||
<div className="container">
|
|
||||||
<div className="section-title text-center">
|
|
||||||
<span className="sub-title wow fadeInUp">Our Expert Team</span>
|
|
||||||
<h2 className="split-text-right split-text-in-right">
|
|
||||||
{data.title}
|
|
||||||
</h2>
|
|
||||||
</div>
|
|
||||||
<div className="row g-4">
|
|
||||||
{data.members.map((member, index) => (
|
|
||||||
<div key={index} className="col-xl-3 col-lg-4 col-md-6 wow fadeInUp" data-wow-delay={`${0.2 * (index + 1)}s`}>
|
|
||||||
<div className="news-card-item">
|
|
||||||
<div className="news-image">
|
|
||||||
<img src={member.image} alt={member.name} />
|
|
||||||
</div>
|
|
||||||
<div className="news-content text-center">
|
|
||||||
<h3>{member.name}</h3>
|
|
||||||
<span className="text-primary">{member.role}</span>
|
|
||||||
<div className="social-icon d-flex justify-content-center gap-2 mt-3">
|
|
||||||
{member.social.facebook && <a href={member.social.facebook}><i className="fa-brands fa-facebook-f"></i></a>}
|
|
||||||
{member.social.linkedin && <a href={member.social.linkedin}><i className="fa-brands fa-linkedin-in"></i></a>}
|
|
||||||
<a href="#"><i className="fa-brands fa-twitter"></i></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
))}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
export default AboutTeam;
|
|
||||||
@@ -3,5 +3,3 @@ export { default as AboutIntro } from './AboutIntro';
|
|||||||
export { default as AboutMission } from './AboutMission';
|
export { default as AboutMission } from './AboutMission';
|
||||||
export { default as AboutFeatures } from './AboutFeatures';
|
export { default as AboutFeatures } from './AboutFeatures';
|
||||||
export { default as AboutNews } from './AboutNews';
|
export { default as AboutNews } from './AboutNews';
|
||||||
export { default as AboutStats } from './AboutStats';
|
|
||||||
export { default as AboutTeam } from './AboutTeam';
|
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
import type { Metadata } from "next";
|
import type { Metadata } from "next";
|
||||||
import "./globals.css";
|
import "./globals.css";
|
||||||
|
|
||||||
|
import Header from "./components/layout/Header/Header";
|
||||||
import Header from "./components/Header";
|
import Footer from "./components/layout/Footer/Footer";
|
||||||
import Footer from "./components/Footer";
|
|
||||||
import Loader from "./components/Loader";
|
import Loader from "./components/Loader";
|
||||||
import BackToTop from "./components/BackToTop";
|
import BackToTop from "./components/BackToTop";
|
||||||
import MouseCursor from "./components/MouseCursor";
|
import MouseCursor from "./components/MouseCursor";
|
||||||
|
|||||||
Reference in New Issue
Block a user