first commit

This commit is contained in:
Alaguraj0361 2025-07-14 14:03:36 +05:30
commit 2902ff8bab
335 changed files with 65360 additions and 0 deletions

36
.gitignore vendored Normal file
View File

@ -0,0 +1,36 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/node_modules
/.pnp
.pnp.js
.yarn/install-state.gz
# testing
/coverage
# next.js
/.next/
/out/
# production
/build
# misc
.DS_Store
*.pem
# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# local env files
.env*.local
# vercel
.vercel
# typescript
*.tsbuildinfo
next-env.d.ts

36
README.md Normal file
View File

@ -0,0 +1,36 @@
This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).
## Getting Started
First, run the development server:
```bash
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
```
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
You can start editing the page by modifying `app/page.js`. The page auto-updates as you edit the file.
This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font.
## Learn More
To learn more about Next.js, take a look at the following resources:
- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!
## Deploy on Vercel
The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.

View File

@ -0,0 +1,85 @@
import Achievments from "@/components/about/Achievments";
import Team from "@/components/about/Team";
import Brands from "@/components/common/Brands";
import Footer1 from "@/components/footers/Footer1";
import Header2 from "@/components/headers/Header2";
import About from "@/components/homes/home-1/About";
import Testimonials from "@/components/homes/home-1/Testimonials";
import Image from "next/image";
import Link from "next/link";
import React from "react";
export const metadata = {
title: "About || Xbuild - Constriction nextjs Template",
description: "Xbuild - Constriction nextjs Template",
};
export default function page() {
return (
<>
<Header2 />
<div
className="breadcrumb-wrapper bg-cover"
style={{ backgroundImage: 'url("/assets/img/breadcrumb-bg.jpg")' }}
>
<div className="shape-image float-bob-y">
<Image
src="/assets/img/vector.png"
width={84}
height={186}
alt="img"
/>
</div>
<div className="container">
<div className="breadcrumb-wrapper-items">
<div className="page-heading">
<div className="breadcrumb-sub-title">
<h1 className="wow fadeInUp" data-wow-delay=".3s">
About Us
</h1>
</div>
<ul
className="breadcrumb-items wow fadeInUp"
data-wow-delay=".5s"
>
<li>
<Link href={`/`}> Home </Link>
</li>
<li>
<i className="fa-sharp fa-solid fa-slash-forward" />
</li>
<li>About Us</li>
</ul>
</div>
<div className="breadcrumb-image">
<Image
src="/assets/img/breadcrumb-image.png"
width={540}
height={450}
alt="img"
className="float-bob-x"
/>
<div className="bar-shape">
<Image
src="/assets/img/breadcrumb-bar.png"
width={631}
height={604}
alt="img"
/>
</div>
</div>
</div>
</div>
</div>
<About />
<Achievments />
<Testimonials />
<Team />
<div className="brand-section fix section-padding pt-0">
<Brands />
</div>
<Footer1 />
</>
);
}

View File

@ -0,0 +1,78 @@
import BlogDetails from "@/components/blogs/BlogDetails";
import Brands from "@/components/common/Brands";
import Footer1 from "@/components/footers/Footer1";
import Header2 from "@/components/headers/Header2";
import { allNews } from "@/data/blogs";
import Image from "next/image";
import Link from "next/link";
export const metadata = {
title: "Blog Details || Xbuild - Constriction nextjs Template",
description: "Xbuild - Constriction nextjs Template",
};
export default function page({ params }) {
const newsItem =
allNews.filter((elm) => elm.id == params.id)[0] || allNews[0];
return (
<>
<Header2 />
<div
className="breadcrumb-wrapper bg-cover"
style={{ backgroundImage: 'url("/assets/img/breadcrumb-bg.jpg")' }}
>
<div className="shape-image float-bob-y">
<Image
src="/assets/img/vector.png"
width={84}
height={186}
alt="img"
/>
</div>
<div className="container">
<div className="breadcrumb-wrapper-items">
<div className="page-heading">
<div className="breadcrumb-sub-title">
<h1 className="wow fadeInUp" data-wow-delay=".3s">
{newsItem.title}
</h1>
</div>
<ul
className="breadcrumb-items wow fadeInUp"
data-wow-delay=".5s"
>
<li>
<Link href={`/`}> Home </Link>
</li>
<li>
<i className="fa-sharp fa-solid fa-slash-forward" />
</li>
<li>Blogs Details</li>
</ul>
</div>
<div className="breadcrumb-image">
<Image
src="/assets/img/breadcrumb-image.png"
width={540}
height={450}
alt="img"
className="float-bob-x"
/>
<div className="bar-shape">
<Image
src="/assets/img/breadcrumb-bar.png"
width={631}
height={604}
alt="img"
/>
</div>
</div>
</div>
</div>
</div>
<BlogDetails newsItem={newsItem} />
<div className="brand-section fix section-padding pt-0">
<Brands />
</div>
<Footer1 />
</>
);
}

View File

@ -0,0 +1,75 @@
import Blogs from "@/components/blogs/Blogs";
import Brands from "@/components/common/Brands";
import Footer1 from "@/components/footers/Footer1";
import Header2 from "@/components/headers/Header2";
import Image from "next/image";
import Link from "next/link";
export const metadata = {
title: "Blog Grid || Xbuild - Constriction nextjs Template",
description: "Xbuild - Constriction nextjs Template",
};
export default function page() {
return (
<>
<Header2 />
<div
className="breadcrumb-wrapper bg-cover"
style={{ backgroundImage: 'url("/assets/img/breadcrumb-bg.jpg")' }}
>
<div className="shape-image float-bob-y">
<Image
src="/assets/img/vector.png"
width={84}
height={186}
alt="img"
/>
</div>
<div className="container">
<div className="breadcrumb-wrapper-items">
<div className="page-heading">
<div className="breadcrumb-sub-title">
<h1 className="wow fadeInUp" data-wow-delay=".3s">
Blogs Grid
</h1>
</div>
<ul
className="breadcrumb-items wow fadeInUp"
data-wow-delay=".5s"
>
<li>
<Link href={`/`}> Home </Link>
</li>
<li>
<i className="fa-sharp fa-solid fa-slash-forward" />
</li>
<li>Blogs Grid</li>
</ul>
</div>
<div className="breadcrumb-image">
<Image
src="/assets/img/breadcrumb-image.png"
width={540}
height={450}
alt="img"
className="float-bob-x"
/>
<div className="bar-shape">
<Image
src="/assets/img/breadcrumb-bar.png"
width={631}
height={604}
alt="img"
/>
</div>
</div>
</div>
</div>
</div>
<Blogs />
<div className="brand-section fix section-padding pt-0">
<Brands />
</div>
<Footer1 />
</>
);
}

75
app/(blogs)/news/page.jsx Normal file
View File

@ -0,0 +1,75 @@
import Blogs2 from "@/components/blogs/Blogs2";
import Brands from "@/components/common/Brands";
import Footer1 from "@/components/footers/Footer1";
import Header2 from "@/components/headers/Header2";
import Image from "next/image";
import Link from "next/link";
export const metadata = {
title: "Blog Standard || Xbuild - Constriction nextjs Template",
description: "Xbuild - Constriction nextjs Template",
};
export default function page() {
return (
<>
<Header2 />
<div
className="breadcrumb-wrapper bg-cover"
style={{ backgroundImage: 'url("/assets/img/breadcrumb-bg.jpg")' }}
>
<div className="shape-image float-bob-y">
<Image
src="/assets/img/vector.png"
width={84}
height={186}
alt="img"
/>
</div>
<div className="container">
<div className="breadcrumb-wrapper-items">
<div className="page-heading">
<div className="breadcrumb-sub-title">
<h1 className="wow fadeInUp" data-wow-delay=".3s">
Blogs Standard
</h1>
</div>
<ul
className="breadcrumb-items wow fadeInUp"
data-wow-delay=".5s"
>
<li>
<Link href={`/`}> Home </Link>
</li>
<li>
<i className="fa-sharp fa-solid fa-slash-forward" />
</li>
<li>Blogs Standard</li>
</ul>
</div>
<div className="breadcrumb-image">
<Image
src="/assets/img/breadcrumb-image.png"
width={540}
height={450}
alt="img"
className="float-bob-x"
/>
<div className="bar-shape">
<Image
src="/assets/img/breadcrumb-bar.png"
width={631}
height={604}
alt="img"
/>
</div>
</div>
</div>
</div>
</div>
<Blogs2 />
<div className="brand-section fix section-padding pt-0">
<Brands />
</div>
<Footer1 />
</>
);
}

View File

@ -0,0 +1,79 @@
import Brands from "@/components/common/Brands";
import ContactForm from "@/components/contact/ContactForm";
import ContactInfo from "@/components/contact/ContactInfo";
import Map from "@/components/contact/Map";
import Footer1 from "@/components/footers/Footer1";
import Header2 from "@/components/headers/Header2";
import Image from "next/image";
import Link from "next/link";
export const metadata = {
title: "Contact || Xbuild - Constriction nextjs Template",
description: "Xbuild - Constriction nextjs Template",
};
export default function page() {
return (
<>
<Header2 />
<div
className="breadcrumb-wrapper bg-cover"
style={{ backgroundImage: 'url("/assets/img/breadcrumb-bg.jpg")' }}
>
<div className="shape-image float-bob-y">
<Image
src="/assets/img/vector.png"
width={84}
height={186}
alt="img"
/>
</div>
<div className="container">
<div className="breadcrumb-wrapper-items">
<div className="page-heading">
<div className="breadcrumb-sub-title">
<h1 className="wow fadeInUp" data-wow-delay=".3s">
Contact
</h1>
</div>
<ul
className="breadcrumb-items wow fadeInUp"
data-wow-delay=".5s"
>
<li>
<Link href={`/`}> Home </Link>
</li>
<li>
<i className="fa-sharp fa-solid fa-slash-forward" />
</li>
<li>Contact</li>
</ul>
</div>
<div className="breadcrumb-image">
<Image
src="/assets/img/breadcrumb-image.png"
width={540}
height={450}
alt="img"
className="float-bob-x"
/>
<div className="bar-shape">
<Image
src="/assets/img/breadcrumb-bar.png"
width={631}
height={604}
alt="img"
/>
</div>
</div>
</div>
</div>
</div>
<ContactInfo />
<ContactForm />
<Map />
<div className="brand-section fix section-padding">
<Brands />
</div>
<Footer1 />
</>
);
}

View File

@ -0,0 +1,43 @@
import Brands from "@/components/common/Brands";
import Footer1 from "@/components/footers/Footer1";
import Header1Onepage from "@/components/headers/Header1Onepage";
import HeaderTop1 from "@/components/headers/HeaderTop1";
import About from "@/components/homes/home-1/About";
import Blogs from "@/components/homes/home-1/Blogs";
import Contact from "@/components/homes/home-1/Contact";
import Cta from "@/components/homes/home-1/Cta";
import Faq from "@/components/homes/home-1/Faq";
import Hero from "@/components/homes/home-1/Hero";
import Projects from "@/components/homes/home-1/Projects";
import Services from "@/components/homes/home-1/Services";
import Skills from "@/components/homes/home-1/Skills";
import Team from "@/components/homes/home-1/Team";
import Testimonials from "@/components/homes/home-1/Testimonials";
export const metadata = {
title: "Home 1 Onepage || Xbuild - Constriction nextjs Template",
description: "Xbuild - Constriction nextjs Template",
};
export default function Home() {
return (
<>
<HeaderTop1 />
<Header1Onepage />
<Hero />
<About />
<Services />
<Cta />
<Skills />
<Testimonials />
<Projects />
<Faq />
<Team />
<Contact />
<Blogs />
<div className="brand-section fix section-padding">
<Brands />
</div>
<Footer1 />
</>
);
}

View File

@ -0,0 +1,43 @@
import Brands from "@/components/common/Brands";
import Footer1 from "@/components/footers/Footer1";
import Header1 from "@/components/headers/Header1";
import HeaderTop1 from "@/components/headers/HeaderTop1";
import About from "@/components/homes/home-1/About";
import Blogs from "@/components/homes/home-1/Blogs";
import Contact from "@/components/homes/home-1/Contact";
import Cta from "@/components/homes/home-1/Cta";
import Faq from "@/components/homes/home-1/Faq";
import Hero from "@/components/homes/home-1/Hero";
import Projects from "@/components/homes/home-1/Projects";
import Services from "@/components/homes/home-1/Services";
import Skills from "@/components/homes/home-1/Skills";
import Team from "@/components/homes/home-1/Team";
import Testimonials from "@/components/homes/home-1/Testimonials";
export const metadata = {
title: "Home 1 || Xbuild - Constriction nextjs Template",
description: "Xbuild - Constriction nextjs Template",
};
export default function Home1() {
return (
<>
<HeaderTop1 />
<Header1 />
<Hero />
<About />
<Services />
<Cta />
<Skills />
<Testimonials />
<Projects />
<Faq />
<Team />
<Contact />
<Blogs />
<div className="brand-section fix section-padding">
<Brands />
</div>
<Footer1 />
</>
);
}

View File

@ -0,0 +1,63 @@
import Brands from "@/components/common/Brands";
import Footer1 from "@/components/footers/Footer1";
import Header2Onepage from "@/components/headers/Header2Onepage";
import About from "@/components/homes/home-2/About";
import Achievements from "@/components/homes/home-2/Achievements";
import Blogs from "@/components/homes/home-2/Blogs";
import Cta from "@/components/homes/home-2/Cta";
import Hero from "@/components/homes/home-2/Hero";
import Pricing from "@/components/homes/home-2/Pricing";
import Projects from "@/components/homes/home-2/Projects";
import Team from "@/components/homes/home-2/Team";
import Testimonials from "@/components/homes/home-2/Testimonials";
import React from "react";
import Image from "next/image";
import Services from "@/components/homes/home-2/Services";
export const metadata = {
title: "Home 2 Onepage || Xbuild - Constriction nextjs Template",
description: "Xbuild - Constriction nextjs Template",
};
export default function page() {
return (
<>
<div className="home-2-onepage">
<Header2Onepage />
</div>
<Hero />
<About />
<Services />
<div className="brand-section fix section-padding">
<Brands />
</div>
<Projects />
<Team />
<section
className="pricing-section fix section-padding bg-cover"
style={{ backgroundImage: 'url("/assets/img/pricing-bg.jpg")' }}
>
<div className="pricing-arrow-shape float-bob-y">
<Image
src="/assets/img/pricing-arrow-shape.png"
width={329}
height={494}
alt="img"
/>
</div>
<div className="pricing-circle-shape float-bob-x">
<Image
src="/assets/img/pricing-circle-shape.png"
width={616}
height={538}
alt="img"
/>
</div>
<Pricing />
</section>
<Cta />
<Achievements />
<Testimonials />
<Blogs />
<Footer1 />
</>
);
}

View File

@ -0,0 +1,61 @@
import Brands from "@/components/common/Brands";
import Footer1 from "@/components/footers/Footer1";
import Header2 from "@/components/headers/Header2";
import About from "@/components/homes/home-2/About";
import Achievements from "@/components/homes/home-2/Achievements";
import Blogs from "@/components/homes/home-2/Blogs";
import Cta from "@/components/homes/home-2/Cta";
import Hero from "@/components/homes/home-2/Hero";
import Pricing from "@/components/homes/home-2/Pricing";
import Projects from "@/components/homes/home-2/Projects";
import Team from "@/components/homes/home-2/Team";
import Testimonials from "@/components/homes/home-2/Testimonials";
import React from "react";
import Image from "next/image";
import Services from "@/components/homes/home-2/Services";
export const metadata = {
title: "Home 2 || Xbuild - Constriction nextjs Template",
description: "Xbuild - Constriction nextjs Template",
};
export default function page() {
return (
<>
<Header2 />
<Hero />
<About />
<Services />
<div className="brand-section fix section-padding">
<Brands />
</div>
<Projects />
<Team />
<section
className="pricing-section fix section-padding bg-cover"
style={{ backgroundImage: 'url("/assets/img/pricing-bg.jpg")' }}
>
<div className="pricing-arrow-shape float-bob-y">
<Image
src="/assets/img/pricing-arrow-shape.png"
width={329}
height={494}
alt="img"
/>
</div>
<div className="pricing-circle-shape float-bob-x">
<Image
src="/assets/img/pricing-circle-shape.png"
width={616}
height={538}
alt="img"
/>
</div>
<Pricing />
</section>
<Cta />
<Achievements />
<Testimonials />
<Blogs />
<Footer1 />
</>
);
}

View File

@ -0,0 +1,108 @@
import Footer1 from "@/components/footers/Footer1";
import Header2 from "@/components/headers/Header2";
import Link from "next/link";
import React from "react";
import Image from "next/image";
import AnimatedText from "@/components/common/AnimatedText";
export const metadata = {
title: "404 || Xbuild - Constriction nextjs Template",
description: "Xbuild - Constriction nextjs Template",
};
export default function page() {
return (
<>
<Header2 />
<div
className="breadcrumb-wrapper bg-cover"
style={{ backgroundImage: 'url("/assets/img/breadcrumb-bg.jpg")' }}
>
<div className="shape-image float-bob-y">
<Image
src="/assets/img/vector.png"
width={84}
height={186}
alt="img"
/>
</div>
<div className="container">
<div className="breadcrumb-wrapper-items">
<div className="page-heading">
<div className="breadcrumb-sub-title">
<h1 className="wow fadeInUp" data-wow-delay=".3s">
Error Page
</h1>
</div>
<ul
className="breadcrumb-items wow fadeInUp"
data-wow-delay=".5s"
>
<li>
<Link href={`/`}> Home </Link>
</li>
<li>
<i className="fa-sharp fa-solid fa-slash-forward" />
</li>
<li>Error Page</li>
</ul>
</div>
<div className="breadcrumb-image">
<Image
src="/assets/img/breadcrumb-image.png"
width={540}
height={450}
alt="img"
className="float-bob-x"
/>
<div className="bar-shape">
<Image
src="/assets/img/breadcrumb-bar.png"
width={631}
height={604}
alt="img"
/>
</div>
</div>
</div>
</div>
</div>
<section className="Error-section section-padding fix">
<div className="container">
<div className="row justify-content-center">
<div className="col-lg-9">
<div className="error-items">
<div className="error-image wow fadeInUp" data-wow-delay=".3s">
<Image
src="/assets/img/404.png"
width={896}
height={539}
alt="img"
/>
</div>
<h2 className="splt-txt wow">
<b>
{" "}
<AnimatedText text="Oops!" />
</b>{" "}
<AnimatedText text="Page Not Found" />
</h2>
<p className="wow fadeInUp" data-wow-delay=".7s">
The page you are looking for does not exist
</p>
<Link
href={`/`}
className="theme-btn wow fadeInUp"
data-wow-delay=".8s"
>
Back to Home
<i className="fa-regular fa-arrow-right" />
</Link>
</div>
</div>
</div>
</div>
</section>
<Footer1 />
</>
);
}

View File

@ -0,0 +1,77 @@
import Brands from "@/components/common/Brands";
import Footer1 from "@/components/footers/Footer1";
import Header2 from "@/components/headers/Header2";
import Faq from "@/components/homes/home-1/Faq";
import Link from "next/link";
import React from "react";
import Image from "next/image";
export const metadata = {
title: "Faq || Xbuild - Constriction nextjs Template",
description: "Xbuild - Constriction nextjs Template",
};
export default function page() {
return (
<>
<Header2 />
<div
className="breadcrumb-wrapper bg-cover"
style={{ backgroundImage: 'url("/assets/img/breadcrumb-bg.jpg")' }}
>
<div className="shape-image float-bob-y">
<Image
src="/assets/img/vector.png"
width={84}
height={186}
alt="img"
/>
</div>
<div className="container">
<div className="breadcrumb-wrapper-items">
<div className="page-heading">
<div className="breadcrumb-sub-title">
<h1 className="wow fadeInUp" data-wow-delay=".3s">
Faqs
</h1>
</div>
<ul
className="breadcrumb-items wow fadeInUp"
data-wow-delay=".5s"
>
<li>
<Link href={`/`}> Home </Link>
</li>
<li>
<i className="fa-sharp fa-solid fa-slash-forward" />
</li>
<li>Faqs</li>
</ul>
</div>
<div className="breadcrumb-image">
<Image
src="/assets/img/breadcrumb-image.png"
width={540}
height={450}
alt="img"
className="float-bob-x"
/>
<div className="bar-shape">
<Image
src="/assets/img/breadcrumb-bar.png"
width={631}
height={604}
alt="img"
/>
</div>
</div>
</div>
</div>
</div>
<Faq />
<div className="brand-section fix section-padding">
<Brands />
</div>
<Footer1 />
</>
);
}

View File

@ -0,0 +1,79 @@
import Brands from "@/components/common/Brands";
import Footer1 from "@/components/footers/Footer1";
import Header2 from "@/components/headers/Header2";
import Pricing from "@/components/homes/home-2/Pricing";
import Link from "next/link";
import React from "react";
import Image from "next/image";
export const metadata = {
title: "Pricing || Xbuild - Constriction nextjs Template",
description: "Xbuild - Constriction nextjs Template",
};
export default function page() {
return (
<>
<Header2 />
<div
className="breadcrumb-wrapper bg-cover"
style={{ backgroundImage: 'url("/assets/img/breadcrumb-bg.jpg")' }}
>
<div className="shape-image float-bob-y">
<Image
src="/assets/img/vector.png"
width={84}
height={186}
alt="img"
/>
</div>
<div className="container">
<div className="breadcrumb-wrapper-items">
<div className="page-heading">
<div className="breadcrumb-sub-title">
<h1 className="wow fadeInUp" data-wow-delay=".3s">
Pricing
</h1>
</div>
<ul
className="breadcrumb-items wow fadeInUp"
data-wow-delay=".5s"
>
<li>
<Link href={`/`}> Home </Link>
</li>
<li>
<i className="fa-sharp fa-solid fa-slash-forward" />
</li>
<li>Pricing</li>
</ul>
</div>
<div className="breadcrumb-image">
<Image
src="/assets/img/breadcrumb-image.png"
width={540}
height={450}
alt="img"
className="float-bob-x"
/>
<div className="bar-shape">
<Image
src="/assets/img/breadcrumb-bar.png"
width={631}
height={604}
alt="img"
/>
</div>
</div>
</div>
</div>
</div>
<section className="pricing-section fix section-padding">
<Pricing shadow />
</section>
<div className="brand-section fix section-padding pt-0">
<Brands />
</div>
<Footer1 />
</>
);
}

View File

@ -0,0 +1,79 @@
import Brands from "@/components/common/Brands";
import Footer1 from "@/components/footers/Footer1";
import Header2 from "@/components/headers/Header2";
import TeamDetails from "@/components/team/TeamDetails";
import Link from "next/link";
import Image from "next/image";
import { allTeammembers } from "@/data/team";
export const metadata = {
title: "Team Details || Xbuild - Constriction nextjs Template",
description: "Xbuild - Constriction nextjs Template",
};
export default function page({ params }) {
const teamMember =
allTeammembers.filter((elm) => elm.id == params.id)[0] || allTeammembers[0];
return (
<>
<Header2 />
<div
className="breadcrumb-wrapper bg-cover"
style={{ backgroundImage: 'url("/assets/img/breadcrumb-bg.jpg")' }}
>
<div className="shape-image float-bob-y">
<Image
src="/assets/img/vector.png"
width={84}
height={186}
alt="img"
/>
</div>
<div className="container">
<div className="breadcrumb-wrapper-items">
<div className="page-heading">
<div className="breadcrumb-sub-title">
<h1 className="wow fadeInUp" data-wow-delay=".3s">
Team Details
</h1>
</div>
<ul
className="breadcrumb-items wow fadeInUp"
data-wow-delay=".5s"
>
<li>
<Link href={`/`}> Home </Link>
</li>
<li>
<i className="fa-sharp fa-solid fa-slash-forward" />
</li>
<li>Team Details</li>
</ul>
</div>
<div className="breadcrumb-image">
<Image
src="/assets/img/breadcrumb-image.png"
width={540}
height={450}
alt="img"
className="float-bob-x"
/>
<div className="bar-shape">
<Image
src="/assets/img/breadcrumb-bar.png"
width={631}
height={604}
alt="img"
/>
</div>
</div>
</div>
</div>
</div>
<TeamDetails teamMember={teamMember} />
<div className="brand-section fix section-padding pt-0">
<Brands />
</div>
<Footer1 />
</>
);
}

View File

@ -0,0 +1,76 @@
import Brands from "@/components/common/Brands";
import Footer1 from "@/components/footers/Footer1";
import Header2 from "@/components/headers/Header2";
import Team from "@/components/team/Team";
import Link from "next/link";
import Image from "next/image";
export const metadata = {
title: "Team || Xbuild - Constriction nextjs Template",
description: "Xbuild - Constriction nextjs Template",
};
export default function page() {
return (
<>
<Header2 />
<div
className="breadcrumb-wrapper bg-cover"
style={{ backgroundImage: 'url("/assets/img/breadcrumb-bg.jpg")' }}
>
<div className="shape-image float-bob-y">
<Image
src="/assets/img/vector.png"
width={84}
height={186}
alt="img"
/>
</div>
<div className="container">
<div className="breadcrumb-wrapper-items">
<div className="page-heading">
<div className="breadcrumb-sub-title">
<h1 className="wow fadeInUp" data-wow-delay=".3s">
Team
</h1>
</div>
<ul
className="breadcrumb-items wow fadeInUp"
data-wow-delay=".5s"
>
<li>
<Link href={`/`}> Home </Link>
</li>
<li>
<i className="fa-sharp fa-solid fa-slash-forward" />
</li>
<li>Team</li>
</ul>
</div>
<div className="breadcrumb-image">
<Image
src="/assets/img/breadcrumb-image.png"
width={540}
height={450}
alt="img"
className="float-bob-x"
/>
<div className="bar-shape">
<Image
src="/assets/img/breadcrumb-bar.png"
width={631}
height={604}
alt="img"
/>
</div>
</div>
</div>
</div>
</div>
<Team />
<div className="brand-section fix section-padding pt-0">
<Brands />
</div>
<Footer1 />
</>
);
}

View File

@ -0,0 +1,78 @@
import Brands from "@/components/common/Brands";
import Footer1 from "@/components/footers/Footer1";
import Header2 from "@/components/headers/Header2";
import ProjectDetails from "@/components/project/ProjectDetails";
import Link from "next/link";
import Image from "next/image";
import { allProjects } from "@/data/projects";
export const metadata = {
title: "Project Details || Xbuild - Constriction nextjs Template",
description: "Xbuild - Constriction nextjs Template",
};
export default function page({ params }) {
const projectItem =
allProjects.filter((elm) => elm.id == params.id)[0] || allProjects[0];
return (
<>
<Header2 />
<div
className="breadcrumb-wrapper bg-cover"
style={{ backgroundImage: 'url("/assets/img/breadcrumb-bg.jpg")' }}
>
<div className="shape-image float-bob-y">
<Image
src="/assets/img/vector.png"
width={84}
height={186}
alt="img"
/>
</div>
<div className="container">
<div className="breadcrumb-wrapper-items">
<div className="page-heading">
<div className="breadcrumb-sub-title">
<h1 className="wow fadeInUp" data-wow-delay=".3s">
{projectItem.title}
</h1>
</div>
<ul
className="breadcrumb-items wow fadeInUp"
data-wow-delay=".5s"
>
<li>
<Link href={`/`}> Home </Link>
</li>
<li>
<i className="fa-sharp fa-solid fa-slash-forward" />
</li>
<li>Project Details</li>
</ul>
</div>
<div className="breadcrumb-image">
<Image
src="/assets/img/breadcrumb-image.png"
width={540}
height={450}
alt="img"
className="float-bob-x"
/>
<div className="bar-shape">
<Image
src="/assets/img/breadcrumb-bar.png"
width={631}
height={604}
alt="img"
/>
</div>
</div>
</div>
</div>
</div>
<ProjectDetails projectItem={projectItem} />
<div className="brand-section fix section-padding pt-0">
<Brands />
</div>
<Footer1 />
</>
);
}

View File

@ -0,0 +1,76 @@
import Brands from "@/components/common/Brands";
import Footer1 from "@/components/footers/Footer1";
import Header2 from "@/components/headers/Header2";
import Projects from "@/components/project/Projects";
import Image from "next/image";
import Link from "next/link";
export const metadata = {
title: "Project || Xbuild - Constriction nextjs Template",
description: "Xbuild - Constriction nextjs Template",
};
export default function page() {
return (
<>
<Header2 />
<div
className="breadcrumb-wrapper bg-cover"
style={{ backgroundImage: 'url("/assets/img/breadcrumb-bg.jpg")' }}
>
<div className="shape-image float-bob-y">
<Image
src="/assets/img/vector.png"
width={84}
height={186}
alt="img"
/>
</div>
<div className="container">
<div className="breadcrumb-wrapper-items">
<div className="page-heading">
<div className="breadcrumb-sub-title">
<h1 className="wow fadeInUp" data-wow-delay=".3s">
Project
</h1>
</div>
<ul
className="breadcrumb-items wow fadeInUp"
data-wow-delay=".5s"
>
<li>
<Link href={`/`}> Home </Link>
</li>
<li>
<i className="fa-sharp fa-solid fa-slash-forward" />
</li>
<li>Project</li>
</ul>
</div>
<div className="breadcrumb-image">
<Image
src="/assets/img/breadcrumb-image.png"
width={540}
height={450}
alt="img"
className="float-bob-x"
/>
<div className="bar-shape">
<Image
src="/assets/img/breadcrumb-bar.png"
width={631}
height={604}
alt="img"
/>
</div>
</div>
</div>
</div>
</div>
<Projects />
<div className="brand-section fix section-padding pt-0">
<Brands />
</div>
<Footer1 />
</>
);
}

View File

@ -0,0 +1,78 @@
import Brands from "@/components/common/Brands";
import Footer1 from "@/components/footers/Footer1";
import Header2 from "@/components/headers/Header2";
import ServiceDetails from "@/components/service/ServiceDetails";
import { allServices } from "@/data/services";
import Image from "next/image";
import Link from "next/link";
export const metadata = {
title: "Service Details || Xbuild - Constriction nextjs Template",
description: "Xbuild - Constriction nextjs Template",
};
export default function page({ params }) {
const serviceItem =
allServices.filter((elm) => elm.id == params.id)[0] || allServices[0];
return (
<>
<Header2 />
<div
className="breadcrumb-wrapper bg-cover"
style={{ backgroundImage: 'url("/assets/img/breadcrumb-bg.jpg")' }}
>
<div className="shape-image float-bob-y">
<Image
src="/assets/img/vector.png"
width={84}
height={186}
alt="img"
/>
</div>
<div className="container">
<div className="breadcrumb-wrapper-items">
<div className="page-heading">
<div className="breadcrumb-sub-title">
<h1 className="wow fadeInUp" data-wow-delay=".3s">
{serviceItem.title}
</h1>
</div>
<ul
className="breadcrumb-items wow fadeInUp"
data-wow-delay=".5s"
>
<li>
<Link href={`/`}> Home </Link>
</li>
<li>
<i className="fa-sharp fa-solid fa-slash-forward" />
</li>
<li>Service Details</li>
</ul>
</div>
<div className="breadcrumb-image">
<Image
src="/assets/img/breadcrumb-image.png"
width={540}
height={450}
alt="img"
className="float-bob-x"
/>
<div className="bar-shape">
<Image
src="/assets/img/breadcrumb-bar.png"
width={631}
height={604}
alt="img"
/>
</div>
</div>
</div>
</div>
</div>
<ServiceDetails serviceItem={serviceItem} />
<div className="brand-section fix section-padding pt-0">
<Brands />
</div>
<Footer1 />
</>
);
}

View File

@ -0,0 +1,76 @@
import Brands from "@/components/common/Brands";
import Footer1 from "@/components/footers/Footer1";
import Header2 from "@/components/headers/Header2";
import Services from "@/components/service/Services";
import Image from "next/image";
import Link from "next/link";
export const metadata = {
title: "Service || Xbuild - Constriction nextjs Template",
description: "Xbuild - Constriction nextjs Template",
};
export default function page() {
return (
<>
<Header2 />
<div
className="breadcrumb-wrapper bg-cover"
style={{ backgroundImage: 'url("/assets/img/breadcrumb-bg.jpg")' }}
>
<div className="shape-image float-bob-y">
<Image
src="/assets/img/vector.png"
width={84}
height={186}
alt="img"
/>
</div>
<div className="container">
<div className="breadcrumb-wrapper-items">
<div className="page-heading">
<div className="breadcrumb-sub-title">
<h1 className="wow fadeInUp" data-wow-delay=".3s">
Services
</h1>
</div>
<ul
className="breadcrumb-items wow fadeInUp"
data-wow-delay=".5s"
>
<li>
<Link href={`/`}> Home </Link>
</li>
<li>
<i className="fa-sharp fa-solid fa-slash-forward" />
</li>
<li>Services</li>
</ul>
</div>
<div className="breadcrumb-image">
<Image
src="/assets/img/breadcrumb-image.png"
width={540}
height={450}
alt="img"
className="float-bob-x"
/>
<div className="bar-shape">
<Image
src="/assets/img/breadcrumb-bar.png"
width={631}
height={604}
alt="img"
/>
</div>
</div>
</div>
</div>
</div>
<Services />
<div className="brand-section fix section-padding pt-0">
<Brands />
</div>
<Footer1 />
</>
);
}

BIN
app/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

63
app/layout.jsx Normal file
View File

@ -0,0 +1,63 @@
"use client";
import { useEffect } from "react";
import "../public/assets/scss/styles.scss";
import BackToTop from "@/components/common/BackToTop";
import Mouse from "@/components/common/Mouse";
import { usePathname } from "next/navigation";
import SearchWrap from "@/components/common/SearchWrap";
import { ToastContainer } from "react-toastify";
export default function RootLayout({ children }) {
const path = usePathname();
useEffect(() => {
window.addEventListener("scroll", function () {
const header = document.getElementById("header-sticky");
if (window.scrollY > 250) {
header.classList.add("sticky");
} else {
header.classList.remove("sticky");
}
});
if (typeof window !== "undefined") {
// Import the script only on the client side
import("bootstrap/dist/js/bootstrap.esm").then(() => {
// Module is imported, you can access any exported functionality if
});
}
}, []);
useEffect(() => {
const { WOW } = require("wowjs");
const wow = new WOW({
animateClass: "animated",
offset: 100,
mobile: false,
live: false,
});
wow.init();
}, [path]);
return (
<html lang="en">
<body>
<ToastContainer
position="top-right"
autoClose={2000}
hideProgressBar={false}
newestOnTop={false}
closeOnClick
rtl={false}
pauseOnFocusLoss
draggable
pauseOnHover
/>
{children}
<SearchWrap />
<BackToTop />
<Mouse />
</body>
</html>
);
}

108
app/not-found.jsx Normal file
View File

@ -0,0 +1,108 @@
import Footer1 from "@/components/footers/Footer1";
import Header2 from "@/components/headers/Header2";
import Link from "next/link";
import React from "react";
import Image from "next/image";
import AnimatedText from "@/components/common/AnimatedText";
export const metadata = {
title: "Not Found || Xbuild - Constriction nextjs Template",
description: "Xbuild - Constriction nextjs Template",
};
export default function page() {
return (
<>
<Header2 />
<div
className="breadcrumb-wrapper bg-cover"
style={{ backgroundImage: 'url("/assets/img/breadcrumb-bg.jpg")' }}
>
<div className="shape-image float-bob-y">
<Image
src="/assets/img/vector.png"
width={84}
height={186}
alt="img"
/>
</div>
<div className="container">
<div className="breadcrumb-wrapper-items">
<div className="page-heading">
<div className="breadcrumb-sub-title">
<h1 className="wow fadeInUp" data-wow-delay=".3s">
Error Page
</h1>
</div>
<ul
className="breadcrumb-items wow fadeInUp"
data-wow-delay=".5s"
>
<li>
<Link href={`/`}> Home </Link>
</li>
<li>
<i className="fa-sharp fa-solid fa-slash-forward" />
</li>
<li>Error Page</li>
</ul>
</div>
<div className="breadcrumb-image">
<Image
src="/assets/img/breadcrumb-image.png"
width={540}
height={450}
alt="img"
className="float-bob-x"
/>
<div className="bar-shape">
<Image
src="/assets/img/breadcrumb-bar.png"
width={631}
height={604}
alt="img"
/>
</div>
</div>
</div>
</div>
</div>
<section className="Error-section section-padding fix">
<div className="container">
<div className="row justify-content-center">
<div className="col-lg-9">
<div className="error-items">
<div className="error-image wow fadeInUp" data-wow-delay=".3s">
<Image
src="/assets/img/404.png"
width={896}
height={539}
alt="img"
/>
</div>
<h2 className="splt-txt wow">
<b>
{" "}
<AnimatedText text="Oops!" />
</b>{" "}
<AnimatedText text="Page Not Found" />
</h2>
<p className="wow fadeInUp" data-wow-delay=".7s">
The page you are looking for does not exist
</p>
<Link
href={`/`}
className="theme-btn wow fadeInUp"
data-wow-delay=".8s"
>
Back to Home
<i className="fa-regular fa-arrow-right" />
</Link>
</div>
</div>
</div>
</div>
</section>
<Footer1 />
</>
);
}

12
app/page.jsx Normal file
View File

@ -0,0 +1,12 @@
import Home1 from "./(homes)/home-1/page";
export const metadata = {
title: "Home 1 || Xbuild - Constriction nextjs Template",
description: "Xbuild - Constriction nextjs Template",
};
export default function Home() {
return (
<>
<Home1 />
</>
);
}

View File

@ -0,0 +1,109 @@
import { achievements } from "@/data/facts";
import Link from "next/link";
import Image from "next/image";
import AnimatedText from "../common/AnimatedText";
export default function Achievments() {
return (
<section className="achivements-section fix">
<div className="container">
<div className="achivements-wrapper-2 section-padding">
<div className="bg-shape">
<Image
src="/assets/img/achivements-shape.png"
width={674}
height={470}
alt="img"
/>
</div>
<div className="row g-4">
<div className="col-lg-6">
<div className="achivements-content">
<div className="section-title">
<h6 className="wow fadeInUp">
<i className="fa-regular fa-arrow-left-long"></i>ACHIVEMENTS
<i className="fa-regular fa-arrow-right-long"></i>
</h6>
<h2 className="splt-txt wow">
<AnimatedText text="Industrial Power," /> <br />
<AnimatedText text="Worldwide Influence" />
</h2>
</div>
<Link
href={`/contact`}
className="theme-btn bg-white mt-3 mt-md-0 wow fadeInUp"
data-wow-delay=".4s"
>
MAKE AN APPOINTMENT
<i className="fa-regular fa-arrow-right"></i>
</Link>
</div>
</div>
<div className="col-lg-6">
<div className="achivements-right-items">
<div className="border-shape">
<Image
src="/assets/img/border.png"
width={480}
height={201}
alt="img"
/>
</div>
<div className="achivements-item">
{achievements.slice(0, 2).map((elm, i) => (
<div
key={i}
className="counter-items wow fadeInUp"
data-wow-delay={elm.delay}
>
<div className="icon">
<Image
src={elm.icon}
width={36}
height={36}
alt="img"
/>
</div>
<div className="content">
<h2>
<span className="count">{elm.count}</span>k+
</h2>
<p>{elm.description}</p>
</div>
</div>
))}
</div>
<div className="achivements-item">
{achievements.slice(2, 4).map((elm, i) => (
<div
key={i}
className="counter-items style-2 wow fadeInUp"
data-wow-delay={elm.delay}
>
<div className="icon">
<Image
src={elm.icon}
width={36}
height={36}
alt="img"
/>
</div>
<div className="content">
<h2>
<span className="count">{elm.count}</span>k+
</h2>
<p>{elm.description}</p>
</div>
</div>
))}
</div>
</div>
</div>
</div>
</div>
</div>
<div className="man-image float-bob-x">
<Image src="/assets/img/man.png" width={343} height={413} alt="img" />
</div>
</section>
);
}

78
components/about/Team.jsx Normal file
View File

@ -0,0 +1,78 @@
import { teamMembers2 } from "@/data/team";
import Link from "next/link";
import Image from "next/image";
import AnimatedText from "../common/AnimatedText";
export default function Team() {
return (
<section className="team-section section-padding">
<div className="shape-1 float-bob-y">
<Image
src="/assets/img/team/shape-1.png"
width={161}
height={250}
alt="img"
/>
</div>
<div className="shape-2">
<Image
src="/assets/img/team/shape-2.png"
width={352}
height={428}
alt="img"
/>
</div>
<div className="container">
<div className="section-title text-center">
<h6 className="wow fadeInUp">
<i className="fa-regular fa-arrow-left-long" />
our team members
<i className="fa-regular fa-arrow-right-long" />
</h6>
<h2 className="splt-txt wow">
<AnimatedText text="Our Professional Team" />
</h2>
</div>
<div className="row">
{teamMembers2.map((member) => (
<div
key={member.id}
className={`col-xl-3 col-lg-4 col-md-6 col-sm-6 wow fadeInUp${
member.active ? " active" : ""
}`}
data-wow-delay={member.delay}
>
<div className="team-box-items">
<div className="social-icon d-grid align-items-center">
{member.socials.map((link, index) => (
<a key={index} href={link.href}>
<i className={link.iconClass} />
</a>
))}
</div>
<div className="team-image">
<Image
src={member.image}
width={240}
height={288}
alt="Team"
/>
</div>
<div className="team-content">
<h5>
<Link href={`/team-details/${member.id}`}>
{member.name}
</Link>
</h5>
<p>{member.role}</p>
<a href="team-details" className="icon">
<i className="fa-solid fa-link" />
</a>
</div>
</div>
</div>
))}
</div>
</div>
</section>
);
}

View File

@ -0,0 +1,245 @@
"use client";
import Image from "next/image";
import Comments from "./Comments";
import CommentForm from "./CommentForm";
import { links, listItems, recentItems, socialLinks } from "@/data/blogs";
import Link from "next/link";
export default function BlogDetails({ newsItem }) {
return (
<section className="news-standard fix section-padding">
<div className="container">
<div className="row g-4">
<div className="col-12 col-lg-8">
<div className="blog-post-details">
<div className="single-blog-post">
<div
className="post-featured-thumb bg-cover"
style={{
backgroundImage: 'url("/assets/img/news/post-4.jpg")',
}}
/>
<div className="post-content">
<ul className="post-list d-flex align-items-center">
<li>
<i className="fa-regular fa-user" />
By Admin
</li>
<li>
<i className="fa-solid fa-calendar-days" />
18 Dec, 2024
</li>
<li>
<i className="fa-solid fa-tag" />
Technology
</li>
</ul>
<h3>{newsItem.title}</h3>
<p className="mb-3">
Consectetur adipisicing elit, sed do eiusmod tempor
incididunt ut labore et dolore of magna aliqua. Ut enim ad
minim veniam, made of owl the quis nostrud exercitation
ullamco laboris nisi ut aliquip ex ea dolor commodo
consequat. Duis aute irure and dolor in reprehenderit.
</p>
<p className="mb-3">
The is ipsum dolor sit amet consectetur adipiscing elit.
Fusce eleifend porta arcu In hac habitasse the is platea
augue thelorem turpoi dictumst. In lacus libero faucibus at
malesuada sagittis placerat eros sed istincidunt augue ac
ante rutrum sed the is sodales augue consequat.
</p>
<p>
Nulla facilisi. Vestibulum tristique sem in eros eleifend
imperdiet. Donec quis convallis neque. In id lacus pulvinar
lacus, eget vulputate lectus. Ut viverra bibendum lorem, at
tempus nibh mattis in. Sed a massa eget lacus consequat
auctor.
</p>
<div className="hilight-text mt-4 mb-4">
<p>
Pellentesque sollicitudin congue dolor non aliquam. Morbi
volutpat, nisi vel ultricies urnacondimentum, sapien neque
lobortis tortor, quis efficitur mi ipsum eu metus.
Praesent eleifend orci sit amet est vehicula.
</p>
<svg
xmlns="http://www.w3.org/2000/svg"
width={36}
height={36}
viewBox="0 0 36 36"
fill="none"
>
<path
d="M7.71428 20.0711H0.5V5.64258H14.9286V20.4531L9.97665 30.3568H3.38041L8.16149 20.7947L8.5233 20.0711H7.71428Z"
stroke="#F55B1F"
/>
<path
d="M28.2846 20.0711H21.0703V5.64258H35.4989V20.4531L30.547 30.3568H23.9507L28.7318 20.7947L29.0936 20.0711H28.2846Z"
stroke="#F55B1F"
/>
</svg>
</div>
<p className="mt-4 mb-5">
Lorem ipsum dolor sit amet consectetur adipiscing elit Ut et
massa mi. Aliquam in hendrerit urna. Pellentesque sit amet
sapien fringilla, mattis ligula consectetur, ultrices
mauris. Maecenas vitae mattis tellus. Nullam quis imperdiet
augue. Vestibulum auctor ornare leo, non suscipit magna
interdum eu. Curabitur pellentesque nibh nibh, at maximus
ante fermentum sit amet. Pellentesque commodo lacus at
sodales sodales. Quisque sagittis orci ut diam condimentum,
vel euismod erat placerat. In iaculis arcu eros.
</p>
<div className="row g-4">
<div className="col-lg-6">
<div className="details-image">
<Image
src="/assets/img/news/post-5.jpg"
width={370}
height={269}
alt="img"
/>
</div>
</div>
<div className="col-lg-6">
<div className="details-image">
<Image
src="/assets/img/news/post-6.jpg"
width={370}
height={269}
alt="img"
/>
</div>
</div>
</div>
<p className="pt-5">
Consectetur adipisicing elit, sed do eiusmod tempor
incididunt ut labore et dolore of magna aliqua. Ut enim ad
minim veniam, made of owl the quis nostrud exercitation
ullamco laboris nisi ut aliquip ex ea dolor commodo
consequat. Duis aute irure and dolor in
reprehenderit.Consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore of magna aliqua. Ut
enim ad minim veniam, made of owl the quis nostrud
exercitation ullamco laboris nisi ut aliquip ex ea dolor
commodo consequat. Duis aute irure and dolor in
reprehenderit.
</p>
</div>
</div>
<div className="row tag-share-wrap mt-4 mb-5">
<div className="col-lg-8 col-12">
<div className="tagcloud">
<span>Tags:</span>
<a href="#">Travel</a>
<a href="#">Services</a>
<a href="#">Agency</a>
</div>
</div>
<div className="col-lg-4 col-12 mt-3 mt-lg-0 text-lg-end">
<div className="social-share">
<span className="me-3">Share:</span>
{socialLinks.map((link, index) => (
<a href={link.href} key={index}>
<i className={link.iconClass} />
</a>
))}
</div>
</div>
</div>
<div className="comments-area">
<div className="comments-heading">
<h3>02 Comments</h3>
</div>
<Comments />
</div>
<div className="comment-form-wrap pt-5">
<h3>Leave a comments</h3>
<CommentForm />
</div>
</div>
</div>
<div className="col-12 col-lg-4">
<div className="main-sidebar">
<div className="single-sidebar-widget">
<div className="wid-title">
<h3>Search</h3>
</div>
<div className="search-widget">
<form onSubmit={(e) => e.preventDefault()}>
<input type="text" placeholder="Search here" />
<button type="submit">
<i className="fa-solid fa-magnifying-glass" />
</button>
</form>
</div>
</div>
<div className="single-sidebar-widget">
<div className="wid-title">
<h3>Categories</h3>
</div>
<div className="news-widget-categories">
<ul>
{listItems.map((item, index) => (
<li key={index} className={item.isActive ? "active" : ""}>
<a href={item.link}>{item.text}</a>{" "}
<span>{item.count}</span>
</li>
))}
</ul>
</div>
</div>
<div className="single-sidebar-widget">
<div className="wid-title">
<h3>Recent Post</h3>
</div>
<div className="recent-post-area">
{recentItems.map((item, index) => (
<div className="recent-items" key={index}>
<div className="recent-thumb">
<Image
src={item.imageSrc}
width={70}
height={70}
alt="img"
/>
</div>
<div className="recent-content">
<ul>
<li>
<i className="fa-solid fa-calendar-days" />
{item.date}
</li>
</ul>
<h6>
<Link
href={`/news-details/${item.id}`}
dangerouslySetInnerHTML={{ __html: item.title }}
/>
</h6>
</div>
</div>
))}
</div>
</div>
<div className="single-sidebar-widget">
<div className="wid-title">
<h3>Popular Tag</h3>
</div>
<div className="news-widget-categories">
<div className="tagcloud">
{links.map((link, index) => (
<Link href={link.href} key={index}>
{link.text}
</Link>
))}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
);
}

View File

@ -0,0 +1,75 @@
import React from "react";
import Pagination from "../common/Pagination";
import { newsItems3 } from "@/data/blogs";
import Link from "next/link";
import Image from "next/image";
export default function Blogs() {
return (
<section className="news-section fix section-padding">
<div className="container">
<div className="row g-4">
{newsItems3.map((news) => (
<div
key={news.id}
className={`col-xl-4 col-lg-6 col-md-6 wow fadeInUp ${
news.active ? "active" : ""
}`}
data-wow-delay={news.delay}
>
<div className="news-box-items mt-0">
<div className="news-image">
{news.images.map((image, index) => (
<Image
key={index}
src={image}
width={370}
height={198}
alt="img"
/>
))}
</div>
<div className="news-content">
<ul className="post-list">
<li>{news.category}</li>
<li>{news.date}</li>
</ul>
<h4>
<Link href={`/news-details/${news.id}`}>{news.title}</Link>
</h4>
<div className="author-items">
<div className="author-info">
<Image
src={news.author.image}
width={40}
height={40}
alt="img"
/>
<div className="content">
<h6>Admin</h6>
<p>{news.author.name}</p>
</div>
</div>
<Link
href={`/news-details/${news.id}`}
className="link-btn"
>
Read More <i className="fa-solid fa-arrow-right" />
</Link>
</div>
</div>
</div>
</div>
))}
</div>
<div
className="page-nav-wrap pt-5 text-center wow fadeInUp"
data-wow-delay=".3s"
>
<ul>
<Pagination />
</ul>
</div>
</div>
</section>
);
}

231
components/blogs/Blogs2.jsx Normal file
View File

@ -0,0 +1,231 @@
"use client";
import { Swiper, SwiperSlide } from "swiper/react";
import Pagination from "../common/Pagination";
import { Autoplay, Navigation } from "swiper/modules";
import Link from "next/link";
import Image from "next/image";
import ModalVideo from "react-modal-video";
import { useState } from "react";
import { links, listItems, newsItems4, recentItems } from "@/data/blogs";
export default function Blogs2() {
const [isOpen, setOpen] = useState(false);
const swiperOptions = {
// Corrected variable name from "newsPostPlider"
spaceBetween: 30,
speed: 2000,
loop: true,
autoplay: {
delay: 2000,
disableOnInteraction: false,
},
modules: [Autoplay, Navigation],
navigation: {
nextEl: ".array-prev",
prevEl: ".array-next",
},
};
return (
<>
<section className="news-standard fix section-padding">
<div className="container">
<div className="row g-4">
<div className="col-12 col-lg-8">
<div className="news-standard-wrapper">
{newsItems4.map((item, index) => (
<div className="news-standard-items" key={index}>
{item.type === "standard" && (
<div className="news-thumb">
<Image
src={item.imageSrc}
width={740}
height={396}
alt="img"
/>
</div>
)}
{item.type === "slider" && (
<>
<div className="array-button">
<button className="array-prev">
<i className="fa-regular fa-arrow-left-long" />
</button>
<button className="array-next">
<i className="fa-regular fa-arrow-right-long" />
</button>
</div>
<Swiper className="swiper news-post-slider">
{item.swiperSlides?.map((image, slideIndex) => (
<SwiperSlide
className="swiper-slide"
key={slideIndex}
>
<div className="news-thumb">
<Image
width={740}
height={396}
src={image}
alt={`Slide ${slideIndex + 1}`}
/>
</div>
</SwiperSlide>
))}
</Swiper>
</>
)}
{item.type === "video" && (
<div className="news-thumb">
<Image
src={item.imageSrc}
width={740}
height={396}
alt="img"
/>
<div className="video-box">
<a
onClick={() => setOpen(true)}
className="video-btn video-popup"
>
<i className="fas fa-play" />
</a>
</div>
</div>
)}
<div className="news-content">
<ul className="date-list">
<li>
<i className="fa-regular fa-user" />
By Admin
</li>
<li>
<i className="fa-regular fa-calendar-days" />
{item.date}
</li>
<li>
<i className="fa-regular fa-tag" />
{item.category}
</li>
</ul>
<h3>
<Link href={`/news-details/${item.id}`}>
{item.title}
</Link>
</h3>
<p>{item.content}</p>
<div className="news-button">
<Link
href={`/news-details/${item.id}`}
className="theme-btn mt-4"
>
read more <i className="fa-regular fa-arrow-right" />
</Link>
</div>
</div>
</div>
))}
<div
className="page-nav-wrap wow fadeInUp"
data-wow-delay=".3s"
>
<ul>
<Pagination />
</ul>
</div>
</div>
</div>
<div className="col-12 col-lg-4">
<div className="main-sidebar">
<div className="single-sidebar-widget">
<div className="wid-title">
<h3>Search</h3>
</div>
<div className="search-widget">
<form onSubmit={(e) => e.preventDefault()}>
<input type="text" placeholder="Search here" />
<button type="submit">
<i className="fa-solid fa-magnifying-glass" />
</button>
</form>
</div>
</div>
<div className="single-sidebar-widget">
<div className="wid-title">
<h3>Categories</h3>
</div>
<div className="news-widget-categories">
<ul>
{listItems.map((item, index) => (
<li
key={index}
className={item.isActive ? "active" : ""}
>
<a href={item.link}>{item.text}</a>{" "}
<span>{item.count}</span>
</li>
))}
</ul>
</div>
</div>
<div className="single-sidebar-widget">
<div className="wid-title">
<h3>Recent Post</h3>
</div>
<div className="recent-post-area">
{recentItems.map((item, index) => (
<div className="recent-items" key={index}>
<div className="recent-thumb">
<Image
src={item.imageSrc}
width={70}
height={70}
alt="img"
/>
</div>
<div className="recent-content">
<ul>
<li>
<i className="fa-solid fa-calendar-days" />
{item.date}
</li>
</ul>
<h6>
<Link
href="/news-details"
dangerouslySetInnerHTML={{ __html: item.title }}
/>
</h6>
</div>
</div>
))}
</div>
</div>
<div className="single-sidebar-widget">
<div className="wid-title">
<h3>Popular Tag</h3>
</div>
<div className="news-widget-categories">
<div className="tagcloud">
{links.map((link, index) => (
<Link href={link.href} key={index}>
{link.text}
</Link>
))}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>{" "}
<ModalVideo
channel="youtube"
youtube={{ mute: 0, autoplay: 0 }}
isOpen={isOpen}
videoId="Cn4G2lZ_g2I"
onClose={() => setOpen(false)}
/>{" "}
</>
);
}

View File

@ -0,0 +1,44 @@
"use client";
export default function CommentForm() {
return (
<form onSubmit={(e) => e.preventDefault()}>
<div className="row g-4">
<div className="col-lg-6">
<div className="form-clt">
<span>Your Name*</span>
<input type="text" name="name" id="name" placeholder="Your Name" />
</div>
</div>
<div className="col-lg-6">
<div className="form-clt">
<span>Your Email*</span>
<input
type="text"
name="email"
id="email2"
placeholder="Your Email"
/>
</div>
</div>
<div className="col-lg-12">
<div className="form-clt">
<span>Message*</span>
<textarea
name="message"
id="message"
placeholder="Write Message"
defaultValue={""}
/>
</div>
</div>
<div className="col-lg-6">
<button type="submit" className="theme-btn">
post comment
<i className="fa-solid fa-arrow-right-long" />
</button>
</div>
</div>
</form>
);
}

View File

@ -0,0 +1,79 @@
import Image from "next/image";
import React from "react";
export default function Comments() {
return (
<>
<div className="blog-single-comment d-flex gap-4 pt-4 pb-5">
<div className="image">
<Image
src="/assets/img/news/comment-1.png"
width={96}
height={96}
alt="image"
/>
</div>
<div className="content">
<div className="head d-flex flex-wrap gap-2 align-items-center justify-content-between">
<div className="con">
<h5>
<a href="news-details.html">Albert Flores</a>
</h5>
<span>February 10, 2024 at 2:37 pm</span>
</div>
<div className="star">
<i className="fa-solid fa-star" />
<i className="fa-solid fa-star" />
<i className="fa-solid fa-star" />
<i className="fa-solid fa-star" />
<i className="fa-solid fa-star" />
</div>
</div>
<p className="mt-30 mb-4">
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
</p>
<a href="news-details.html" className="reply">
Reply
</a>
</div>
</div>
<div className="blog-single-comment d-flex gap-4 pt-5 pb-5">
<div className="image">
<Image
src="/assets/img/news/comment-2.png"
width={96}
height={96}
alt="image"
/>
</div>
<div className="content">
<div className="head d-flex flex-wrap gap-2 align-items-center justify-content-between">
<div className="con">
<h5>
<a href="news-details.html">Alex Flores</a>
</h5>
<span>February 10, 2024 at 2:37 pm</span>
</div>
<div className="star">
<i className="fa-solid fa-star" />
<i className="fa-solid fa-star" />
<i className="fa-solid fa-star" />
<i className="fa-solid fa-star" />
<i className="fa-solid fa-star" />
</div>
</div>
<p className="mt-30 mb-4">
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
</p>
<a href="news-details.html" className="reply color-2">
Reply
</a>
</div>
</div>
</>
);
}

View File

@ -0,0 +1,44 @@
import React from "react";
export default function AnimatedText({
text = "Grow your business with a new website.",
}) {
return (
<>
<span
className="wow charsAnimIn words chars splitting"
aria-hidden="true"
style={{
"--word-total": text.split(" ").length,
"--char-total": text.split("").length,
visibility: "visible",
}}
>
{text
.trim()
.split(" ")
.map((elm, i) => (
<React.Fragment key={i}>
<span
className="word"
data-word="Grow"
style={{ "--word-index": i }}
>
{elm.split("").map((elm2, i2) => (
<span
key={i2}
className="char"
data-char="G"
style={{ "--char-index": i + i2 }}
>
{elm2}
</span>
))}
</span>
<span className="whitespace"> </span>
</React.Fragment>
))}
</span>
</>
);
}

View File

@ -0,0 +1,30 @@
"use client";
import { useEffect } from "react";
export default function BackToTop() {
useEffect(() => {
window.addEventListener("scroll", function () {
const backTopButton = document.getElementById("back-top");
if (window.scrollY > 20) {
backTopButton.classList.add("show");
} else {
backTopButton.classList.remove("show");
}
});
}, []);
const backToTop = function () {
window.scrollTo({
top: 0,
behavior: "smooth", // This ensures a smooth scrolling effect
});
};
return (
<button id="back-top" onClick={backToTop} className="back-to-top show">
<i className="fa-regular fa-arrow-up"></i>
</button>
);
}

View File

@ -0,0 +1,53 @@
"use client";
import { brandLogos } from "@/data/brands";
import { Autoplay } from "swiper/modules";
import { Swiper, SwiperSlide } from "swiper/react";
import Image from "next/image";
export default function Brands() {
const swiperOptions = {
spaceBetween: 30,
speed: 2500,
loop: true,
modules: [Autoplay],
autoplay: {
delay: 2500,
disableOnInteraction: false,
},
breakpoints: {
1199: {
slidesPerView: 5,
},
991: {
slidesPerView: 4,
},
767: {
slidesPerView: 3,
},
575: {
slidesPerView: 2,
},
0: {
slidesPerView: 2,
},
},
};
return (
<div className="container">
<Swiper {...swiperOptions} className="swiper brand-slider">
{brandLogos.map((src, index) => (
<SwiperSlide key={index} className="swiper-slide">
<div className="brand-image center">
<Image
width={92}
height={120}
style={{ objectFit: "contain" }}
src={src}
alt={`Brand logo ${index + 1}`}
/>
</div>
</SwiperSlide>
))}
</Swiper>
</div>
);
}

View File

@ -0,0 +1,59 @@
"use client";
import { useEffect } from "react";
export default function Mouse() {
useEffect(() => {
function mouseCursor() {
const cursorInner = document.querySelector(".cursor-inner");
const cursorOuter = document.querySelector(".cursor-outer");
let clientX = 0;
let clientY = 0;
let isHovering = false;
window.addEventListener("mousemove", function (event) {
clientX = event.clientX;
clientY = event.clientY;
if (!isHovering) {
cursorOuter.style.transform = `translate(${clientX}px, ${clientY}px)`;
}
cursorInner.style.transform = `translate(${clientX}px, ${clientY}px)`;
});
document.body.addEventListener(
"mouseenter",
function (event) {
if (event.target.matches("a, .cursor-pointer")) {
cursorInner.classList.add("cursor-hover");
cursorOuter.classList.add("cursor-hover");
}
},
true
);
document.body.addEventListener(
"mouseleave",
function (event) {
if (event.target.matches("a, .cursor-pointer")) {
cursorInner.classList.remove("cursor-hover");
cursorOuter.classList.remove("cursor-hover");
}
},
true
);
cursorInner.style.visibility = "visible";
cursorOuter.style.visibility = "visible";
}
// Initialize the custom cursor functionality
mouseCursor();
}, []);
return (
<>
<div className="mouse-cursor cursor-outer"></div>
<div className="mouse-cursor cursor-inner"></div>
</>
);
}

View File

@ -0,0 +1,51 @@
"use client";
import React, { useState } from "react";
export default function Pagination() {
const [currentPage, setCurrentPage] = useState(1);
const handlePageChange = (page) => {
setCurrentPage(page);
};
const handlePrevious = () => {
setCurrentPage((prev) => (prev > 1 ? prev - 1 : 1));
};
const handleNext = () => {
setCurrentPage((prev) => (prev < 3 ? prev + 1 : 3)); // Adjust "3" to your maximum page number
};
return (
<ul className="pagination">
<li>
<a
className={`page-numbers icon ${currentPage === 1 ? "disabled" : ""}`}
onClick={handlePrevious}
>
<i className="fa-solid fa-arrow-left"></i>
</a>
</li>
{[1, 2, 3].map((page) => (
<li key={page}>
<a
className={`page-numbers number ${
currentPage === page ? "active" : ""
}`}
onClick={() => handlePageChange(page)}
>
{page.toString().padStart(2, "0")}
</a>
</li>
))}
<li>
<a
className={`page-numbers icon ${currentPage === 3 ? "disabled" : ""}`}
onClick={handleNext}
>
<i className="fa-solid fa-arrow-right"></i>
</a>
</li>
</ul>
);
}

View File

@ -0,0 +1,28 @@
"use client";
export default function SearchWrap() {
return (
<div id="searchWrap" className="search-wrap">
<div className="search-inner">
<i
className="fas fa-times search-close"
onClick={() =>
document.getElementById("searchWrap").classList.remove("active")
}
id="search-close"
/>
<div className="search-cell">
<form method="get">
<div className="search-field-holder">
<input
type="search"
className="main-search-input"
placeholder="Search..."
/>
</div>
</form>
</div>
</div>
</div>
);
}

View File

@ -0,0 +1,134 @@
"use client";
import emailjs from "@emailjs/browser";
import React, { useRef } from "react";
import { toast } from "react-toastify";
import "react-toastify/dist/ReactToastify.css";
import AnimatedText from "../common/AnimatedText";
export default function ContactForm() {
const form = useRef();
const sandMail = (e) => {
e.preventDefault();
emailjs
.sendForm("service_noj8796", "template_fs3xchn", form.current, {
publicKey: "iG4SCmR-YtJagQ4gV",
})
.then((res) => {
if (res.status == 200) {
toast.success("Message Sent successfully!", {
position: "bottom-right",
autoClose: 5000,
hideProgressBar: false,
closeOnClick: true,
pauseOnHover: true,
draggable: true,
progress: undefined,
});
form.current.reset();
} else {
toast.error("Ops Message not Sent!", {
position: "bottom-right",
autoClose: 5000,
hideProgressBar: false,
closeOnClick: true,
pauseOnHover: true,
draggable: true,
progress: undefined,
});
}
});
};
return (
<section className="contact-section-22">
<div className="container">
<div className="contact-form-items">
<div className="title text-center">
<h2 className="splt-txt wow">
<AnimatedText text="Get In Touch" />
</h2>
</div>
<form ref={form} onSubmit={sandMail}>
<div className="row g-4">
<div className="col-lg-6 wow fadeInUp" data-wow-delay=".2s">
<div className="form-clt">
<input
type="text"
name="name"
id="name"
placeholder="Fast Name"
required
/>
<div className="icon">
<i className="fa-regular fa-user" />
</div>
</div>
</div>
<div className="col-lg-6 wow fadeInUp" data-wow-delay=".4s">
<div className="form-clt">
<input
type="text"
name="name"
id="name12"
placeholder="Last Name"
required
/>
<div className="icon">
<i className="fa-regular fa-user" />
</div>
</div>
</div>
<div className="col-lg-6 wow fadeInUp" data-wow-delay=".2s">
<div className="form-clt">
<input
type="text"
name="number"
id="number"
placeholder="Phone Number"
required
/>
<div className="icon">
<i className="fa-regular fa-phone" />
</div>
</div>
</div>
<div className="col-lg-6 wow fadeInUp" data-wow-delay=".4s">
<div className="form-clt">
<input
type="text"
name="email"
id="email3"
placeholder="Email Address"
required
/>
<div className="icon">
<i className="fa-regular fa-envelope" />
</div>
</div>
</div>
<div className="col-lg-12 wow fadeInUp" data-wow-delay=".2s">
<div className="form-clt">
<textarea
name="message"
id="message"
placeholder="Whats on your mind"
defaultValue={""}
required
/>
<div className="icon">
<i className="fa-sharp fa-light fa-pencil" />
</div>
</div>
</div>
<div className="col-lg-12 wow fadeInUp" data-wow-delay=".4s">
<button type="submit" className="theme-btn w-100">
SEND MESSAGE NOW
</button>
</div>
</div>
</form>
</div>
</div>
</section>
);
}

View File

@ -0,0 +1,91 @@
import React from "react";
import Image from "next/image";
import AnimatedText from "@/components/common/AnimatedText";
export default function ContactInfo() {
return (
<section className="contact-info-section fix section-padding">
<div className="container">
<div className="section-title text-center">
<h6 className="wow fadeInUp">
<i className="fa-regular fa-arrow-left-long" />
CONTACT US
<i className="fa-regular fa-arrow-right-long" />
</h6>
<h2 className="splt-txt wow">
<AnimatedText text="Our Contact Information" />
</h2>
</div>
<div className="row">
<div
className="col-xxl-4 col-xl-6 col-lg-6 col-md-6 wow fadeInUp"
data-wow-delay=".2s"
>
<div className="contact-box-items">
<div className="icon">
<Image
src="/assets/img/icon/18.svg"
width={50}
height={50}
alt="img"
/>
</div>
<div className="content">
<h3>Our Address</h3>
<p>
2715 Ash Dr. San Jose,
<br />
South Dakota 83475
</p>
</div>
</div>
</div>
<div
className="col-xxl-4 col-xl-6 col-lg-6 col-md-6 wow fadeInUp"
data-wow-delay=".4s"
>
<div className="contact-box-items">
<div className="icon">
<Image
src="/assets/img/icon/19.svg"
width={46}
height={28}
alt="img"
/>
</div>
<div className="content">
<h3>Email Address</h3>
<p>
Mobile :<a href="tel:984756123695">9847 5612 3695</a> <br />
Email :
<a href="mailto:example@gmail.com">example@gmail.com</a>
</p>
</div>
</div>
</div>
<div
className="col-xxl-4 col-xl-6 col-lg-6 col-md-6 wow fadeInUp"
data-wow-delay=".6s"
>
<div className="contact-box-items">
<div className="icon">
<Image
src="/assets/img/icon/20.svg"
width={50}
height={50}
alt="img"
/>
</div>
<div className="content">
<h3>Hours of Operation</h3>
<p>
Monday-Saturday : 8:00 - <br />
9:00 Sunday : Closed
</p>
</div>
</div>
</div>
</div>
</div>
</section>
);
}

View File

@ -0,0 +1,14 @@
import React from "react";
export default function Map() {
return (
<div className="office-google-map-wrapper">
<iframe
src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d6678.7619084840835!2d144.9618311901502!3d-37.81450084255415!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x6ad642b4758afc1d%3A0x3119cc820fdfc62e!2sEnvato!5e0!3m2!1sen!2sbd!4v1641984054261!5m2!1sen!2sbd"
style={{ border: 0 }}
allowFullScreen=""
loading="lazy"
/>
</div>
);
}

View File

@ -0,0 +1,214 @@
"use client";
import Link from "next/link";
import Image from "next/image";
import { services2 } from "@/data/services";
import { footerLinks } from "@/data/menu";
import { Gallery, Item } from "react-photoswipe-gallery";
import { galleryImages } from "@/data/gallery";
import "photoswipe/dist/photoswipe.css";
import React from "react";
import { socialLinks } from "@/data/blogs";
export default function Footer1() {
return (
<footer
className="footer-section bg-cover bg-cover"
style={{ backgroundImage: 'url("/assets/img/footer/bg.jpg")' }}
>
<div className="container">
<div className="contact-info-area">
<Link
href={`/`}
className="logo-img wow fadeInUp"
data-wow-delay=".2s"
>
<Image
src="/assets/img/logo/black-logo.svg"
width={149}
height={64}
alt="img"
/>
</Link>
<div className="contact-info-items wow fadeInUp" data-wow-delay=".4s">
<div className="icon">
<i className="fa-sharp fa-solid fa-location-dot" />
</div>
<div className="content">
<p>Office location</p>
<h3>4648 Rocky, New York</h3>
</div>
</div>
<div className="contact-info-items wow fadeInUp" data-wow-delay=".6s">
<div className="icon">
<i className="fa-solid fa-envelope" />
</div>
<div className="content">
<p>send email</p>
<h3>
<a href="mailto:example@gmail.com">example@gmail.com</a>
</h3>
</div>
</div>
<div className="contact-info-items wow fadeInUp" data-wow-delay=".8s">
<div className="icon">
<i className="fa-solid fa-phone-volume" />
</div>
<div className="content">
<p>call emergency</p>
<h3>
<a href="tel:+88012365499">+88 0123 654 99</a>
</h3>
</div>
</div>
</div>
<div className="footer-widgets-wrapper">
<div className="row">
<div
className="col-xl-4 col-lg-4 col-md-6 wow fadeInUp"
data-wow-delay=".2s"
>
<div className="single-footer-widget">
<div className="widget-head">
<h5>About Company</h5>
</div>
<div className="footer-content">
<p>
Nullam interdum libero vitae pretium aliquam <br />
donec nibh purus laoreet in ullamcorper vel <br />
malesuada sit amet enim.
</p>
<div className="social-icon d-flex align-items-center">
{socialLinks.map((elm, i) => (
<a key={i} href={elm.href}>
<i className={elm.iconClass} />
</a>
))}
</div>
</div>
</div>
</div>
<div
className="col-xl-2 col-lg-4 col-md-6 wow fadeInUp"
data-wow-delay=".4s"
>
<div className="single-footer-widget">
<div className="widget-head">
<h5>Quick Link</h5>
</div>
<ul className="list-area">
{footerLinks.map((link, index) => (
<li key={index}>
<Link href={link.href}>
<i className="fa-solid fa-chevrons-right" />
{link.name}
</Link>
</li>
))}
</ul>
</div>
</div>
<div
className="col-xl-3 col-lg-4 col-md-6 ps-lg-5 wow fadeInUp"
data-wow-delay=".6s"
>
<div className="single-footer-widget">
<div className="widget-head">
<h5>Our Services</h5>
</div>
<ul className="list-area">
{services2.map((elm, i) => (
<li key={i}>
<Link href={`/service-details/${elm.id}`}>
<i className="fa-solid fa-chevrons-right" />
{elm.title}
</Link>
</li>
))}
</ul>
</div>
</div>
<div
className="col-xl-3 col-lg-4 col-md-6 ps-lg-5 wow fadeInUp"
data-wow-delay=".8s"
>
<div className="single-footer-widget">
<div className="widget-head">
<h5>Instagram</h5>
</div>
<Gallery>
<div className="footer-gallery">
<div className="gallery-wrap">
<div className="gallery-item">
{galleryImages.slice(0, 3).map((image, index) => (
<div key={index} className="thumb">
<a className="img-popup">
<Item
original={image.src}
thumbnail={image.src}
width={200}
height={200}
>
{({ ref, open }) => (
<React.Fragment>
<Image
ref={ref}
src={image.src}
alt="gallery-img"
width={80}
height={80}
/>
<div onClick={open} className="icon">
<i className="far fa-plus" />
</div>
</React.Fragment>
)}
</Item>
</a>
</div>
))}
</div>
<div className="gallery-item">
{galleryImages.slice(3, 6).map((image, index) => (
<div key={index} className="thumb">
<a className="img-popup">
<Item
original={image.src}
thumbnail={image.src}
width={200}
height={200}
>
{({ ref, open }) => (
<React.Fragment>
<Image
ref={ref}
src={image.src}
alt="gallery-img"
width={80}
height={80}
/>
<div onClick={open} className="icon">
<i className="far fa-plus" />
</div>
</React.Fragment>
)}
</Item>
</a>
</div>
))}
</div>
</div>
</div>
</Gallery>
</div>
</div>
</div>
</div>
<div className="footer-bottom">
<p>
© All Copyright 2024 by <Link href={`/`}>Xbuild</Link>
</p>
</div>
</div>
</footer>
);
}

View File

@ -0,0 +1,119 @@
"use client";
import Nav from "./Nav";
import Link from "next/link";
import Offcanvas from "./Offcanvas";
import { openMobilemenu } from "@/utlis/toggleMobilemenu";
import Image from "next/image";
export default function Header1() {
return (
<>
<header className="header-section">
<div className="container-fluid">
<div className="main-header-wrapper">
<div className="logo-image">
<Link href={`/`}>
<Image
src="/assets/img/logo/black-logo.svg"
width={149}
height={64}
alt="img"
/>
</Link>
</div>
<div className="main-header-items">
<div className="header-contact-info-area">
<div className="contact-info-items">
<div className="icon">
<i className="fa-sharp fa-solid fa-location-dot"></i>
</div>
<div className="content">
<p>Office location</p>
<h3>4648 Rocky, New York</h3>
</div>
</div>
<div className="contact-info-items">
<div className="icon">
<i className="fa-solid fa-envelope"></i>
</div>
<div className="content">
<p>send email</p>
<h3>
<a href="mailto:example@gmail.com">example@gmail.com</a>
</h3>
</div>
</div>
<div className="contact-info-items style-2">
<div className="icon">
<i className="fa-solid fa-phone-volume"></i>
</div>
<div className="content">
<p>call emergency</p>
<h3>
<a href="tel:+88012365499">+88 0123 654 99</a>
</h3>
</div>
</div>
<div className="header-button">
<Link href={`/contact`} className="theme-btn">
GAT A QUOTE <i className="fa-regular fa-arrow-right"></i>
</Link>
</div>
</div>
<div id="header-sticky" className="header-1">
<div className="mega-menu-wrapper">
<div className="header-main">
<div className="logo">
<Link href={`/`} className="header-logo">
<Image
src="/assets/img/logo/black-logo.svg"
alt="logo-img"
width={149}
height={64}
/>
</Link>
</div>
<div className="header-left">
<div className="mean__menu-wrapper">
<div className="main-menu">
<nav id="mobile-menu">
<ul>
<Nav />
</ul>
</nav>
</div>
</div>
</div>
<div className="header-right d-flex justify-content-end align-items-center">
<a
href="#0"
onClick={() =>
document
.getElementById("searchWrap")
.classList.add("active")
}
className="search-trigger search-icon"
>
<i className="fal fa-search"></i>
</a>
<div className="header__hamburger d-xl-block my-auto">
<div
onClick={() => openMobilemenu()}
className="sidebar__toggle"
>
<i className="fas fa-bars"></i>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</header>
<Offcanvas>
<Nav />
</Offcanvas>
</>
);
}

View File

@ -0,0 +1,118 @@
"use client";
import NavOnepage from "./NavOnepage";
import Link from "next/link";
import Offcanvas from "./Offcanvas";
import { openMobilemenu } from "@/utlis/toggleMobilemenu";
import Image from "next/image";
export default function Header1Onepage() {
return (
<>
<header className="header-section">
<div className="container-fluid">
<div className="main-header-wrapper">
<div className="logo-image">
<Link href={`/`}>
<Image
src="/assets/img/logo/black-logo.svg"
width={149}
height={64}
alt="img"
/>
</Link>
</div>
<div className="main-header-items">
<div className="header-contact-info-area">
<div className="contact-info-items">
<div className="icon">
<i className="fa-sharp fa-solid fa-location-dot"></i>
</div>
<div className="content">
<p>Office location</p>
<h3>4648 Rocky, New York</h3>
</div>
</div>
<div className="contact-info-items">
<div className="icon">
<i className="fa-solid fa-envelope"></i>
</div>
<div className="content">
<p>send email</p>
<h3>
<a href="mailto:example@gmail.com">example@gmail.com</a>
</h3>
</div>
</div>
<div className="contact-info-items style-2">
<div className="icon">
<i className="fa-solid fa-phone-volume"></i>
</div>
<div className="content">
<p>call emergency</p>
<h3>
<a href="tel:+88012365499">+88 0123 654 99</a>
</h3>
</div>
</div>
<div className="header-button">
<Link href={`/contact`} className="theme-btn">
GAT A QUOTE <i className="fa-regular fa-arrow-right"></i>
</Link>
</div>
</div>
<div id="header-sticky" className="header-1">
<div className="mega-menu-wrapper">
<div className="header-main">
<div className="logo">
<Link href={`/`} className="header-logo">
<Image
src="/assets/img/logo/black-logo.svg"
alt="logo-img"
width={149}
height={64}
/>
</Link>
</div>
<div className="header-left">
<div className="mean__menu-wrapper">
<div className="main-menu">
<nav id="mobile-menu">
<ul>
<NavOnepage />
</ul>
</nav>
</div>
</div>
</div>
<div className="header-right d-flex justify-content-end align-items-center">
<a
onClick={() =>
document
.getElementById("searchWrap")
.classList.add("active")
}
className="search-trigger search-icon"
>
<i className="fal fa-search"></i>
</a>
<div className="header__hamburger d-xl-block my-auto">
<div
onClick={() => openMobilemenu()}
className="sidebar__toggle"
>
<i className="fas fa-bars"></i>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</header>
<Offcanvas>
<NavOnepage />
</Offcanvas>
</>
);
}

View File

@ -0,0 +1,113 @@
"use client";
import Nav from "./Nav";
import Link from "next/link";
import Offcanvas from "./Offcanvas";
import { openMobilemenu } from "@/utlis/toggleMobilemenu";
import Image from "next/image";
export default function Header2() {
return (
<>
<header className="header-section-2">
<div className="container-fluid">
<div className="header-top-wrapper-2">
<ul className="contact-list">
<li>
<i className="far fa-envelope" />
<a href="mailto:info@example.com">info@example.com</a>
</li>
<li>
<i className="fa-sharp fa-solid fa-location-dot" />
4648 Rocky, New York
</li>
<li>
<i className="fa-regular fa-phone" />
<a href="tel:2086660112">+208-666-0112</a>
</li>
</ul>
<div className="top-right">
<ul className="text-list">
<li>
<Link href={`/contact`}>Privacy Policy</Link>
</li>
<li>
<Link href={`/contact`}>Terms &amp; Conditions</Link>
</li>
</ul>
<div className="social-icon d-flex align-items-center">
<a href="#">
<i className="fab fa-facebook-f" />
</a>
<a href="#">
<i className="fab fa-twitter" />
</a>
<a href="#">
<i className="fab fa-youtube" />
</a>
<a href="#">
<i className="fab fa-linkedin-in" />
</a>
</div>
</div>
</div>
<div id="header-sticky" className="header-2">
<div className="mega-menu-wrapper">
<div className="header-main">
<div className="header-left">
<div className="logo">
<Link href={`/`} className="header-logo">
<Image
src="/assets/img/logo/black-logo.svg"
alt="logo-img"
width={149}
height={64}
/>
</Link>
</div>
</div>
<div className="header-right d-flex justify-content-end align-items-center">
<div className="mean__menu-wrapper">
<div className="main-menu">
<nav id="mobile-menu">
<ul>
<Nav />
</ul>
</nav>
</div>
</div>
<div className="header-button">
<Link href={`/contact`} className="theme-btn">
GAT A QUOTE <i className="fa-regular fa-arrow-right" />
</Link>
</div>
<div className="search-item">
<a
onClick={() =>
document
.getElementById("searchWrap")
.classList.add("active")
}
className="search-trigger search-icon"
>
<i className="fal fa-search" />
</a>
<div className="header__hamburger d-xl-block my-auto">
<div
onClick={() => openMobilemenu()}
className="sidebar__toggle"
>
<i className="fas fa-bars" />
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</header>{" "}
<Offcanvas>
<Nav />
</Offcanvas>
</>
);
}

View File

@ -0,0 +1,113 @@
"use client";
import NavOnepage from "./NavOnepage";
import Link from "next/link";
import Offcanvas from "./Offcanvas";
import { openMobilemenu } from "@/utlis/toggleMobilemenu";
import Image from "next/image";
export default function Header2Onepage() {
return (
<>
<header className="header-section-2">
<div className="container-fluid">
<div className="header-top-wrapper-2">
<ul className="contact-list">
<li>
<i className="far fa-envelope" />
<a href="mailto:info@example.com">info@example.com</a>
</li>
<li>
<i className="fa-sharp fa-solid fa-location-dot" />
4648 Rocky, New York
</li>
<li>
<i className="fa-regular fa-phone" />
<a href="tel:2086660112">+208-666-0112</a>
</li>
</ul>
<div className="top-right">
<ul className="text-list">
<li>
<Link href={`/contact`}>Privacy Policy</Link>
</li>
<li>
<Link href={`/contact`}>Terms &amp; Conditions</Link>
</li>
</ul>
<div className="social-icon d-flex align-items-center">
<a href="#">
<i className="fab fa-facebook-f" />
</a>
<a href="#">
<i className="fab fa-twitter" />
</a>
<a href="#">
<i className="fab fa-youtube" />
</a>
<a href="#">
<i className="fab fa-linkedin-in" />
</a>
</div>
</div>
</div>
<div id="header-sticky" className="header-2">
<div className="mega-menu-wrapper">
<div className="header-main">
<div className="header-left">
<div className="logo">
<Link href={`/`} className="header-logo">
<Image
src="/assets/img/logo/black-logo.svg"
alt="logo-img"
width={149}
height={64}
/>
</Link>
</div>
</div>
<div className="header-right d-flex justify-content-end align-items-center">
<div className="mean__menu-wrapper">
<div className="main-menu">
<nav id="mobile-menu">
<ul>
<NavOnepage />
</ul>
</nav>
</div>
</div>
<div className="header-button">
<Link href={`/contact`} className="theme-btn">
GAT A QUOTE <i className="fa-regular fa-arrow-right" />
</Link>
</div>
<div className="search-item">
<a
onClick={() =>
document
.getElementById("searchWrap")
.classList.add("active")
}
className="search-trigger search-icon"
>
<i className="fal fa-search" />
</a>
<div className="header__hamburger d-xl-block my-auto">
<div
onClick={() => openMobilemenu()}
className="sidebar__toggle"
>
<i className="fas fa-bars" />
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</header>{" "}
<Offcanvas>
<NavOnepage />
</Offcanvas>{" "}
</>
);
}

View File

@ -0,0 +1,30 @@
import React from "react";
export default function HeaderTop1() {
return (
<div className="header-top-section section-bg pt-3 pb-3">
<div className="container-fluid">
<div className="header-top-wrapper">
<span>
<i className="fa-regular fa-clock"></i> 09:00 am - 06:00 pm
</span>
<div className="social-icon d-flex align-items-center">
<span>Follow Us:</span>
<a href="#">
<i className="fab fa-facebook-f"></i>
</a>
<a href="#">
<i className="fab fa-twitter"></i>
</a>
<a href="#">
<i className="fab fa-youtube"></i>
</a>
<a href="#">
<i className="fab fa-linkedin-in"></i>
</a>
</div>
</div>
</div>
</div>
);
}

145
components/headers/Nav.jsx Normal file
View File

@ -0,0 +1,145 @@
"use client";
import Link from "next/link";
import { menuData } from "@/data/menu";
import { useState } from "react";
import Image from "next/image";
import { usePathname } from "next/navigation";
export default function Nav() {
const [parentActive, setParentActive] = useState(-1);
const [subparentActive, setsubParentActive] = useState(-1);
const pathname = usePathname();
const isMenuActive = (menuItem = menuData[0]) => {
let active = false;
if (menuItem.href?.includes("/")) {
if (menuItem.href?.split("/")[1] == pathname.split("/")[1]) {
active = true;
}
}
if (menuItem.submenu) {
menuItem.submenu?.forEach((elm2) => {
if (elm2.href?.includes("/")) {
if (elm2.href?.split("/")[1] == pathname.split("/")[1]) {
active = true;
}
}
if (elm2.submenu) {
elm2.submenu.forEach((elm3) => {
if (elm3.href.split("/")[1] == pathname.split("/")[1]) {
active = true;
}
});
}
if (elm2.homeMenuItems) {
elm2.homeMenuItems.forEach((elm3) => {
if (elm3.buttons) {
elm3.buttons.forEach((elm4) => {
if (elm4.href == pathname) {
active = true;
}
});
}
});
}
});
}
return active;
};
return (
<>
{menuData.map((item, index) => (
<li key={index} className={item.className || ""}>
<Link
href={item.href}
className={isMenuActive(item) ? "menuActive" : ""}
onClick={() =>
setParentActive((pre) => (pre == index ? -1 : index))
}
>
{item.label} {item.iconClass && <i className={item.iconClass}></i>}{" "}
</Link>
{item.submenu && (
<ul
className={`submenu ${
item.label == "Home" ? "has-homemenu" : ""
} ${parentActive == index ? "active" : ""} `}
>
{item.submenu.map((subItem, subIndex) =>
subItem.homeMenuItems ? (
<li key={subIndex}>
<div className="homemenu-items">
{subItem.homeMenuItems.map((homeItem, homeIndex) => (
<div className="homemenu" key={homeIndex}>
<div className="homemenu-thumb">
<Image
src={homeItem.imageSrc}
width={240}
height={300}
alt="img"
/>
<div className="demo-button">
{homeItem.buttons.map((button, buttonIndex) => (
<Link
href={button.href}
className="theme-btn"
key={buttonIndex}
>
{button.label}
</Link>
))}
</div>
</div>
<div className="homemenu-content text-center">
<h4 className="homemenu-title">{homeItem.title}</h4>
</div>
</div>
))}
</div>
</li>
) : (
<li key={subIndex} className={subItem.className || ""}>
<Link
href={subItem.href}
className={isMenuActive(subItem) ? "menuActive" : ""}
onClick={() =>
setsubParentActive((pre) =>
pre == subIndex ? -1 : subIndex
)
}
>
{subItem.label}{" "}
{subItem.iconClass && (
<i className={subItem.iconClass}></i>
)}
</Link>
{subItem.submenu && (
<ul
className={`submenu ${
subparentActive == subIndex ? "active" : ""
} `}
>
{subItem.submenu.map((nestedItem, nestedIndex) => (
<li key={nestedIndex}>
<Link
className={
isMenuActive(nestedItem) ? "menuActive" : ""
}
href={nestedItem.href}
>
{nestedItem.label}
</Link>
</li>
))}
</ul>
)}
</li>
)
)}
</ul>
)}
</li>
))}
</>
);
}

View File

@ -0,0 +1,93 @@
"use client";
import Link from "next/link";
import { useEffect, useState } from "react";
import Image from "next/image";
import { scrollToElement } from "@/utlis/scrollToElement";
import { onepageLinks } from "@/data/menu";
import { closeMobilemenu } from "@/utlis/toggleMobilemenu";
export default function NavOnepage() {
const [isDdOpen, setIsDdOpen] = useState(false);
useEffect(() => {
scrollToElement();
}, []);
return (
<>
<li className="has-dropdown active menu-thumb mobile-none">
<Link href={`/`}>
Home
<i className="fa-regular fa-plus"></i>
</Link>
<ul className="submenu has-homemenu">
<li>
<div className="homemenu-items">
<div className="homemenu">
<div className="homemenu-thumb">
<Image
src="/assets/img/header/home-1.jpg"
width={240}
height={300}
alt="img"
/>
<div className="demo-button">
<Link href={`/`} className="theme-btn">
Multi Page
</Link>
<Link href={`/home-1-one-page`} className="theme-btn">
One Page
</Link>
</div>
</div>
<div className="homemenu-content text-center">
<h4 className="homemenu-title">Home 01</h4>
</div>
</div>
<div className="homemenu">
<div className="homemenu-thumb mb-15">
<Image
src="/assets/img/header/home-2.jpg"
width={240}
height={300}
alt="img"
/>
<div className="demo-button">
<Link href={`/home-2`} className="theme-btn">
Multi Page
</Link>
<Link href={`/home-2-one-page`} className="theme-btn">
One Page
</Link>
</div>
</div>
<div className="homemenu-content text-center">
<h4 className="homemenu-title">Home 02</h4>
</div>
</div>
</div>
</li>
</ul>
</li>
<li className="has-dropdown active d-xl-none">
<a onClick={() => setIsDdOpen((pre) => !pre)} className="border-none">
Home
<i className="fa-regular fa-plus"></i>
</a>
<ul className={`submenu ${isDdOpen ? "active" : ""}`}>
<li>
<Link href={`/`}>Home 01</Link>
</li>
<li>
<Link href={`/home-2`}>Home 02</Link>
</li>
</ul>
</li>
{onepageLinks.map((link, index) => (
<li key={index} className="onePageLink">
<a onClick={() => closeMobilemenu()} href={link.href}>
{link.text}
</a>
</li>
))}
</>
);
}

View File

@ -0,0 +1,132 @@
"use client";
import { closeMobilemenu } from "@/utlis/toggleMobilemenu";
import Link from "next/link";
import Image from "next/image";
export default function Offcanvas({ children }) {
return (
<>
<div className="fix-area">
<div className="offcanvas__info ">
<div className="offcanvas__wrapper">
<div className="offcanvas__content">
<div className="offcanvas__top mb-5 d-flex justify-content-between align-items-center">
<div className="offcanvas__logo">
<Link href="/">
<Image
src="/assets/img/logo/black-logo.svg"
width={149}
height={64}
alt="logo-img"
/>
</Link>
</div>
<div
onClick={() => closeMobilemenu()}
className="offcanvas__close"
>
<button>
<i className="fas fa-times" />
</button>
</div>
</div>
<p className="text d-none d-xl-block">
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.
</p>
<div className="mobile-menu fix mb-3 mean-container">
<div className="mean-bar">
<a
href="#nav"
className="meanmenu-reveal"
style={{ right: 0, left: "auto", display: "inline" }}
>
<span>
<span>
<span />
</span>
</span>
</a>
<nav className="mean-nav">
<ul style={{ display: "none" }}>{children}</ul>
</nav>
</div>
</div>
<div className="offcanvas__contact">
<h4>Contact Info</h4>
<ul>
<li className="d-flex align-items-center">
<div className="offcanvas__contact-icon">
<i className="fal fa-map-marker-alt" />
</div>
<div className="offcanvas__contact-text">
<a target="_blank" href="#">
Main Street, Melbourne, Australia
</a>
</div>
</li>
<li className="d-flex align-items-center">
<div className="offcanvas__contact-icon mr-15">
<i className="fal fa-envelope" />
</div>
<div className="offcanvas__contact-text">
<a href="mailto:info@example.com">
<span className="mailto:info@example.com">
info@example.com
</span>
</a>
</div>
</li>
<li className="d-flex align-items-center">
<div className="offcanvas__contact-icon mr-15">
<i className="fal fa-clock" />
</div>
<div className="offcanvas__contact-text">
<a target="_blank" href="#">
Mod-friday, 09am -05pm
</a>
</div>
</li>
<li className="d-flex align-items-center">
<div className="offcanvas__contact-icon mr-15">
<i className="far fa-phone" />
</div>
<div className="offcanvas__contact-text">
<a href="tel:+11002345909">+11002345909</a>
</div>
</li>
</ul>
<div className="header-button mt-4">
<a href="contact.html" className="theme-btn text-center">
<span>
Get A Quote
<i className="fa-solid fa-arrow-right-long" />
</span>
</a>
</div>
<div className="social-icon d-flex align-items-center">
<a href="#">
<i className="fab fa-facebook-f" />
</a>
<a href="#">
<i className="fab fa-twitter" />
</a>
<a href="#">
<i className="fab fa-youtube" />
</a>
<a href="#">
<i className="fab fa-linkedin-in" />
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<div className="offcanvas__overlay " onClick={() => closeMobilemenu()} />
</>
);
}

View File

@ -0,0 +1,144 @@
"use client";
import Image from "next/image";
import AnimatedText from "@/components/common/AnimatedText";
import ModalVideo from "react-modal-video";
import { useState } from "react";
export default function About() {
const [isOpen, setOpen] = useState(false);
return (
<>
<section
id="about"
className="about-section fix section-padding scrollSpySection"
>
<div className="about-shape-1 float-bob-x">
<Image
src="/assets/img/about/about-shape-1.png"
width={114}
height={419}
alt="img"
/>
</div>
<div className="about-shape-2 float-bob-x">
<Image
src="/assets/img/about/about-shape-2.png"
width={318}
height={408}
alt="img"
/>
</div>
<div className="container">
<div className="about-wrapper">
<div className="row g-4">
<div className="col-lg-6">
<div className="about-image">
<Image
src="/assets/img/about/01.jpg"
alt="img"
width={485}
height={592}
className="wow fadeInLeft"
data-wow-delay=".2s"
/>
<div
className="about-image-2 wow fadeInUp"
data-wow-delay=".4s"
>
<Image
src="/assets/img/about/02.jpg"
width={260}
height={270}
alt="img"
/>
<div className="video-box">
<a
onClick={() => setOpen(true)}
className="video-btn video-popup"
>
<i className="fas fa-play"></i>
</a>
</div>
</div>
<div className="about-line-shape">
<Image
src="/assets/img/about/about-shape-3.png"
width={30}
height={545}
alt="img"
/>
</div>
</div>
</div>
<div className="col-lg-6">
<div className="about-content">
<div className="section-title">
<h6 className="wow fadeInUp">
<i className="fa-regular fa-arrow-left-long"></i>1976
Building conpany
<i className="fa-regular fa-arrow-right-long"></i>
</h6>
<h2 className="splt-txt wow">
<AnimatedText text="Create The Building You Want Here" />
</h2>
</div>
<p className="mt-3 mt-md-0 wow fadeInUp" data-wow-delay=".4s">
It is a long established fact that a reader will be
distracted the readable content of a page when looking at
layout the point of using lorem the is Ipsum less normal
distribution of letters.
</p>
<ul className="list-items wow fadeInUp" data-wow-delay=".2s">
<li>
<i className="fa-solid fa-circle-check"></i>
Proactively pontificate client-centered relationships
</li>
<li>
<i className="fa-solid fa-circle-check"></i>
Is there a waiting list for desired work to be started
</li>
<li>
<i className="fa-solid fa-circle-check"></i>
Release of Letraset sheets containing Lorem Ipsum
</li>
</ul>
<div className="about-author">
<div
className="author-image wow fadeInUp"
data-wow-delay=".2s"
>
<Image
src="/assets/img/about/author.png"
width={68}
height={68}
alt="author-img"
/>
<div className="content">
<p>Xbuild, CEO</p>
<h4>Brooklyn Simmons</h4>
</div>
</div>
<Image
src="/assets/img/about/signature.png"
alt="img"
width={85}
height={51}
className="wow fadeInUp"
data-wow-delay=".4s"
/>
</div>
</div>
</div>
</div>
</div>
</div>
</section>{" "}
<ModalVideo
channel="youtube"
youtube={{ mute: 0, autoplay: 0 }}
isOpen={isOpen}
videoId="Cn4G2lZ_g2I"
onClose={() => setOpen(false)}
/>{" "}
</>
);
}

View File

@ -0,0 +1,124 @@
import { newsImageItems, newsItems } from "@/data/blogs";
import React from "react";
import Image from "next/image";
import Link from "next/link";
import AnimatedText from "@/components/common/AnimatedText";
export default function Blogs() {
return (
<section
id="blog"
className="news-section fix section-padding fix section-bg-2 scrollSpySection"
>
<div className="shape-1 float-bob-y">
<Image
src="/assets/img/news/shape-1.png"
width={165}
height={116}
alt="img"
/>
</div>
<div className="shape-2 float-bob-x">
<Image
src="/assets/img/news/shape-2.png"
width={165}
height={116}
alt="img"
/>
</div>
<div className="container">
<div className="section-title text-center">
<h6 className="wow fadeInUp">
<i className="fa-regular fa-arrow-left-long" />
Blog &amp; News
<i className="fa-regular fa-arrow-right-long" />
</h6>
<h2 className="splt-txt wow">
<AnimatedText text="Latest News & Blog" />
</h2>
</div>
<div className="row">
<div className="col-lg-6 wow fadeInUp" data-wow-delay=".2s">
{newsImageItems.map((item) => (
<div
key={item.id}
className="news-image-items bg-cover"
style={{ backgroundImage: `url("${item.backgroundImage}")` }}
>
<div className="news-content">
<ul>
<li>
<i className="fa-regular fa-user" />
{item.author}
</li>
<li>
<i className="fa-solid fa-tag" />
{item.category}
</li>
</ul>
<h3>
<Link href={`/news-details/${item.id}`}>
{item.title.split("<br />").map((line, index) => (
<React.Fragment key={index}>
{line}
<br />
</React.Fragment>
))}
</Link>
</h3>
<p className="text-white">{item.description}</p>
</div>
</div>
))}
</div>
<div className="col-lg-6">
<div className="news-right-items">
{newsItems.map((item) => (
<div
key={item.id}
className="news-card-items wow fadeInUp"
data-wow-delay={item.delay}
>
<div className="news-content">
<ul>
<li>
<i className="fa-regular fa-user" />
{item.author}
</li>
<li>
<i className="fa-solid fa-tag" />
{item.category}
</li>
</ul>
<h4>
<Link href={`/news-details/${item.id}`}>
{item.title}
</Link>
</h4>
<p>
Pellentesque vitae consectetur ante <br />
Integer non eros...
</p>
<Link
href={`/news-details/${item.id}`}
className="link-btn"
>
Read More <i className="fa-regular fa-arrow-right-long" />
</Link>
</div>
<div className="news-image">
<Image
src={item.imgSrc}
width={247}
height={258}
alt="img"
/>
</div>
</div>
))}
</div>
</div>
</div>
</div>
</section>
);
}

View File

@ -0,0 +1,145 @@
"use client";
import Image from "next/image";
import AnimatedText from "@/components/common/AnimatedText";
export default function Contact() {
return (
<section
id="contact"
className="contact-section fix section-padding bg-cover scrollSpySection"
style={{ backgroundImage: 'url("/assets/img/contact-bg.jpg")' }}
>
<div className="contact-image float-bob-x">
<Image
src="/assets/img/contact-img-shape.png"
width={353}
height={398}
alt="img"
/>
</div>
<div className="container">
<div className="contact-wrapper">
<div className="row g-4 align-items-center">
<div className="col-lg-6">
<div className="contact-items">
<h3 className="splt-txt wow">
<AnimatedText text="Get in touch!" />
</h3>
<form
onSubmit={(e) => e.preventDefault()}
className="mt-4 mt-md-0"
>
<div className="row g-4">
<div
className="col-lg-6 col-md-6 wow fadeInUp"
data-wow-delay=".2s"
>
<div className="form-clt">
<input
type="text"
name="name"
id="name"
placeholder="Name"
/>
</div>
</div>
<div
className="col-lg-6 col-md-6 wow fadeInUp"
data-wow-delay=".4s"
>
<div className="form-clt">
<input
type="text"
name="email"
id="email"
placeholder="email"
/>
</div>
</div>
<div
className="col-lg-6 col-md-6 wow fadeInUp"
data-wow-delay=".2s"
>
<div className="form-clt">
<input
type="text"
name="number"
id="number"
placeholder="Phone"
/>
</div>
</div>
<div
className="col-lg-6 col-md-6 wow fadeInUp"
data-wow-delay=".4s"
>
<div className="form-clt">
<input
type="text"
name="subject"
id="subject"
placeholder="Subject"
/>
</div>
</div>
<div
className="col-lg-12 wow fadeInUp"
data-wow-delay=".2s"
>
<div className="form-clt">
<textarea
name="message"
id="message"
placeholder="write message . ."
defaultValue={""}
/>
</div>
</div>
<div className="col-lg-7 wow fadeInUp" data-wow-delay=".4s">
<button type="submit" className="theme-btn">
Send message <i className="fas fa-long-arrow-right" />
</button>
</div>
</div>
</form>
</div>
</div>
<div className="col-lg-6">
<div className="contact-content">
<div className="section-title">
<h6 className="text-white wow fadeInUp">
<i className="fa-regular fa-arrow-left-long" />
talk to us
<i className="fa-regular fa-arrow-right-long" />
</h6>
<h2 className="text-white splt-txt wow">
<AnimatedText text="Building With Passion Ensuring Satisfactions" />
</h2>
</div>
<p
className="text-white mt-3 mt-md-0 wow fadeInUp"
data-wow-delay=".5s"
>
It is a long established fact that a reader will be distracted
the readable content of a page when looking at layout the
point of using lorem the is Ipsum less normal distribution of
letters.
</p>
<div className="icon-items wow fadeInUp" data-wow-delay=".3s">
<div className="icon">
<i className="fa-solid fa-phone-volume" />
</div>
<div className="content">
<span>call emergency</span>
<h4>
<a href="tel:+88012365499">+88 0123 654 99</a>
</h4>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
);
}

View File

@ -0,0 +1,50 @@
import React from "react";
import Link from "next/link";
import Image from "next/image";
import AnimatedText from "@/components/common/AnimatedText";
export default function Cta() {
return (
<section className="cta-banner-section section-padding">
<div className="container">
<div
className="cta-banner-wrapper fix bg-cover"
style={{ backgroundImage: 'url("/assets/img/cta-bg.jpg")' }}
>
<h2 className="splt-txt wow">
<AnimatedText text="Looking For Best Partner" /> <br />
<AnimatedText text="For Your" />{" "}
<b>
<AnimatedText text="Next Construction" />
</b>{" "}
<br />
<AnimatedText text="Works?" />
</h2>
<div className="cta-img wow fadeInUp" data-wow-delay=".4s">
<Image
src="/assets/img/cta-img.png"
width={223}
height={256}
alt="img"
/>
<div className="shape-img">
<Image
src="/assets/img/cta-shape.png"
width={225}
height={242}
alt="img"
/>
</div>
</div>
<Link
href={`/contact`}
className="theme-btn bg-white wow fadeInUp"
data-wow-delay=".6s"
>
contact us
<i className="fa-regular fa-arrow-right" />
</Link>
</div>
</div>
</section>
);
}

View File

@ -0,0 +1,104 @@
import React from "react";
import Image from "next/image";
import AnimatedText from "@/components/common/AnimatedText";
import { faqs } from "@/data/faq";
export default function Faq() {
return (
<section
className="faq-section fix section-padding section-bg-2 bg-cover"
style={{ backgroundImage: 'url("/assets/img/faq/bg-shape.png")' }}
>
<div className="track-shape float-bob-x">
<Image src="/assets/img/track.png" width={163} height={79} alt="img" />
</div>
<div className="container">
<div className="faq-wrapper">
<div className="row g-4">
<div className="col-lg-6">
<div className="faq-content">
<div className="section-title">
<h6 className="wow fadeInUp">
<i className="fa-regular fa-arrow-left-long" />
faq
<i className="fa-regular fa-arrow-right-long" />
</h6>
<h2 className="splt-txt wow">
<AnimatedText text="Your Frequently Ask & " /> <br />
<AnimatedText text="Questions" />
</h2>
</div>
<p className="mt-3 mt-md-0 wow fadeInUp" data-wow-delay=".4s">
It is a long established fact that a reader will be distracted
the readable content of a page when looking at layout the
point of using lorem the is Ipsum less normal distribution of
letters.
</p>
<div className="icon-items wow fadeInUp" data-wow-delay=".2s">
<div className="icon">
<i className="fa-regular fa-check" />
</div>
<div className="content">
<h5>UNIQUE PROJECTS</h5>
<span>
It is a long established fact that a reader will be
distracted the readable content of a page when
</span>
</div>
</div>
<div className="icon-items wow fadeInUp" data-wow-delay=".4s">
<div className="icon">
<i className="fa-regular fa-check" />
</div>
<div className="content">
<h5>UNIQUE PROJECTS</h5>
<span>
It is a long established fact that a reader will be
distracted the readable content of a page when
</span>
</div>
</div>
</div>
</div>
<div className="col-lg-6">
<div className="faq-accordion">
<div className="accordion" id="accordion">
{faqs.map((faq, index) => (
<div
key={faq.id}
className="accordion-item mb-3 wow fadeInUp"
data-wow-delay={faq.delay}
>
<h5 className="accordion-header">
<button
className={`accordion-button ${
faq.expanded ? "" : "collapsed"
}`}
type="button"
data-bs-toggle="collapse"
data-bs-target={`#faq${faq.id}`}
aria-expanded={faq.expanded}
aria-controls={`faq${faq.id}`}
>
{faq.question}
</button>
</h5>
<div
id={`faq${faq.id}`}
className={`accordion-collapse collapse ${
faq.expanded ? "show" : ""
}`}
data-bs-parent="#accordion"
>
<div className="accordion-body">{faq.answer}</div>
</div>
</div>
))}
</div>
</div>
</div>
</div>
</div>
</div>
</section>
);
}

View File

@ -0,0 +1,164 @@
"use client";
import AnimatedText from "@/components/common/AnimatedText";
import { Autoplay, Navigation } from "swiper/modules";
import { Swiper, SwiperSlide } from "swiper/react";
import Link from "next/link";
import Image from "next/image";
import ModalVideo from "react-modal-video";
import { useState } from "react";
export default function Hero() {
const [isOpen, setOpen] = useState(false);
const swiperOptions = {
spaceBetween: 30,
speed: 2000,
loop: true,
autoplay: {
delay: 2000,
disableOnInteraction: false,
},
navigation: {
prevEl: ".array-prevs",
nextEl: ".array-nexts",
},
modules: [Autoplay, Navigation],
breakpoints: {
1199: {
slidesPerView: 2,
},
991: {
slidesPerView: 2,
},
767: {
slidesPerView: 2,
},
575: {
slidesPerView: 1,
},
0: {
slidesPerView: 1,
},
},
};
const images = [
"/assets/img/hero/01.jpg",
"/assets/img/hero/02.jpg",
"/assets/img/hero/01.jpg",
"/assets/img/hero/02.jpg",
// Add more image paths as needed
];
return (
<>
<section className="hero-section hero-1 fix section-padding">
<div className="line-shape">
<Image
src="/assets/img/hero/line-shape.png"
width={365}
height={603}
alt="img"
/>
</div>
<div className="container-fluid">
<div className="row g-4">
<div className="col-lg-7">
<div className="hero-content">
<div className="vector-shape">
<Image
src="/assets/img/hero/vector.png"
width={254}
height={296}
alt="img"
/>
</div>
<div className="vector-shape-2">
<Image
src="/assets/img/hero/vector-2.png"
width={254}
height={296}
alt="img"
/>
</div>
<h1 className="splt-txt wow">
<AnimatedText text="Create the" />
<br /> <AnimatedText text="building you" />
<br /> <AnimatedText text="want here" />
</h1>
<p className="wow fadeInUp" data-wow-delay=".5s">
Proactively pontificate client-centered relationships visavis
process centric leadership skills. Credibly.
</p>
<div className="hero-button">
<Link
href={`/about`}
className="theme-btn bg-white wow fadeInUp"
data-wow-delay=".3s"
>
Explore More
<i className="fa-regular fa-arrow-right"></i>
</Link>
<span
className="button-text wow fadeInUp"
data-wow-delay=".5s"
>
<a
onClick={() => setOpen(true)}
className="video-btn video-popup"
>
<i className="fa-solid fa-play"></i>
</a>
<span className="ms-3 d-line">play reel</span>
</span>
</div>
</div>
</div>
<div className="col-lg-5">
<div className="hero-image-items">
<Swiper {...swiperOptions} className="swiper hero-slider">
{images.map((src, index) => (
<SwiperSlide className="swiper-slide" key={index}>
<div className="hero-image">
<Image
width={475}
height={635}
src={src}
alt={`Hero ${index + 1}`}
/>
</div>
</SwiperSlide>
))}
<div className="array-button">
<button className="array-prevs">
<Image
src="/assets/img/hero/prev.png"
width={15}
height={11}
alt="img"
/>
Previews
</button>
<button className="array-nexts">
Next{" "}
<Image
src="/assets/img/hero/next.png"
width={15}
height={11}
alt="img"
/>
</button>
</div>
</Swiper>
</div>
</div>
</div>
</div>
</section>
<ModalVideo
channel="youtube"
youtube={{ mute: 0, autoplay: 0 }}
isOpen={isOpen}
videoId="Cn4G2lZ_g2I"
onClose={() => setOpen(false)}
/>{" "}
</>
);
}

View File

@ -0,0 +1,57 @@
"use client";
import Link from "next/link";
import AnimatedText from "@/components/common/AnimatedText";
import { projects2 } from "@/data/projects";
import { useRef } from "react";
export default function Projects() {
const parentRefs = useRef([]);
const handleProjectHover = (index) => {
parentRefs.current.forEach((el) => {
el.classList.remove("active");
});
parentRefs.current[index].classList.add("active");
};
return (
<section
id="projects"
className="project-section fix section-padding scrollSpySection"
>
<div className="container">
<div className="section-title text-center">
<h6 className="wow fadeInUp">
<i className="fa-regular fa-arrow-left-long" />
our complete projects
<i className="fa-regular fa-arrow-right-long" />
</h6>
<h2 className="splt-txt wow">
<AnimatedText text="Our Latest Projects" />
</h2>
</div>
</div>
<div className="container-fluid">
<div className="project-wrapper">
<div className="main-box">
{projects2.map((elm, i) => (
<div
onMouseOver={() => handleProjectHover(i)}
ref={(el) => (parentRefs.current[i] = el)}
key={i}
className={`box wow fadeInUp ${elm.bgClass} `}
data-wow-delay={elm.delay}
>
<div className="project-content">
<h3>
<Link href={`/project-details/${elm.id}`}>{elm.title}</Link>
</h3>
<Link href={`/project-details/${elm.id}`} className="icon">
<i className="fa-solid fa-arrow-right" />
</Link>
</div>
</div>
))}
</div>
</div>
</div>
</section>
);
}

View File

@ -0,0 +1,112 @@
"use client";
import { serviceItems } from "@/data/services";
import { Autoplay, Navigation, Pagination } from "swiper/modules";
import { Swiper, SwiperSlide } from "swiper/react";
import AnimatedText from "@/components/common/AnimatedText";
import Link from "next/link";
import Image from "next/image";
export default function Services() {
const swiperOptions = {
spaceBetween: 30,
speed: 2000,
loop: true,
modules: [Autoplay, Pagination, Navigation],
autoplay: {
delay: 2000,
disableOnInteraction: false,
},
pagination: {
el: ".dot",
clickable: true,
},
navigation: {
nextEl: ".snbp1",
prevEl: ".snbn1",
},
breakpoints: {
1399: {
slidesPerView: 4,
},
1199: {
slidesPerView: 3,
},
991: {
slidesPerView: 2,
},
767: {
slidesPerView: 2,
},
575: {
slidesPerView: 1,
},
0: {
slidesPerView: 1,
},
},
};
return (
<section
id="services"
className="service-section fix section-padding bg-cover scrollSpySection"
style={{ backgroundImage: "url(/assets/img/service/service-bg.jpg)" }}
>
<div className="container">
<div className="section-title text-center">
<h6 className="wow fadeInUp">
<i className="fa-regular fa-arrow-left-long"></i>WHAT WE OFFER
<i className="fa-regular fa-arrow-right-long"></i>
</h6>
<h2 className="text-white splt-txt wow">
<AnimatedText text="Create The Building " />
<br />
<AnimatedText text="You Want Here" />
</h2>
</div>
<div className="array-button">
<button className="array-prev snbp1">
<i className="fa-regular fa-arrow-left-long"></i>
</button>
<button className="array-next snbn1">
<i className="fa-regular fa-arrow-right-long"></i>
</button>
</div>
</div>
<div className="container-fluid">
<Swiper {...swiperOptions} className="swiper service-slider">
{serviceItems.map((item, index) => (
<SwiperSlide className="swiper-slide" key={index}>
<div className="service-box-items">
<div className="service-thumb">
<Image src={item.imgSrc} width={346} height={236} alt="img" />
<div className="icon">
<Image
src={item.iconSrc}
width={32}
height={32}
alt="img"
/>
</div>
</div>
<div className="service-content">
<h2 className="number">{item.number}</h2>
<h3>
<Link href={`/service-details/${item.id}`}>
{item.title}
</Link>
</h3>
<p>{item.description}</p>
<Link
href={`/service-details/${item.id}`}
className="link-btn"
>
Explore More <i className="fa-solid fa-arrow-right"></i>
</Link>
</div>
</div>
</SwiperSlide>
))}
</Swiper>
</div>
</section>
);
}

View File

@ -0,0 +1,113 @@
import React from "react";
import Image from "next/image";
import AnimatedText from "@/components/common/AnimatedText";
import { skills } from "@/data/skills";
export default function Skills() {
return (
<section className="skills-section fix section-padding pt-0">
<div className="shape-1 float-bob-x">
<Image
src="/assets/img/skills/shape-1.png"
width={135}
height={99}
alt="img"
/>
</div>
<div className="shape-2 float-bob-y">
<Image
src="/assets/img/skills/shape-2.png"
width={310}
height={344}
alt="img"
/>
</div>
<div className="container">
<div className="skills-wrapper">
<div className="row g-4">
<div className="col-lg-6">
<div className="row g-4">
<div className="col-lg-7 wow fadeInUp" data-wow-delay=".2s">
<div className="skills-image">
<Image
src="/assets/img/skills/01.jpg"
width={324}
height={520}
alt="img"
/>
<div className="logo-shape">
<Image
src="/assets/img/skills/logo.png"
width={153}
height={167}
alt="img"
/>
</div>
</div>
</div>
<div className="col-lg-5 wow fadeInUp" data-wow-delay=".4s">
<div className="skills-image">
<Image
src="/assets/img/skills/02.jpg"
width={227}
height={520}
alt="img"
/>
</div>
</div>
</div>
</div>
<div className="col-lg-6">
<div className="skill-content">
<div className="section-title">
<h6 className="wow fadeInUp">
<i className="fa-regular fa-arrow-left-long" />
our skills
<i className="fa-regular fa-arrow-right-long" />
</h6>
<h2 className="splt-txt wow">
<AnimatedText text="We Are Giving You A Chance To Build Your Dream" />
</h2>
</div>
<p className="mt-3 mt-md-0 wow fadeInUp" data-wow-delay=".4s">
It is a long established fact that a reader will be distracted
the readable content of a page when looking at layout the
point of using lorem the is Ipsum less normal distribution of
letters.
</p>
<div className="skill-feature-items">
{skills.map((skill, index) => (
<div
key={index}
className="skill-feature wow fadeInUp"
data-wow-delay={skill.delay}
>
<h3 className="box-title">{skill.title}</h3>
<div className="progress">
<div
className="progress-bar"
style={{
width: `${skill.percentage}%`,
animation:
"2.6s ease 0s 1 normal none running animate-positive",
opacity: 1,
}}
>
<div className="progress-value">
<span className="counter-number2">
{skill.percentage}
</span>
%
</div>
</div>
</div>
</div>
))}
</div>
</div>
</div>
</div>
</div>
</div>
</section>
);
}

View File

@ -0,0 +1,66 @@
import { teamMembers } from "@/data/team";
import React from "react";
import Link from "next/link";
import Image from "next/image";
import AnimatedText from "@/components/common/AnimatedText";
export default function Team() {
return (
<section
id="team"
className="team-section fix section-padding bg-cover scrollSpySection"
style={{ backgroundImage: 'url("/assets/img/team/bg-shape.png")' }}
>
<div className="container">
<div className="section-title text-center">
<h6 className="wow fadeInUp">
<i className="fa-regular fa-arrow-left-long" />
our team
<i className="fa-regular fa-arrow-right-long" />
</h6>
<h2 className="splt-txt wow">
<AnimatedText text="Our Expert Team" />
<br />
<AnimatedText text="Members" />
</h2>
</div>
<div className="row">
{teamMembers.map((member) => (
<div
key={member.id}
className="col-xl-3 col-lg-4 col-md-6 wow fadeInUp"
data-wow-delay={member.delay}
>
<div
className={`team-card-items ${member.active ? "active" : ""}`}
>
<div className="team-image">
<Image
src={member.image}
width={238}
height={294}
alt="img"
/>
<div className="social-icon d-flex align-items-center">
{member.socials.map((link, index) => (
<a key={index} href={link.href}>
<i className={link.iconClass} />
</a>
))}
</div>
</div>
<div className="team-content">
<span>{member.role}</span>
<h3>
<Link href={`/team-details/${member.id}`}>
{member.name}
</Link>
</h3>
</div>
</div>
</div>
))}
</div>
</div>
</section>
);
}

View File

@ -0,0 +1,132 @@
"use client";
import { testimonials } from "@/data/testimonials";
import { Autoplay, Navigation } from "swiper/modules";
import { Swiper, SwiperSlide } from "swiper/react";
import AnimatedText from "@/components/common/AnimatedText";
import Image from "next/image";
export default function Testimonials() {
const swiperOptions = {
spaceBetween: 30,
speed: 2000,
loop: true,
modules: [Autoplay, Navigation],
autoplay: {
delay: 2000,
disableOnInteraction: false,
},
navigation: {
nextEl: ".snbp2",
prevEl: ".snbn2",
},
};
return (
<section className="testimonial-section fix section-padding section-bg">
<div className="arrow-shape float-bob-y">
<Image
src="/assets/img/testimonial/arrow-shape.png"
width={202}
height={291}
alt="img"
/>
</div>
<div className="building-shape float-bob-x">
<Image
src="/assets/img/testimonial/building-shape.png"
width={931}
height={520}
alt="img"
/>
</div>
<div className="testimonial-image">
<Image
src="/assets/img/testimonial/testimonial-image.jpg"
width={745}
height={708}
alt="img"
/>
</div>
<div className="container">
<div className="testimonial-wrapper">
<div className="row g-4">
<div className="col-lg-7">
<div className="testimonial-content">
<div className="section-title">
<h6 className="wow fadeInUp">
<i className="fa-regular fa-arrow-left-long" />
testimonials
<i className="fa-regular fa-arrow-right-long" />
</h6>
<h2 className="text-white splt-txt wow">
<AnimatedText text="What Clients Say" /> <br />
<AnimatedText text="About Us!" />
</h2>
</div>
<Swiper
{...swiperOptions}
className="swiper testimonial-slider mt-3 mt-md-0"
>
{testimonials.map((text, index) => (
<SwiperSlide className="swiper-slide" key={index}>
<div className="testi-content">
<div className="icon">
<svg
xmlns="http://www.w3.org/2000/svg"
width={32}
height={32}
viewBox="0 0 32 32"
fill="none"
>
<path d="M0 4V28L12 16V4H0Z" fill="#F55B1F" />
<path d="M20 4V28L32 16V4H20Z" fill="#F55B1F" />
</svg>
<h4>{text}</h4>
</div>
</div>
</SwiperSlide>
))}
</Swiper>
<div className="client-img-items">
<div className="client-image-area">
<div className="client-img">
<Image
src="/assets/img/testimonial/client-1.png"
alt="img"
width={81}
height={89}
/>
</div>
<div className="client-img">
<Image
src="/assets/img/testimonial/client-2.png"
alt="img"
width={81}
height={89}
/>
</div>
<div className="client-img">
<Image
src="/assets/img/testimonial/client-3.png"
alt="img"
width={81}
height={89}
/>
</div>
</div>
<div className="array-button">
<button className="array-prev snbp2">
<i className="fa-solid fa-arrow-left-long" />
</button>
<button className="array-next snbn2">
<i className="fa-solid fa-arrow-right-long" />
</button>
</div>
</div>
</div>
</div>
<div className="col-lg-6" />
</div>
</div>
</div>
</section>
);
}

View File

@ -0,0 +1,183 @@
"use client";
import Link from "next/link";
import Image from "next/image";
import AnimatedText from "@/components/common/AnimatedText";
import ModalVideo from "react-modal-video";
import { useState } from "react";
export default function About() {
const [isOpen, setOpen] = useState(false);
return (
<>
<section
id="about"
className="about-section fix section-padding scrollSpySection"
>
<div className="about-shape-4 float-bob-x">
<Image
src="/assets/img/about/about-shape-4.png"
width={367}
height={772}
alt="img"
/>
</div>
<div className="about-shape-5 float-bob-y">
<Image
src="/assets/img/about/about-shape-5.png"
width={367}
height={516}
alt="img"
/>
</div>
<div className="container">
<div className="about-wrapper-2">
<div className="row g-4">
<div className="col-lg-6">
<div className="about-image">
<Image
src="/assets/img/about/03.jpg"
alt="img"
width={337}
height={378}
className="wow fadeInLeft"
data-wow-delay=".3s"
/>
<div
className="about-image-2 wow fadeInUp"
data-wow-delay=".2s"
>
<Image
src="/assets/img/about/04.jpg"
width={303}
height={323}
alt="img"
/>
</div>
<div className="video-items wow fadeInUp">
<a
onClick={() => setOpen(true)}
className="video-btn video-popup"
>
<i className="fas fa-play" />
</a>
<a
onClick={() => setOpen(true)}
className="video-text video-popup"
>
play now
</a>
</div>
<div className="bar-shape">
<Image
src="/assets/img/about/bar.png"
width={40}
height={207}
alt="img"
/>
</div>
</div>
</div>
<div className="col-lg-6">
<div className="about-content">
<div className="section-title">
<h6 className="wow fadeInUp">
<i className="fa-regular fa-arrow-left-long" />
About Our Company
<i className="fa-regular fa-arrow-right-long" />
</h6>
<h2 className="splt-txt wow">
<AnimatedText text="Dedicated To Providing" /> <br />
<AnimatedText text="Top-Notch Construction" />
</h2>
</div>
<p className="mt-3 mt-md-0 wow fadeInUp" data-wow-delay=".4s">
It is a long established fact that a reader will be
distracted the readable content of a page when looking at
layout the point of using lorem the is Ipsum Xbuild less
normal distribution best company in world of letters.
</p>
<div className="row g-4 mt-3">
<div className="col-lg-6 wow fadeInUp" data-wow-delay=".2s">
<div className="icon-items">
<div className="icon">
<Image
src="/assets/img/icon/05.svg"
width={30}
height={30}
alt="img"
/>
</div>
<h5 className="splt-txt wow">
<AnimatedText text="Build & Development" />
</h5>
</div>
</div>
<div className="col-lg-6 wow fadeInUp" data-wow-delay=".4s">
<div className="icon-items">
<div className="icon">
<Image
src="/assets/img/icon/06.svg"
width={30}
height={30}
alt="img"
/>
</div>
<h5 className="splt-txt wow">
<AnimatedText text="Full-service offering" />
</h5>
</div>
</div>
</div>
<ul className="list-items wow fadeInUp" data-wow-delay=".2s">
<li>
<i className="fa-solid fa-circle-check" />
Proactively pontificate client-centered relationships
</li>
<li>
<i className="fa-solid fa-circle-check" />
Is there a waiting list for desired work to be started
</li>
<li>
<i className="fa-solid fa-circle-check" />
Release of Letraset sheets containing Lorem Ipsum
</li>
</ul>
<div className="about-author">
<Link
href={`/about`}
className="theme-btn wow fadeInUp"
data-wow-delay=".2s"
>
Explore more <i className="fa-regular fa-arrow-right" />
</Link>
<div
className="author-image wow fadeInUp"
data-wow-delay=".4s"
>
<Image
src="/assets/img/about/author.png"
width={68}
height={68}
alt="author-img"
/>
<div className="content">
<p>Xbuild, CEO</p>
<h4>Brooklyn Simmons</h4>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<ModalVideo
channel="youtube"
youtube={{ mute: 0, autoplay: 0 }}
isOpen={isOpen}
videoId="Cn4G2lZ_g2I"
onClose={() => setOpen(false)}
/>{" "}
</>
);
}

View File

@ -0,0 +1,96 @@
import { counterItems } from "@/data/facts";
import React from "react";
import Image from "next/image";
import AnimatedText from "@/components/common/AnimatedText";
export default function Achievements() {
return (
<section
className="achivements-section fix section-bg-2 section-padding bg-cover"
style={{ backgroundImage: 'url("/assets/img/achivements-bg-shape.png")' }}
>
<div className="container">
<div className="achivements-wrapper">
<div className="row g-4 justify-content-between">
<div className="col-xxl-6 col-xl-7 col-lg-8">
<div className="achivements-content">
<div className="section-title">
<h6 className="wow fadeInUp">
<i className="fa-regular fa-arrow-left-long" />
ACHIVEMENTS
<i className="fa-regular fa-arrow-right-long" />
</h6>
<h2 className="splt-txt wow">
<AnimatedText text="Let's Get Started We Are" /> <br />
<AnimatedText text="Now Constructing A Dream." />
</h2>
</div>
<p className="mt-3 mt-md-0 wow fadeInUp">
It is a long established fact that a reader will be distracted
the readable content of a page when looking at layout the
point of using lorem the is Ipsum less Xbuild normal
distribution of letters.
</p>
<div className="row">
{counterItems.map((item) => (
<div
key={item.id}
className="col-lg-6 col-md-6 wow fadeInUp"
data-wow-delay={item.delay}
>
<div className="counter-items">
<div className="content">
<div
className="icon "
style={{
display: "flex",
justifyContent: "center",
alignItems: "center",
}}
>
<Image
src={item.iconSrc}
style={{ objectFit: "contain" }}
width={36}
height={36}
alt="icon"
/>
</div>
<h2>
<span className="count">{item.count}</span>
{item.suffix}
</h2>
<p>{item.label}</p>
</div>
</div>
</div>
))}
</div>
</div>
</div>
<div
className="col-xxl-4 col-xl-5 col-lg-6 wow fadeInUp"
data-wow-delay=".2s"
>
<div className="achivements-image">
<Image
src="/assets/img/achivements-image.jpg"
width={373}
height={556}
alt="img"
/>
<div className="achivements-image-2 float-bob-y">
<Image
src="/assets/img/achivements-image-2.jpg"
width={238}
height={343}
alt="img"
/>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
);
}

View File

@ -0,0 +1,106 @@
import { newsItems2 } from "@/data/blogs";
import React from "react";
import Link from "next/link";
import Image from "next/image";
import AnimatedText from "@/components/common/AnimatedText";
export default function Blogs() {
return (
<section
className="news-section fix section-padding pt-0 scrollSpySection"
id="blog"
>
<div className="shape-3 float-bob-y">
<Image
src="/assets/img/news/shape-3.png"
width={261}
height={272}
alt="img"
/>
</div>
<div className="shape-4 float-bob-y">
<Image
src="/assets/img/news/shape-4.png"
width={413}
height={232}
alt="img"
/>
</div>
<div className="container">
<div className="section-title-area">
<div className="section-title">
<h6 className="wow fadeInUp">
<i className="fa-regular fa-arrow-left-long" />
Blog &amp; News
<i className="fa-regular fa-arrow-right-long" />
</h6>
<h2 className="splt-txt wow">
<AnimatedText text="Latest News & Blog" />
</h2>
</div>
<Link
href={`/news-grid`}
className="theme-btn wow fadeInUp"
data-wow-delay=".5s"
>
View all post <i className="fa-regular fa-arrow-right" />
</Link>
</div>
<div className="row">
{newsItems2.map((news) => (
<div
key={news.id}
className={`col-xl-4 col-lg-6 col-md-6 wow fadeInUp`}
data-wow-delay={`${news.id * 0.2}s`}
>
<div className={`news-box-items ${news.style}`}>
<div className="news-image">
<Image
src={news.imageSrc}
width={370}
height={198}
alt="news"
/>
<Image
src={news.imageSrc}
width={370}
height={198}
alt="news"
/>
</div>
<div className="news-content">
<ul className="post-list">
<li>{news.category}</li>
<li>{news.date}</li>
</ul>
<h4>
<Link href={`/news-details/${news.id}`}>{news.title}</Link>
</h4>
<div className="author-items">
<div className="author-info">
<Image
src={news.authorImgSrc}
width={40}
height={40}
alt="author"
/>
<div className="content">
<h6>Admin</h6>
<p>{news.authorName}</p>
</div>
</div>
<Link
href={`/news-details/${news.id}`}
className="link-btn"
>
Read More <i className="fa-solid fa-arrow-right" />
</Link>
</div>
</div>
</div>
</div>
))}
</div>
</div>
</section>
);
}

View File

@ -0,0 +1,41 @@
import React from "react";
import Link from "next/link";
import Image from "next/image";
import AnimatedText from "@/components/common/AnimatedText";
export default function Cta() {
return (
<>
<section
className="cta-section-2 bg-cover fix"
style={{ backgroundImage: 'url("/assets/img/cta-bg-2.jpg")' }}
>
<div className="container">
<div className="cta-banner-wrapper-2">
<div className="cta-content">
<h2 className="splt-txt wow">
<AnimatedText text="Do You Have Any Questions" /> <br />
<AnimatedText text="About the Project Plan?" />
</h2>
<Link
href={`/contact`}
className="theme-btn wow fadeInUp"
data-wow-delay=".4s"
>
GET IN TOUCH
<i className="fa-regular fa-arrow-right" />
</Link>
</div>
<div className="cta-image wow fadeInUp" data-wow-delay=".3s">
<Image
src="/assets/img/engineer-holding.png"
width={410}
height={424}
alt="img"
/>
</div>
</div>
</div>
</section>{" "}
</>
);
}

View File

@ -0,0 +1,87 @@
"use client";
import React, { useState } from "react";
import Link from "next/link";
import AnimatedText from "@/components/common/AnimatedText";
import Image from "next/image";
import ModalVideo from "react-modal-video";
export default function Hero() {
const [isOpen, setOpen] = useState(false);
return (
<>
<section
className="hero-section hero-2 bg-cover"
style={{ backgroundImage: 'url("/assets/img/hero/hero-bg.jpg")' }}
>
<div className="hero-image wow fadeInUp" data-wow-delay=".3s">
<Image
src="/assets/img/hero/hero-1.png"
width={653}
height={653}
alt="img"
/>
</div>
<div className="hero-image-2 wow fadeInUp" data-wow-delay=".7s">
<Image
src="/assets/img/hero/hero-2.png"
width={653}
height={653}
alt="img"
/>
<div className="video-box">
<div className="video-items">
<a
onClick={() => setOpen(true)}
className="video-btn video-popup"
>
<i className="fas fa-play" />
</a>
<a
onClick={() => setOpen(true)}
className="video-text video-popup"
>
play now
</a>
</div>
</div>
</div>
<div className="container">
<div className="hero-content">
<div className="row g-4">
<div className="col-xxl-8 wow fadeInUp" data-wow-delay=".5s">
<h1 className="splt-txt wow">
<AnimatedText text="Building Your Visions Creating" />{" "}
<b>
<AnimatedText text="Reality" />{" "}
</b>
</h1>
</div>
</div>
</div>
<div className="hero-text">
<p className="wow fadeInUp" data-wow-delay=".3s">
It is a long established fact that a reader will be distracted the
readable content of a page when looking at layout the point of
using lorem the is Ipsum less normal distribution of letters.
</p>
<Link
href={`/about`}
className="theme-btn bg-white wow fadeInUp"
data-wow-delay=".5s"
>
Explore More
<i className="fa-regular fa-arrow-right" />
</Link>
</div>
</div>
</section>{" "}
<ModalVideo
channel="youtube"
youtube={{ mute: 0, autoplay: 0 }}
isOpen={isOpen}
videoId="Cn4G2lZ_g2I"
onClose={() => setOpen(false)}
/>{" "}
</>
);
}

View File

@ -0,0 +1,89 @@
import { pricingPlans } from "@/data/pricing";
import React from "react";
import Link from "next/link";
import AnimatedText from "@/components/common/AnimatedText";
import Image from "next/image";
export default function Pricing({ shadow = false }) {
return (
<>
<div className="container">
<div className="section-title text-center">
<h6 className="wow fadeInUp">
<i className="fa-regular fa-arrow-left-long" />
pricing Plans
<i className="fa-regular fa-arrow-right-long" />
</h6>
<h2 className="splt-txt wow">
<AnimatedText text="Our Affordable Price" />
</h2>
</div>
<div className="row">
{pricingPlans.map((plan, index) => (
<div
key={index}
className={`col-xl-4 col-lg-6 col-md-6 wow fadeInUp ${
plan.active ? "active" : ""
}`}
data-wow-delay={plan.delay}
>
<div
className={`pricing-card-items ${plan.active ? "active" : ""} ${
shadow ? "box-shadow" : ""
} `}
>
{plan.active && (
<div className="tag-img">
<Image
src="/assets/img/tag.png"
width={94}
height={98}
alt="img"
/>
</div>
)}
<div className="pricing-shape">
<Image
src="/assets/img/pricing-shape.png"
width={288}
height={485}
alt="img"
/>
</div>
<div className="pricing-header">
<h3>{plan.title}</h3>
<h2>
{plan.price}/<span>{plan.frequency}</span>
</h2>
</div>
<ul className="pricing-list">
{plan.features.map((feature, i) => (
<li
key={i}
className={feature.available === false ? "style-2" : ""}
>
<i
className={`fa-solid ${
feature.available === false ? "fa-xmark" : "fa-check"
}`}
></i>
{typeof feature === "string" ? feature : feature.feature}
</li>
))}
</ul>
<div className="header-button">
<Link
href="/pricing"
className={`theme-btn ${plan.active ? "" : "style-2"}`}
>
<span></span>choose plan
<i className="fa-regular fa-arrow-right"></i>
</Link>
</div>
</div>
</div>
))}
</div>
</div>
</>
);
}

View File

@ -0,0 +1,101 @@
"use client";
import { projectItems } from "@/data/projects";
import { Autoplay, Pagination } from "swiper/modules";
import { Swiper, SwiperSlide } from "swiper/react";
import AnimatedText from "@/components/common/AnimatedText";
import Link from "next/link";
import Image from "next/image";
export default function Projects() {
const swiperOptions = {
spaceBetween: 30,
speed: 2000,
loop: true,
centeredSlides: true,
autoplay: {
delay: 2000,
disableOnInteraction: false,
},
modules: [Autoplay, Pagination],
pagination: {
el: ".project-dot",
},
breakpoints: {
1199: {
slidesPerView: 3,
},
991: {
slidesPerView: 2,
},
767: {
slidesPerView: 2,
},
575: {
slidesPerView: 1,
},
0: {
slidesPerView: 1,
},
},
};
return (
<section
className="project-section section-padding pt-0 fix scrollSpySection"
id="projects"
>
<div className="container">
<div className="section-title-area">
<div className="section-title">
<h6 className="wow fadeInUp">
<i className="fa-regular fa-arrow-left-long" />
latest project gallery
<i className="fa-regular fa-arrow-right-long" />
</h6>
<h2 className="splt-txt wow">
<AnimatedText text="Explore Our Project" />
</h2>
</div>
<Link
href={`/project`}
className="theme-btn wow fadeInUp"
data-wow-delay=".4s"
>
View all Projects <i className="fa-regular fa-arrow-right" />
</Link>
</div>
</div>
<div className="project-wrapper-2">
<Swiper {...swiperOptions} className="swiper project-slider">
{projectItems.map((item) => (
<SwiperSlide key={item.id} className="swiper-slide">
<div className="project-thumb">
<Image
src={item.imgSrc}
width={850}
height={580}
alt="Project"
/>
<div className="project-content">
<div className="content">
<h3>
<Link href={`/project-details/${item.id}`}>
{item.title}
</Link>
</h3>
<span>
<i className="fa-sharp fa-solid fa-location-dot" />{" "}
{item.location}
</span>
</div>
<h2 className="number">{item.number}</h2>
</div>
</div>
</SwiperSlide>
))}
<div className="project-dot" />
</Swiper>
</div>
</section>
);
}

View File

@ -0,0 +1,142 @@
"use client";
import { serviceItems2 } from "@/data/services";
import { Autoplay, Navigation, Pagination } from "swiper/modules";
import { Swiper, SwiperSlide } from "swiper/react";
import Link from "next/link";
import Image from "next/image";
import AnimatedText from "@/components/common/AnimatedText";
export default function Services() {
const swiperOptions = {
spaceBetween: 30,
speed: 2000,
loop: true,
autoplay: {
delay: 2000,
disableOnInteraction: false,
},
modules: [Autoplay, Navigation, Pagination],
pagination: {
el: ".service-dot",
},
navigation: {
prevEl: ".snbp3",
nextEl: ".snbn3",
},
breakpoints: {
1399: {
slidesPerView: 4,
},
1199: {
slidesPerView: 3,
},
991: {
slidesPerView: 2,
},
767: {
slidesPerView: 2,
},
575: {
slidesPerView: 1,
},
0: {
slidesPerView: 1,
},
},
};
return (
<section
id="services"
className="service-section fix section-padding section-bg scrollSpySection"
>
<div className="bg-shape">
<Image
src="/assets/img/service/bg-shape.png"
width={1920}
height={852}
alt="img"
/>
</div>
<div className="container">
<div className="section-title text-center">
<h6 className="wow fadeInUp">
<i className="fa-regular fa-arrow-left-long" />
quality Services
<i className="fa-regular fa-arrow-right-long" />
</h6>
<h2 className="text-white splt-txt wow">
<AnimatedText text="Best Of Our High Quality" /> <br />
<AnimatedText text="Constriction" />
</h2>
</div>
</div>
<div className="container-fluid">
<Swiper {...swiperOptions} className="swiper service-slider-2">
{serviceItems2.map((item) => (
<SwiperSlide key={item.id} className="swiper-slide">
<div className="service-card-items">
<div className="service-image">
<Image
src={item.serviceImage}
width={370}
height={367}
alt="Service"
/>
</div>
<div className="bar-shape">
<Image
src={item.barShape}
width={290}
height={118}
alt="Bar Shape"
/>
</div>
<div className="icon">
<Image src={item.icon} width={40} height={40} alt="Icon" />
</div>
<div className="content">
<h3>
<Link href={`/service-details/${item.id}`}>
{item.title}
</Link>
</h3>
<p>{item.description}</p>
<Link
href={`/service-details/${item.id}`}
className="link-btn"
>
Explore More <i className="fa-solid fa-arrow-right" />
</Link>
</div>
<div className="items-shape">
<Image
src={item.itemsShape}
width={370}
height={178}
alt="Items Shape"
/>
</div>
</div>
</SwiperSlide>
))}
<div className="swiper-dot mt-5">
<div className="dot" />
</div>
</Swiper>
</div>
<div className="container">
<div className="service-pagi-items">
<div className="service-dot" />
<div className="array-buttons">
<button className="array-prev snbp3">
<i className="fa-solid fa-arrow-left-long" />
</button>
<button className="array-next snbn3">
<i className="fa-solid fa-arrow-right-long" />
</button>
</div>
</div>
</div>
</section>
);
}

View File

@ -0,0 +1,82 @@
import { teamMembers2 } from "@/data/team";
import React from "react";
import Link from "next/link";
import Image from "next/image";
import AnimatedText from "@/components/common/AnimatedText";
export default function Team() {
return (
<section
className="team-section section-padding pt-0 scrollSpySection"
id="team"
>
<div className="shape-1 float-bob-y">
<Image
src="/assets/img/team/shape-1.png"
width={161}
height={250}
alt="img"
/>
</div>
<div className="shape-2">
<Image
src="/assets/img/team/shape-2.png"
width={352}
height={428}
alt="img"
/>
</div>
<div className="container">
<div className="section-title text-center">
<h6 className="wow fadeInUp">
<i className="fa-regular fa-arrow-left-long" />
our team members
<i className="fa-regular fa-arrow-right-long" />
</h6>
<h2 className="splt-txt wow">
<AnimatedText text=" Our Professional Team" />
</h2>
</div>
<div className="row">
{teamMembers2.map((member) => (
<div
key={member.id}
className={`col-xl-3 col-lg-4 col-md-6 col-sm-6 wow fadeInUp${
member.active ? " active" : ""
}`}
data-wow-delay={member.delay}
>
<div className="team-box-items">
<div className="social-icon d-grid align-items-center">
{member.socials.map((link, index) => (
<a key={index} href={link.href}>
<i className={link.iconClass} />
</a>
))}
</div>
<div className="team-image">
<Image
src={member.image}
width={240}
height={288}
alt="Team"
/>
</div>
<div className="team-content">
<h5>
<Link href={`/team-details/${member.id}`}>
{member.name}
</Link>
</h5>
<p>{member.role}</p>
<a href="team-details" className="icon">
<i className="fa-solid fa-link" />
</a>
</div>
</div>
</div>
))}
</div>
</div>
</section>
);
}

View File

@ -0,0 +1,105 @@
"use client";
import { testimonials2 } from "@/data/testimonials";
import { Autoplay, Navigation } from "swiper/modules";
import { Swiper, SwiperSlide } from "swiper/react";
import Image from "next/image";
import AnimatedText from "@/components/common/AnimatedText";
export default function Testimonials() {
const swiperOptions = {
spaceBetween: 30,
speed: 2000,
loop: true,
autoplay: {
delay: 2000,
disableOnInteraction: false,
},
modules: [Autoplay, Navigation],
navigation: {
nextEl: ".snbp4",
prevEl: ".snbn4",
},
breakpoints: {
991: {
slidesPerView: 2,
},
767: {
slidesPerView: 1,
},
575: {
slidesPerView: 1,
},
0: {
slidesPerView: 1,
},
},
};
return (
<section className="testimonial-section-2 fix section-padding">
<div className="container">
<div className="section-title text-center">
<h6 className="wow fadeInUp">
<i className="fa-regular fa-arrow-left-long" />
testimonial
<i className="fa-regular fa-arrow-right-long" />
</h6>
<h2 className="splt-txt wow">
<AnimatedText text="What Our Client Say" />
</h2>
</div>
<div className="array-button">
<button className="array-prev snbp4">
<i className="fa-solid fa-arrow-left-long" />
</button>
<button className="array-next snbn4">
<i className="fa-solid fa-arrow-right-long" />
</button>
</div>
<Swiper {...swiperOptions} className="swiper testimonial-slider-2">
{testimonials2.map((testimonial, i) => (
<SwiperSlide key={i} className="swiper-slide">
<div className={`testimonial-card-items ${testimonial.style}`}>
<div className="shape-img">
<Image
src={testimonial.shapeImgSrc}
width={110}
height={107}
alt="shape"
/>
</div>
<p>{testimonial.text}</p>
<div className="client-info-items">
<div className="client-info">
<Image
src={testimonial.clientImgSrc}
width={100}
height={100}
alt="client"
/>
<div className="content">
<h4>{testimonial.clientName}</h4>
<span>{testimonial.clientRole}</span>
<div className="star">
{Array(5)
.fill(0)
.map((_, index) => (
<i className="fa-solid fa-star" key={index} />
))}
</div>
</div>
</div>
<Image
src={testimonial.logoSrc}
width={95}
height={28}
style={{ height: "fit-content" }}
alt="logo"
/>
</div>
</div>
</SwiperSlide>
))}
</Swiper>
</div>
</section>
);
}

View File

@ -0,0 +1,165 @@
import React from "react";
import Image from "next/image";
import AnimatedText from "@/components/common/AnimatedText";
export default function ProjectDetails({ projectItem }) {
return (
<section className="project-details-section fix section-padding">
<div className="container">
<div className="project-details-wrapper">
<div className="row g-4">
<div className="col-lg-12">
<div className="project-details-items">
<div className="details-image">
<Image
src="/assets/img/project/details-1.jpg"
width={1170}
height={556}
alt="img"
/>
</div>
<div className="project-details-content">
<p className="mb-2">Construction, Architecture</p>
<h2 className="splt-txt wow">
<AnimatedText text={projectItem.title} />
</h2>
<p className="mb-3 mt-3">
There are many variations of passages of Lorem Ipsum
available, but the majority have suffered alteration in some
form, by injected humour, or randomised words which don't
look even slightly believable. If you are going to use a
passage of Lorem Ipsum, you need to be sure there isn't
anything embarrassing hidden in the Xbuild the best company
in the world class middle of text.
</p>
<p className="mb-3">
There are many variations of passages of Lorem Ipsum
available, but the majority have suffered alteration in some
form, by injected humour, or randomised words which don't
look even slightly believable. If you are going to use a
passage of Lorem Ipsum,
</p>
<div className="project-infor-wrapper">
<div className="row g-4">
<div className="col-xl-7">
<h3>
Building Together. Building Stronger Communities
</h3>
<p className="mt-3 mb-3">
There are many variations of passages of Lorem Ipsum
available, but thexyz ud majority have suffered
alteration in some form, by injected humour, or
randomised words which don't look even slightly
believable. If you are going to use a Bulidinnig
</p>
<h3>Project Goal</h3>
<p className="mt-3">
There are many variations of passages of Lorem Ipsum
available, but thexyz ud majority have suffered
alteration in some form, by injected humour,
</p>
<ul className="details-list">
<li>
<i className="fa-solid fa-circle-check" />
Proactively pontificate client-centered
relationships
</li>
<li>
<i className="fa-solid fa-circle-check" />
Release of Letraset sheets containing Lorem Ipsum
</li>
<li>
<i className="fa-solid fa-circle-check" />
Is there a waiting list for desired work to be
started
</li>
<li>
<i className="fa-solid fa-circle-check" />
Release of Letraset sheets containing Lorem Ipsum
</li>
</ul>
<p>
There are many variations of passages of Lorem Ipsum
available, but the majority have suffered alteration
in some form, by injected humour, or randomised words
which don't look even slightly believable.
</p>
</div>
<div className="col-xl-5">
<div className="project-nformation">
<h4>Project Information</h4>
<ul>
<li>
Project Category:
<span>Rubix carabil tower</span>
</li>
<li>
Clients:
<span>David Malan</span>
</li>
<li>
Project Date:
<span>25 June, 2024</span>
</li>
<li>
Avenue End Date:
<span>08 July, 2024</span>
</li>
<li>
Locations:
<span>NewYork 4648 Rocky, USA</span>
</li>
<li className="pb-0">
Price After:
<span>$10 Million</span>
</li>
</ul>
</div>
</div>
</div>
</div>
<h3 className="mt-3 mb-3">Project Summery</h3>
<div className="row g-4">
<div className="col-md-6">
<p className="mb-4">
There are many variations of passages of Lorem Ipsum
available, but the majority have suffered alteration in
some form, by injected humour, or randomised words which
don't look even slightly believable. If you are going to
use a passage of Lorem Ipsum,
</p>
<div className="details-image">
<Image
src="/assets/img/project/details-2.jpg"
alt="img"
width={570}
height={309}
/>
</div>
</div>
<div className="col-md-6">
<p className="mb-4">
There are many variations of passages of Lorem Ipsum
available, but the majority have suffered alteration in
some form, by injected humour, or randomised words which
don't look even slightly believable. If you are going to
use a passage of Lorem Ipsum,
</p>
<div className="details-image">
<Image
src="/assets/img/project/details-3.jpg"
alt="img"
width={570}
height={309}
/>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
);
}

View File

@ -0,0 +1,51 @@
import { projects } from "@/data/projects";
import React from "react";
import Image from "next/image";
import Link from "next/link";
export default function Projects() {
return (
<section className="project-section section-padding fix">
<div className="container">
<div className="row g-4">
{projects.map((project) => (
<div
key={project.id}
className="col-xl-4 col-lg-6 col-md-6 wow fadeInUp"
data-wow-delay={project.delay}
>
<div className="project-card-items">
<div className="project-image">
{project.images.map((image, index) => (
<Image
key={index}
width={370}
height={331}
src={image}
alt="img"
/>
))}
</div>
<div className="project-content">
<h3>
<Link href={`/project-details/${project.id}`}>
{project.title}
</Link>
</h3>
<p>{project.description}</p>
</div>
<div className="shape-img">
<Image
src="/assets/img/project/shape.png"
width={57}
height={54}
alt="img"
/>
</div>
</div>
</div>
))}
</div>
</div>
</section>
);
}

View File

@ -0,0 +1,238 @@
"use client";
import Link from "next/link";
import Image from "next/image";
import { services2 } from "@/data/services";
export default function ServiceDetails({ serviceItem }) {
return (
<section className="service-details-section section-padding">
<div className="container">
<div className="service-details-wrapper">
<div className="row g-4">
<div className="col-12 col-lg-8">
<div className="service-details-image">
<Image
src="/assets/img/service/details-1.jpg"
width={740}
height={336}
alt="img"
/>
</div>
<div className="service-details-content">
<h2>{serviceItem.title}</h2>
<p>
There are many variations of passages of Lorem Ipsum
available, but the majority have suffered alteration in some
form, by injected humour, or randomised words which don't look
even slightly believable. If you are going to use a passage of
Lorem Ipsum, you need to be sure there isn't anything
embarrassing hidden in the middle of text.
</p>
<p className="mt-4 mb-4">
There are many variations of passages of Lorem Ipsum
available, but the majority have suffered alteration in some
form, by injected humour, or randomised words which don't look
even slightly believable. If you are going to use a passage of
Lorem Ipsum,
</p>
<div className="row g-4">
<div className="col-lg-7">
<div className="service-details-image">
<Image
src="/assets/img/service/details-2.jpg"
width={413}
height={265}
alt="img"
/>
</div>
</div>
<div className="col-lg-5">
<div className="content">
<h3>Services Benefits:</h3>
<p className="mt-2 mb-2">
There are many Xbuild h variations of passages of Lorem
Ipsum available,
</p>
<p>
Xbuild h variations of be passages of Lorem Ipsum
available,
</p>
</div>
<ul className="details-list">
<li>
<i className="fa-solid fa-circle-check" />
We use the latest diagnostic equipment
</li>
<li>
<i className="fa-solid fa-circle-check" />
Automotive service our clients receive
</li>
<li>
<i className="fa-solid fa-circle-check" />
We use the latest diagnostic equipment
</li>
</ul>
</div>
</div>
<h4>3 Simple Steps to Process</h4>
<p className="mt-3">
There are many variations of passages of Lorem Ipsum
available, but the majority have suffered alteration in some
form, by injected humour, or randomised words which don't look
even slightly believable. If you are going to use a passage of
Lorem Ipsum,
</p>
<div className="row g-4 mt-2">
<div className="col-xl-4 col-lg-6 col-md-6">
<div className="service-details-box">
<div className="icon">
<Image
src="/assets/img/icon/15.svg"
width={28}
height={28}
alt="img"
/>
<h5>Planning</h5>
</div>
<p>
There are many Xbuild a variations of passages of Lorem
Ipsum
</p>
</div>
</div>
<div className="col-xl-4 col-lg-6 col-md-6">
<div className="service-details-box">
<div className="icon">
<Image
src="/assets/img/icon/16.svg"
width={36}
height={28}
alt="img"
/>
<h5>Design</h5>
</div>
<p>
There are many Xbuild a variations of passages of Lorem
Ipsum
</p>
</div>
</div>
<div className="col-xl-4 col-lg-6 col-md-6">
<div className="service-details-box">
<div className="icon">
<Image
src="/assets/img/icon/17.svg"
width={28}
height={28}
alt="img"
/>
<h5>Get Paid</h5>
</div>
<p>
There are many Xbuild a variations of passages of Lorem
Ipsum
</p>
</div>
</div>
</div>
<p className="mt-1 pt-4">
There are many variations of passages of Lorem Ipsum
available, but the majority have suffered alteration in some
form, by injected humour, or randomised words which don't look
even slightly believable. If you are going to use a passage of
Lorem Ipsum,
</p>
</div>
</div>
<div className="col-12 col-lg-4">
<div className="main-sidebar">
<div className="single-sidebar-widget">
<div className="search-widget">
<form onSubmit={(e) => e.preventDefault()}>
<input type="text" placeholder="Search" />
<button type="submit">
<i className="fa-solid fa-magnifying-glass" />
</button>
</form>
</div>
</div>
<div className="single-sidebar-widget">
<div className="wid-title">
<h3>Categories</h3>
</div>
<div className="news-widget-categories">
<ul>
{services2.map((elm, i) => (
<li key={i}>
<Link href={`/service-details/${elm.id}`}>
{elm.title}
</Link>
<span>
<i className="fa-regular fa-arrow-right-long" />
</span>
</li>
))}
</ul>
</div>
</div>
<div className="single-sidebar-widget">
<div className="wid-title">
<h3>Download</h3>
</div>
<div className="brochures-download-items">
<div className="brochures-items">
<div className="icon">
<i className="fal fa-file-pdf" />
</div>
<div className="content">
<h5>Our Brochures</h5>
<p>Download</p>
</div>
</div>
<Link href={`#`} className="download-btn">
<i className="fa-light fa-download" />
</Link>
</div>
<div className="brochures-download-items">
<div className="brochures-items">
<div className="icon">
<i className="fal fa-file-pdf" />
</div>
<div className="content">
<h5>Company Details</h5>
<p>Download</p>
</div>
</div>
<Link href={`#`} className="download-btn active">
<i className="fa-light fa-download" />
</Link>
</div>
</div>
<div className="service-sidebar-widget">
<div
className="contact-bg text-center bg-cover"
style={{
backgroundImage:
'url("/assets/img/service/contact-bg.jpg")',
}}
>
<p>Do You Need Help? We're Here to Support You</p>
<Image
src="/assets/img/service/logo.png"
width={149}
height={64}
alt="img"
/>
<Link href={`/contact`} className="theme-btn w-100">
Contact us now
<i className="fa-regular fa-arrow-right" />
</Link>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
);
}

View File

@ -0,0 +1,75 @@
import React from "react";
import Pagination from "../common/Pagination";
import { services } from "@/data/services";
import Link from "next/link";
import Image from "next/image";
import AnimatedText from "@/components/common/AnimatedText";
export default function Services() {
return (
<section className="service-section fix section-padding">
<div className="container">
<div className="section-title text-center">
<h6 className="wow fadeInUp">
<i className="fa-regular fa-arrow-left-long"></i>WHAT WE OFFER
<i className="fa-regular fa-arrow-right-long"></i>
</h6>
<h2 className="splt-txt wow">
<AnimatedText text="Create The Building" /> <br />
<AnimatedText text="You Want Here" />
</h2>
</div>
<div className="row">
{services.map((service) => (
<div
key={service.id}
className="col-xl-4 col-lg-6 col-md-6 wow fadeInUp"
data-wow-delay={service.delay}
>
<div className="service-box-items items-bg">
<div className="service-thumb">
<Image
src={service.image}
width={346}
height={236}
alt="img"
/>
<div className="icon">
<Image
src={service.icon}
width={32}
height={32}
alt="img"
/>
</div>
</div>
<div className="service-content">
<h2 className="number">{service.number}</h2>
<h3>
<Link href={`/service-details/${service.id}`}>
{service.title}
</Link>
</h3>
<p>{service.description}</p>
<Link
href={`/service-details/${service.id}`}
className="link-btn"
>
Explore More <i className="fa-solid fa-arrow-right" />
</Link>
</div>
</div>
</div>
))}
</div>
<div
className="page-nav-wrap pt-5 text-center wow fadeInUp"
data-wow-delay=".3s"
>
<ul>
<Pagination />
</ul>
</div>
</div>
</section>
);
}

65
components/team/Team.jsx Normal file
View File

@ -0,0 +1,65 @@
import { teamMembers3 } from "@/data/team";
import React from "react";
import Image from "next/image";
import AnimatedText from "@/components/common/AnimatedText";
import Link from "next/link";
export default function Team() {
return (
<section className="team-section fix section-padding">
<div className="container">
<div className="section-title text-center">
<h6 className="wow fadeInUp">
<i className="fa-regular fa-arrow-left-long" />
our team members
<i className="fa-regular fa-arrow-right-long" />
</h6>
<h2 className="splt-txt wow">
<AnimatedText text="Our Professional Team" />
</h2>
</div>
<div className="row">
{teamMembers3.map((member) => (
<div
key={member.id}
className={`col-xl-3 col-lg-4 col-md-6 col-sm-6 wow fadeInUp${
member.delay ? "" : ""
}`}
data-wow-delay={member.delay}
>
<div
className={`team-box-items${member.isActive ? " active" : ""}`}
>
<div className="social-icon d-grid align-items-center">
{member.socials.map((link, index) => (
<a key={index} href={link.href}>
<i className={link.iconClass} />
</a>
))}
</div>
<div className="team-image">
<Image
src={member.image}
width={240}
height={288}
alt="img"
/>
</div>
<div className="team-content">
<h5>
<Link href={`/team-details/${member.id}`}>
{member.name}
</Link>
</h5>
<p>{member.role}</p>
<a href="team-details" className="icon">
<i className="fa-solid fa-link" />
</a>
</div>
</div>
</div>
))}
</div>
</div>
</section>
);
}

View File

@ -0,0 +1,194 @@
import React from "react";
import Link from "next/link";
import Image from "next/image";
import AnimatedText from "@/components/common/AnimatedText";
export default function TeamDetails({ teamMember }) {
return (
<section className="team-details-section fix section-padding">
<div className="container">
<div className="team-details-wrapper">
<div className="team-details-items">
<div className="details-image">
<Image
src={teamMember.image}
width={370}
height={466}
alt="img"
/>
</div>
<div className="team-details-content">
<div className="details-header">
<h3>{teamMember.name}</h3>
<span>{teamMember.role}</span>
</div>
<p className="cont">
Prior to joining company, she spent 20+ years at Inmosys, where
he held a wide range of global leadership roles, from services
to products, and across operations and sales. Most recently, he
was SVP &amp; Global Head of the Manufacturing business..
</p>
<h6 className="team-details-info">
<span className="text-title">Phone Number:</span>
<span className="text-data">
<a href="tel:+915690036420">+91 5698 0036 420</a>
</span>
</h6>
<h6 className="team-details-info">
<span className="text-title">Email:</span>
<span className="text-data">
<a href="mailto:example@gmail.com">example@gmail.com</a>
</span>
</h6>
<h6 className="team-details-info">
<span className="text-title">Website:</span>
<span className="text-data">
<Link href={`#`}>http://example.com/example</Link>
</span>
</h6>
<h6 className="team-details-info">
<span className="text-title">Experience:</span>
<span className="text-data">15 Years</span>
</h6>
<h6 className="team-details-info">
<span className="text-title">Availability:</span>
<span className="text-data">Full Time Employee</span>
</h6>
<div className="social-icon d-flex align-items-center">
{teamMember.socials.map((link, index) => (
<a key={index} href={link.href}>
<i className={link.iconClass} />
</a>
))}
</div>
</div>
</div>
<div className="personal-skills-items">
<div className="row g-5">
<div className="col-lg-5">
<h3 className="mb-3 splt-txt wow">
<AnimatedText text="About Me" />
</h3>
<p>
There are many variations of passages of x ohyt Lorem Ipsum
available, but the majority havehbith suffered x alteration in
some form, by injected humour, or randomised wo zyx words
which don't look even slightly believable. If you are going to
use a passage of Lorem Ipsum,
</p>
<p className="mt-4">
There are many variations of passages of Lorem Ipsum
available, but the majority have suffered alteration in some
form, by injected humour,
</p>
</div>
<div className="col-lg-7">
<h3 className="mb-3 splt-txt wow">
<AnimatedText text="Personal skills" />
</h3>
<p>
There are many variations of passages of Lorem Ipsum
available, but the majority have suffered alteration in some
form, by injected humour, or randomised words which don't look
even slightly believable. If you are going to use a passage
</p>
<div className="skill-feature-items">
<div className="skill-feature">
<h3 className="box-title">Architecture</h3>
<div className="progress">
<div
className="progress-bar"
style={{
width: "85%",
animation:
"2.6s ease 0s 1 normal none running animate-positive",
opacity: 1,
}}
>
<div className="progress-value">
<span className="counter-number2">85</span>%
</div>
</div>
</div>
</div>
<div className="skill-feature">
<h3 className="box-title">Construction</h3>
<div className="progress">
<div
className="progress-bar"
style={{
width: "90%",
animation:
"2.6s ease 0s 1 normal none running animate-positive",
opacity: 1,
}}
>
<div className="progress-value">
<span className="counter-number2">90</span>%
</div>
</div>
</div>
</div>
<div className="skill-feature">
<h3 className="box-title">Interior Design</h3>
<div className="progress">
<div
className="progress-bar"
style={{
width: "75%",
animation:
"2.6s ease 0s 1 normal none running animate-positive",
opacity: 1,
}}
>
<div className="progress-value">
<span className="counter-number2">75</span>%
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div className="team-gallery-items">
<h3 className="mb-md-3 splt-txt wow">
<AnimatedText text="My Work Gallery" />
</h3>
<div className="row">
<div className="col-xl-4 col-lg-6 col-md-6">
<div className="gallery-thumb">
<Image
src="/assets/img/team/gallery-1.jpg"
width={370}
height={424}
alt="img"
/>
</div>
</div>
<div className="col-xl-4 col-lg-6 col-md-6">
<div className="gallery-thumb">
<Image
src="/assets/img/team/gallery-2.jpg"
width={370}
height={424}
alt="img"
/>
</div>
</div>
<div className="col-xl-4 col-lg-6 col-md-6">
<div className="gallery-thumb">
<Image
src="/assets/img/team/gallery-3.jpg"
width={370}
height={424}
alt="img"
/>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
);
}

229
data/blogs.js Normal file
View File

@ -0,0 +1,229 @@
export const newsItems = [
{
id: 1,
imgSrc: "/assets/img/news/02.jpg",
title: "Supervisor Disapproved of Latest Work.",
description: "Pellentesque vitae consectetur ante \nInteger non eros...",
author: "By Admin",
category: "Maintenance",
delay: ".2s",
},
{
id: 2,
imgSrc: "/assets/img/news/03.jpg",
title: "Supervisor Disapproved of Latest Work.",
description: "Pellentesque vitae consectetur ante \nInteger non eros...",
author: "By Admin",
category: "Maintenance",
delay: ".4s",
},
];
export const newsImageItems = [
{
id: 3,
backgroundImage: "/assets/img/news/01.jpg",
title: "Helping Companies in Their <br />Green Transition",
description:
"Pellentesque vitae consectetur ante Integer non eros id quam dapibus tincidunt non sed dolor Praesent maximus ...",
author: "By Admin",
category: "Maintenance",
},
];
export const newsItems2 = [
{
id: 4,
imageSrc: "/assets/img/news/04.jpg",
category: "Construction",
date: "07 July 2024",
title: "Latest Work Was Disapproved by the Supervisor.",
authorImgSrc: "/assets/img/news/author-1.png",
authorName: "Guy Hawkins",
style: "",
},
{
id: 5,
imageSrc: "/assets/img/news/05.jpg",
category: "Building",
date: "07 July 2024",
title: "Manager Disapproved of the Most Recent Work.",
authorImgSrc: "/assets/img/news/author-2.png",
authorName: "Guy Hawkins",
style: "active",
},
{
id: 6,
imageSrc: "/assets/img/news/06.jpg",
category: "Industry",
date: "07 July 2024",
title: "Manager Found Latest Work Unsatisfactory.",
authorImgSrc: "/assets/img/news/author-3.png",
authorName: "Guy Hawkins",
style: "",
},
];
export const newsItems3 = [
{
id: 7,
images: ["/assets/img/news/04.jpg", "/assets/img/news/04.jpg"],
category: "Construction",
date: "07 July 2024",
title: "Latest Work Was Disapproved by the Supervisor.",
author: {
name: "Guy Hawkins",
image: "/assets/img/news/author-1.png",
},
delay: ".2s",
},
{
id: 8,
images: ["/assets/img/news/05.jpg", "/assets/img/news/05.jpg"],
category: "Building",
date: "07 July 2024",
title: "Manager Disapproved of the Most Recent Work.",
author: {
name: "Guy Hawkins",
image: "/assets/img/news/author-2.png",
},
delay: ".4s",
active: true,
},
{
id: 9,
images: ["/assets/img/news/06.jpg", "/assets/img/news/06.jpg"],
category: "Industry",
date: "07 July 2024",
title: "Manager Found Latest Work Unsatisfactory.",
author: {
name: "Guy Hawkins",
image: "/assets/img/news/author-3.png",
},
delay: ".6s",
},
{
id: 10,
images: ["/assets/img/news/07.jpg", "/assets/img/news/07.jpg"],
category: "Industry",
date: "07 July 2024",
title: "Manager Found Latest Work Unsatisfactory.",
author: {
name: "Guy Hawkins",
image: "/assets/img/news/author-3.png",
},
delay: ".2s",
},
{
id: 11,
images: ["/assets/img/news/08.jpg", "/assets/img/news/08.jpg"],
category: "Industry",
date: "07 July 2024",
title: "Manager Found Latest Work Unsatisfactory.",
author: {
name: "Guy Hawkins",
image: "/assets/img/news/author-3.png",
},
delay: ".4s",
},
{
id: 12,
images: ["/assets/img/news/09.jpg", "/assets/img/news/09.jpg"],
category: "Industry",
date: "07 July 2024",
title: "Manager Found Latest Work Unsatisfactory.",
author: {
name: "Guy Hawkins",
image: "/assets/img/news/author-3.png",
},
delay: ".6s",
},
];
export const newsItems4 = [
{
id: 13,
type: "standard",
imageSrc: "/assets/img/news/post-1.jpg",
title: "Attentive was born in 2015 help sales teams",
date: "09 July 2024",
category: "Building",
content:
"There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of xyz Lorem Ipsum, you need to be sure there isn't anything embarrassing",
},
{
id: 14,
type: "slider",
swiperSlides: [
"/assets/img/news/post-1.jpg",
"/assets/img/news/post-2.jpg",
"/assets/img/news/post-3.jpg",
],
title: "Rules for Security on Construction Sites",
date: "09 July 2024",
category: "Building",
content:
"There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of xyz Lorem Ipsum, you need to be sure there isn't anything embarrassing",
},
{
id: 15,
type: "video",
imageSrc: "/assets/img/news/post-3.jpg",
title: "Norms for Security on Construction Sites",
date: "09 July 2024",
category: "Building",
content:
"There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of xyz Lorem Ipsum, you need to be sure there isn't anything embarrassing",
video: true,
},
];
export const recentItems = [
{
id: 16,
imageSrc: "/assets/img/news/pp2.jpg",
date: "09 July 2024",
title: "The Beast Group <br /> Present And",
},
{
id: 17,
imageSrc: "/assets/img/news/pp3.jpg",
date: "09 July 2024",
title: "Construction Site <br /> Safety Guidelines",
},
{
id: 18,
imageSrc: "/assets/img/news/pp4.jpg",
date: "09 July 2024",
title: "An attractive <br /> construction website",
},
];
export const allNews = [
...newsItems,
...newsImageItems,
...newsItems2,
...newsItems3,
...newsItems4,
...recentItems,
];
export const links = [
{ text: "Building", href: "#" },
{ text: "Construction", href: "#" },
{ text: "Marketing", href: "#" },
{ text: "Design", href: "#" },
];
export const listItems = [
{ text: "Building", link: "#", count: 5 },
{ text: "Construction", link: "#", count: 3 },
{ text: "Factory", link: "#", count: 4, isActive: true },
{ text: "Industry", link: "#", count: 2 },
{ text: "Real Estate", link: "#", count: 3 },
];
export const socialLinks = [
{ href: "#", iconClass: "fab fa-facebook-f" },
{ href: "#", iconClass: "fab fa-twitter" },
{ href: "#", iconClass: "fab fa-linkedin-in" },
{ href: "#", iconClass: "fab fa-youtube" },
];

12
data/brands.js Normal file
View File

@ -0,0 +1,12 @@
export const brandLogos = [
"/assets/img/brand/brand-logo.png",
"/assets/img/brand/brand-logo-2.png",
"/assets/img/brand/brand-logo-3.png",
"/assets/img/brand/brand-logo-4.png",
"/assets/img/brand/brand-logo-5.png",
"/assets/img/brand/brand-logo.png",
"/assets/img/brand/brand-logo-2.png",
"/assets/img/brand/brand-logo-3.png",
"/assets/img/brand/brand-logo-4.png",
"/assets/img/brand/brand-logo-5.png",
];

67
data/facts.js Normal file
View File

@ -0,0 +1,67 @@
export const counterItems = [
{
id: 1,
iconSrc: "/assets/img/icon/11.svg",
count: "45",
suffix: "k+",
label: "project Complete",
delay: ".2s",
},
{
id: 2,
iconSrc: "/assets/img/icon/12.svg",
count: "25",
suffix: "k+",
label: "Active On Clients",
delay: ".4s",
},
{
id: 3,
iconSrc: "/assets/img/icon/13.svg",
count: "2.5",
suffix: "+",
label: "Experience Team",
delay: ".2s",
},
{
id: 4,
iconSrc: "/assets/img/icon/14.svg",
count: "2.4",
suffix: "k+",
label: "Winning Awards",
delay: ".4s",
},
];
export const achievements = [
{
id: 1,
icon: "/assets/img/icon/21.svg",
count: "45",
description: "project Complete",
delay: ".2s",
},
{
id: 2,
icon: "/assets/img/icon/22.svg",
count: "25",
description: "Active On Clients",
delay: ".4s",
},
{
id: 3,
icon: "/assets/img/icon/23.svg",
count: "2.5",
description: "Experience Team",
delay: ".2s",
style: "style-2",
},
{
id: 4,
icon: "/assets/img/icon/24.svg",
count: "2.4",
description: "Winning Awards",
delay: ".4s",
style: "style-2",
},
];

42
data/faq.js Normal file
View File

@ -0,0 +1,42 @@
export const faqs = [
{
id: 1,
question: "How long should a business plan be?",
answer:
"It is a long established fact that a reader will be distracted the readable content of a page when looking at layout the point of using lorem the is Ipsum less normal distribution of letters.",
delay: ".1s",
expanded: false,
},
{
id: 2,
question: "What are the different stages of a construction project?",
answer:
"It is a long established fact that a reader will be distracted the readable content of a page when looking at layout the point of using lorem the is Ipsum less normal distribution of letters.",
delay: ".3s",
expanded: true,
},
{
id: 3,
question: "What are the different stages of a construction project?",
answer:
"It is a long established fact that a reader will be distracted the readable content of a page when looking at layout the point of using lorem the is Ipsum less normal distribution of letters.",
delay: ".5s",
expanded: false,
},
{
id: 4,
question: "What are the different stages of a construction project?",
answer:
"It is a long established fact that a reader will be distracted the readable content of a page when looking at layout the point of using lorem the is Ipsum less normal distribution of letters.",
delay: ".6s",
expanded: false,
},
{
id: 5,
question: "What are the different stages of a construction project?",
answer:
"It is a long established fact that a reader will be distracted the readable content of a page when looking at layout the point of using lorem the is Ipsum less normal distribution of letters.",
delay: ".7s",
expanded: false,
},
];

26
data/gallery.js Normal file
View File

@ -0,0 +1,26 @@
export const galleryImages = [
{
href: "/assets/img/footer/gallery-1.jpg",
src: "/assets/img/footer/gallery-1.jpg",
},
{
href: "/assets/img/footer/gallery-2.jpg",
src: "/assets/img/footer/gallery-2.jpg",
},
{
href: "/assets/img/footer/gallery-3.jpg",
src: "/assets/img/footer/gallery-3.jpg",
},
{
href: "/assets/img/footer/gallery-4.jpg",
src: "/assets/img/footer/gallery-4.jpg",
},
{
href: "/assets/img/footer/gallery-5.jpg",
src: "/assets/img/footer/gallery-5.jpg",
},
{
href: "/assets/img/footer/gallery-6.jpg",
src: "/assets/img/footer/gallery-6.jpg",
},
];

103
data/menu.js Normal file
View File

@ -0,0 +1,103 @@
export const menuData = [
{
label: "Home",
href: "#",
iconClass: "fa-regular fa-plus",
className: "has-dropdown active menu-thumb",
submenu: [
{
homeMenuItems: [
{
imageSrc: "/assets/img/header/home-1.jpg",
title: "Home 01",
buttons: [
{ label: "Multi Page", href: "/" },
{ label: "One Page", href: "/home-1-one-page" },
],
},
{
imageSrc: "/assets/img/header/home-2.jpg",
title: "Home 02",
buttons: [
{ label: "Multi Page", href: "/home-2" },
{ label: "One Page", href: "/home-2-one-page" },
],
},
],
},
],
},
{
label: "About Us",
href: "/about",
},
{
label: "Pages",
href: "#",
iconClass: "fa-regular fa-plus",
className: "has-dropdown",
submenu: [
{
label: "Our Team",
href: "#",
iconClass: "fas fa-angle-down",
submenu: [
{ label: "Our Team", href: "/team" },
{ label: "Team Details", href: "/team-details/1" },
],
},
{ label: "Pricing", href: "/pricing" },
{ label: "Faq's", href: "/faq" },
{ label: "404 Page", href: "/404" },
],
},
{
label: "Services",
href: "#",
iconClass: "fa-regular fa-plus",
submenu: [
{ label: "Services", href: "/service" },
{ label: "Service Details", href: "/service-details/1" },
],
},
{
label: "Projects",
href: "#",
iconClass: "fa-regular fa-plus",
submenu: [
{ label: "Projects", href: "/project" },
{ label: "Project Details", href: "/project-details/1" },
],
},
{
label: "Blog",
href: "#",
iconClass: "fa-regular fa-plus",
submenu: [
{ label: "Blog Grid", href: "/news-grid" },
{ label: "Blog Standard", href: "/news" },
{ label: "Blog Details", href: "/news-details/1" },
],
},
{
label: "Contact Us",
href: "/contact",
},
];
export const onepageLinks = [
{ href: "#about", text: "About Us" },
{ href: "#services", text: "Services" },
{ href: "#projects", text: "Projects" },
{ href: "#team", text: "Team" },
{ href: "#blog", text: "Blog" },
{ href: "#contact", text: "Contact" },
];
export const footerLinks = [
{ name: "About Us", href: "/about" },
{ name: "Contact Us", href: "/contact" },
{ name: "Blog & News", href: "/news" },
{ name: "FAQS", href: "/faq" },
{ name: "Login / Register", href: "/contact" },
];

41
data/pricing.js Normal file
View File

@ -0,0 +1,41 @@
export const pricingPlans = [
{
title: "Basic Plan",
price: "$2250",
frequency: "Month",
features: [
"Creative Business Consulting",
"Make a Perfect Corporate",
{ feature: "Powerful Management", available: false },
{ feature: "Consulting Service Provider", available: false },
],
active: false,
delay: ".2s",
},
{
title: "Standard Plan",
price: "$3250",
frequency: "Month",
features: [
"Creative Business Consulting",
"Make a Perfect Corporate",
"Powerful Management",
{ feature: "Consulting Service Provider", available: false },
],
active: true,
delay: ".4s",
},
{
title: "Premium Plan",
price: "$5250",
frequency: "Month",
features: [
"Creative Business Consulting",
"Make a Perfect Corporate",
"Powerful Management",
"Consulting Service Provider",
],
active: false,
delay: ".6s",
},
];

154
data/projects.js Normal file
View File

@ -0,0 +1,154 @@
export const projectItems = [
{
id: 1,
imgSrc: "/assets/img/project/06.jpg",
title: "General Construction",
location: "4648 Rocky, New York",
number: "01",
},
{
id: 2,
imgSrc: "/assets/img/project/07.jpg",
title: "General Construction",
location: "4648 Rocky, New York",
number: "02",
},
{
id: 3,
imgSrc: "/assets/img/project/08.jpg",
title: "General Construction",
location: "4648 Rocky, New York",
number: "03",
},
{
id: 4,
imgSrc: "/assets/img/project/06.jpg",
title: "General Construction",
location: "4648 Rocky, New York",
number: "01",
},
{
id: 5,
imgSrc: "/assets/img/project/07.jpg",
title: "General Construction",
location: "4648 Rocky, New York",
number: "02",
},
{
id: 6,
imgSrc: "/assets/img/project/08.jpg",
title: "General Construction",
location: "4648 Rocky, New York",
number: "03",
},
];
export const projects = [
{
id: 7,
images: ["/assets/img/project/09.jpg", "/assets/img/project/09.jpg"],
title: "General Construction",
description:
"There are many variations of a passages of Lorem Ipsum available.",
delay: ".2s",
},
{
id: 8,
images: ["/assets/img/project/10.jpg", "/assets/img/project/10.jpg"],
title: "Architecture & Building",
description:
"There are many variations of a passages of Lorem Ipsum available.",
delay: ".4s",
},
{
id: 9,
images: ["/assets/img/project/11.jpg", "/assets/img/project/11.jpg"],
title: "Interior Design",
description:
"There are many variations of a passages of Lorem Ipsum available.",
delay: ".6s",
},
{
id: 10,
images: ["/assets/img/project/12.jpg", "/assets/img/project/12.jpg"],
title: "Combine Electricity",
description:
"There are many variations of a passages of Lorem Ipsum available.",
delay: ".2s",
},
{
id: 11,
images: ["/assets/img/project/13.jpg", "/assets/img/project/13.jpg"],
title: "Bridge Trangle Core",
description:
"There are many variations of a passages of Lorem Ipsum available.",
delay: ".4s",
},
{
id: 12,
images: ["/assets/img/project/14.jpg", "/assets/img/project/14.jpg"],
title: "General Construction",
description:
"There are many variations of a passages of Lorem Ipsum available.",
delay: ".6s",
},
{
id: 13,
images: ["/assets/img/project/15.jpg", "/assets/img/project/15.jpg"],
title: "Contemporary Villa",
description:
"There are many variations of a passages of Lorem Ipsum available.",
delay: ".2s",
},
{
id: 14,
images: ["/assets/img/project/16.jpg", "/assets/img/project/16.jpg"],
title: "Rubix Carabil Tower",
description:
"There are many variations of a passages of Lorem Ipsum available.",
delay: ".4s",
},
{
id: 15,
images: ["/assets/img/project/17.jpg", "/assets/img/project/17.jpg"],
title: "Combine Electricity",
description:
"There are many variations of a passages of Lorem Ipsum available.",
delay: ".6s",
},
];
export const projects2 = [
{
id: 16,
title: "Building Renovation",
bgClass: "",
delay: "",
},
{
id: 17,
title: "Building Renovation",
bgClass: "bg-1",
delay: ".2s",
},
{
id: 18,
title: "Building Renovation",
bgClass: "bg-2 active",
delay: ".4s",
},
{
id: 19,
title: "Building Renovation",
bgClass: "bg-3",
delay: ".6s",
},
{
id: 20,
title: "Building Renovation",
bgClass: "bg-4",
delay: ".8s",
},
];
export const allProjects = [...projectItems, ...projects, projects2];

236
data/services.js Normal file
View File

@ -0,0 +1,236 @@
export const serviceItems = [
{
id: 1,
imgSrc: "/assets/img/service/01.jpg",
iconSrc: "/assets/img/icon/01.svg",
number: "01",
title: "Building Construction",
description: "Consectetur Phasellus a odio vel sapien pharetra placerat.",
},
{
id: 2,
imgSrc: "/assets/img/service/02.jpg",
iconSrc: "/assets/img/icon/02.svg",
number: "02",
title: "Architecture Design",
description: "Consectetur Phasellus a odio vel sapien pharetra placerat.",
},
{
id: 3,
imgSrc: "/assets/img/service/03.jpg",
iconSrc: "/assets/img/icon/03.svg",
number: "03",
title: "Building Renovation",
description: "Consectetur Phasellus a odio vel sapien pharetra placerat.",
},
{
id: 4,
imgSrc: "/assets/img/service/04.jpg",
iconSrc: "/assets/img/icon/04.svg",
number: "04",
title: "Quality Materials",
description: "Consectetur Phasellus a odio vel sapien pharetra placerat.",
},
{
id: 5,
imgSrc: "/assets/img/service/01.jpg",
iconSrc: "/assets/img/icon/01.svg",
number: "01",
title: "Building Construction",
description: "Consectetur Phasellus a odio vel sapien pharetra placerat.",
},
{
id: 6,
imgSrc: "/assets/img/service/02.jpg",
iconSrc: "/assets/img/icon/02.svg",
number: "02",
title: "Architecture Design",
description: "Consectetur Phasellus a odio vel sapien pharetra placerat.",
},
{
id: 7,
imgSrc: "/assets/img/service/03.jpg",
iconSrc: "/assets/img/icon/03.svg",
number: "03",
title: "Building Renovation",
description: "Consectetur Phasellus a odio vel sapien pharetra placerat.",
},
{
id: 8,
imgSrc: "/assets/img/service/04.jpg",
iconSrc: "/assets/img/icon/04.svg",
number: "04",
title: "Quality Materials",
description: "Consectetur Phasellus a odio vel sapien pharetra placerat.",
},
];
export const serviceItems2 = [
{
id: 9,
serviceImage: "/assets/img/service/05.jpg",
barShape: "/assets/img/service/bar.png",
icon: "/assets/img/icon/07.svg",
title: "Smart Technology",
description:
"It is a long established fact xbliuthat a reader will be distracteda the readable content of a page when looking",
itemsShape: "/assets/img/service/items-shape.png",
},
{
id: 10,
serviceImage: "/assets/img/service/05.jpg",
barShape: "/assets/img/service/bar.png",
icon: "/assets/img/icon/08.svg",
title: "Best Engineering",
description:
"It is a long established fact xbliuthat a reader will be distracteda the readable content of a page when looking",
itemsShape: "/assets/img/service/items-shape.png",
},
{
id: 11,
serviceImage: "/assets/img/service/05.jpg",
barShape: "/assets/img/service/bar.png",
icon: "/assets/img/icon/09.svg",
title: "Chemical Research",
description:
"It is a long established fact xbliuthat a reader will be distracteda the readable content of a page when looking",
itemsShape: "/assets/img/service/items-shape.png",
},
{
id: 12,
serviceImage: "/assets/img/service/05.jpg",
barShape: "/assets/img/service/bar.png",
icon: "/assets/img/icon/10.svg",
title: "Architecture Design",
description:
"It is a long established fact xbliuthat a reader will be distracteda the readable content of a page when looking",
itemsShape: "/assets/img/service/items-shape.png",
},
{
id: 13,
serviceImage: "/assets/img/service/05.jpg",
barShape: "/assets/img/service/bar.png",
icon: "/assets/img/icon/07.svg",
title: "Smart Technology",
description:
"It is a long established fact xbliuthat a reader will be distracteda the readable content of a page when looking",
itemsShape: "/assets/img/service/items-shape.png",
},
{
id: 14,
serviceImage: "/assets/img/service/05.jpg",
barShape: "/assets/img/service/bar.png",
icon: "/assets/img/icon/08.svg",
title: "Best Engineering",
description:
"It is a long established fact xbliuthat a reader will be distracteda the readable content of a page when looking",
itemsShape: "/assets/img/service/items-shape.png",
},
{
id: 15,
serviceImage: "/assets/img/service/05.jpg",
barShape: "/assets/img/service/bar.png",
icon: "/assets/img/icon/09.svg",
title: "Chemical Research",
description:
"It is a long established fact xbliuthat a reader will be distracteda the readable content of a page when looking",
itemsShape: "/assets/img/service/items-shape.png",
},
{
id: 16,
serviceImage: "/assets/img/service/05.jpg",
barShape: "/assets/img/service/bar.png",
icon: "/assets/img/icon/10.svg",
title: "Architecture Design",
description:
"It is a long established fact xbliuthat a reader will be distracteda the readable content of a page when looking",
itemsShape: "/assets/img/service/items-shape.png",
},
];
export const services = [
{
id: 17,
image: "/assets/img/service/01.jpg",
icon: "/assets/img/icon/01.svg",
number: "01",
title: "Building Construction",
description: "Consectetur Phasellus a odio vel sapien pharetra placerat.",
delay: ".2s",
},
{
id: 18,
image: "/assets/img/service/02.jpg",
icon: "/assets/img/icon/02.svg",
number: "02",
title: "Architecture Design",
description: "Consectetur Phasellus a odio vel sapien pharetra placerat.",
delay: ".4s",
},
{
id: 19,
image: "/assets/img/service/03.jpg",
icon: "/assets/img/icon/03.svg",
number: "03",
title: "Building Renovation",
description: "Consectetur Phasellus a odio vel sapien pharetra placerat.",
delay: ".6s",
},
{
id: 20,
image: "/assets/img/service/06.jpg",
icon: "/assets/img/icon/07.svg",
number: "04",
title: "Smart Technology",
description: "Consectetur Phasellus a odio vel sapien pharetra placerat.",
delay: ".2s",
},
{
id: 21,
image: "/assets/img/service/07.jpg",
icon: "/assets/img/icon/08.svg",
number: "05",
title: "Best Engineering",
description: "Consectetur Phasellus a odio vel sapien pharetra placerat.",
delay: ".4s",
},
{
id: 22,
image: "/assets/img/service/08.jpg",
icon: "/assets/img/icon/09.svg",
number: "06",
title: "Chemical Research",
description: "Consectetur Phasellus a odio vel sapien pharetra placerat.",
delay: ".6s",
},
];
export const services2 = [
{
id: 23,
title: "Construction",
},
{
id: 24,
title: "House Renovation",
},
{
id: 25,
title: "Material Supply",
},
{
id: 26,
title: "Project Management",
},
{
id: 27,
title: "Heating and Water",
},
];
export const allServices = [
...serviceItems,
...serviceItems2,
...services,
...services2,
];

17
data/skills.js Normal file
View File

@ -0,0 +1,17 @@
export const skills = [
{
title: "General Consulting",
percentage: 85,
delay: ".2s",
},
{
title: "Design & Build",
percentage: 90,
delay: ".4s",
},
{
title: "Construction Management",
percentage: 75,
delay: ".2s",
},
];

423
data/team.js Normal file
View File

@ -0,0 +1,423 @@
export const teamMembers = [
{
id: 1,
image: "/assets/img/team/01.jpg",
name: "Shikhon Islam",
role: "Sr. engineer",
delay: "0s",
socials: [
{
href: "#",
iconClass: "fab fa-facebook-f",
},
{
href: "#",
iconClass: "fab fa-twitter",
},
{
href: "#",
iconClass: "fa-brands fa-linkedin-in",
},
{
href: "#",
iconClass: "fa-brands fa-youtube",
},
],
},
{
id: 2,
image: "/assets/img/team/02.jpg",
name: "Kawser Ahmed",
role: "Sr. engineer",
delay: ".2s",
socials: [
{
href: "#",
iconClass: "fab fa-facebook-f",
},
{
href: "#",
iconClass: "fab fa-twitter",
},
{
href: "#",
iconClass: "fa-brands fa-linkedin-in",
},
{
href: "#",
iconClass: "fa-brands fa-youtube",
},
],
},
{
id: 3,
image: "/assets/img/team/03.jpg",
name: "Marvin McKinney",
role: "Sr. engineer",
delay: ".4s",
socials: [
{
href: "#",
iconClass: "fab fa-facebook-f",
},
{
href: "#",
iconClass: "fab fa-twitter",
},
{
href: "#",
iconClass: "fa-brands fa-linkedin-in",
},
{
href: "#",
iconClass: "fa-brands fa-youtube",
},
],
},
{
id: 4,
image: "/assets/img/team/04.jpg",
name: "Sohel Islam",
role: "Sr. engineer",
delay: ".6s",
socials: [
{
href: "#",
iconClass: "fab fa-facebook-f",
},
{
href: "#",
iconClass: "fab fa-twitter",
},
{
href: "#",
iconClass: "fa-brands fa-linkedin-in",
},
{
href: "#",
iconClass: "fa-brands fa-youtube",
},
],
},
];
export const teamMembers2 = [
{
id: 5,
image: "/assets/img/team/05.jpg",
name: "Shikhon Islam",
role: "Sr. engineer",
socials: [
{
href: "#",
iconClass: "fab fa-linkedin-in",
},
{
href: "#",
iconClass: "fab fa-twitter",
},
{
href: "#",
iconClass: "fab fa-instagram",
},
{
href: "#",
iconClass: "fab fa-facebook-f",
},
],
delay: ".0s",
},
{
id: 6,
image: "/assets/img/team/06.jpg",
name: "Jenny Wilson",
role: "Sr. engineer",
socials: [
{
href: "#",
iconClass: "fab fa-linkedin-in",
},
{
href: "#",
iconClass: "fab fa-twitter",
},
{
href: "#",
iconClass: "fab fa-instagram",
},
{
href: "#",
iconClass: "fab fa-facebook-f",
},
],
delay: ".2s",
active: true,
},
{
id: 7,
image: "/assets/img/team/07.jpg",
name: "Kawser Ahmed",
role: "Sr. engineer",
socials: [
{
href: "#",
iconClass: "fab fa-linkedin-in",
},
{
href: "#",
iconClass: "fab fa-twitter",
},
{
href: "#",
iconClass: "fab fa-instagram",
},
{
href: "#",
iconClass: "fab fa-facebook-f",
},
],
delay: ".4s",
},
{
id: 8,
image: "/assets/img/team/08.jpg",
name: "Ronald Richards",
role: "Sr. engineer",
socials: [
{
href: "#",
iconClass: "fab fa-linkedin-in",
},
{
href: "#",
iconClass: "fab fa-twitter",
},
{
href: "#",
iconClass: "fab fa-instagram",
},
{
href: "#",
iconClass: "fab fa-facebook-f",
},
],
delay: ".6s",
},
];
export const teamMembers3 = [
{
id: 9,
image: "/assets/img/team/05.jpg",
name: "Shikhon Islam",
role: "Sr. engineer",
delay: "",
isActive: false,
socials: [
{
href: "#",
iconClass: "fab fa-facebook-f",
},
{
href: "#",
iconClass: "fab fa-twitter",
},
{
href: "#",
iconClass: "fa-brands fa-linkedin-in",
},
{
href: "#",
iconClass: "fa-brands fa-youtube",
},
],
},
{
id: 10,
image: "/assets/img/team/06.jpg",
name: "Jenny Wilson",
role: "Sr. engineer",
delay: ".2s",
isActive: true,
socials: [
{
href: "#",
iconClass: "fab fa-facebook-f",
},
{
href: "#",
iconClass: "fab fa-twitter",
},
{
href: "#",
iconClass: "fa-brands fa-linkedin-in",
},
{
href: "#",
iconClass: "fa-brands fa-youtube",
},
],
},
{
id: 11,
image: "/assets/img/team/07.jpg",
name: "Kawser Ahmed",
role: "Sr. engineer",
delay: ".4s",
isActive: false,
socials: [
{
href: "#",
iconClass: "fab fa-facebook-f",
},
{
href: "#",
iconClass: "fab fa-twitter",
},
{
href: "#",
iconClass: "fa-brands fa-linkedin-in",
},
{
href: "#",
iconClass: "fa-brands fa-youtube",
},
],
},
{
id: 12,
image: "/assets/img/team/08.jpg",
name: "Ronald Richards",
role: "Sr. engineer",
delay: ".6s",
isActive: false,
socials: [
{
href: "#",
iconClass: "fab fa-facebook-f",
},
{
href: "#",
iconClass: "fab fa-twitter",
},
{
href: "#",
iconClass: "fa-brands fa-linkedin-in",
},
{
href: "#",
iconClass: "fa-brands fa-youtube",
},
],
},
{
id: 13,
image: "/assets/img/team/09.jpg",
name: "Brooklyn Simmons",
role: "Sr. engineer",
delay: "",
isActive: false,
socials: [
{
href: "#",
iconClass: "fab fa-facebook-f",
},
{
href: "#",
iconClass: "fab fa-twitter",
},
{
href: "#",
iconClass: "fa-brands fa-linkedin-in",
},
{
href: "#",
iconClass: "fa-brands fa-youtube",
},
],
},
{
id: 14,
image: "/assets/img/team/10.jpg",
name: "Jenny Wilson",
role: "Sr. engineer",
delay: ".2s",
isActive: false,
socials: [
{
href: "#",
iconClass: "fab fa-facebook-f",
},
{
href: "#",
iconClass: "fab fa-twitter",
},
{
href: "#",
iconClass: "fa-brands fa-linkedin-in",
},
{
href: "#",
iconClass: "fa-brands fa-youtube",
},
],
},
{
id: 15,
image: "/assets/img/team/11.jpg",
name: "Ronald Richards",
role: "Sr. engineer",
delay: ".4s",
isActive: false,
socials: [
{
href: "#",
iconClass: "fab fa-facebook-f",
},
{
href: "#",
iconClass: "fab fa-twitter",
},
{
href: "#",
iconClass: "fa-brands fa-linkedin-in",
},
{
href: "#",
iconClass: "fa-brands fa-youtube",
},
],
},
{
id: 16,
image: "/assets/img/team/12.jpg",
name: "Annette Black",
role: "Sr. engineer",
delay: ".6s",
isActive: false,
socials: [
{
href: "#",
iconClass: "fab fa-facebook-f",
},
{
href: "#",
iconClass: "fab fa-twitter",
},
{
href: "#",
iconClass: "fa-brands fa-linkedin-in",
},
{
href: "#",
iconClass: "fa-brands fa-youtube",
},
],
},
];
export const allTeammembers = [
...teamMembers,
...teamMembers2,
...teamMembers3,
];

48
data/testimonials.js Normal file
View File

@ -0,0 +1,48 @@
export const testimonials = [
"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock !",
"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock !",
"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock !",
];
export const testimonials2 = [
{
id: 1,
shapeImgSrc: "/assets/img/testimonial/shape-left.png",
text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nunc viverra laoreet est, a pretium metus aliquam eget. Maecenas porta is nunc ut viverra. Aenean pulvinar maximus leo, non pharetra quam feugiat et. Suspendisse vitae nunc sed ligula.",
clientImgSrc: "/assets/img/testimonial/client-4.png",
clientName: "Shikhon Islam",
clientRole: "Web Developer",
logoSrc: "/assets/img/testimonial/amazon.png",
style: "",
},
{
id: 2,
shapeImgSrc: "/assets/img/testimonial/shape-right.png",
text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nunc viverra laoreet est, a pretium metus aliquam eget. Maecenas porta is nunc ut viverra. Aenean pulvinar maximus leo, non pharetra quam feugiat et. Suspendisse vitae nunc sed ligula.",
clientImgSrc: "/assets/img/testimonial/client-5.png",
clientName: "Rony Ahmed",
clientRole: "Web Development",
logoSrc: "/assets/img/testimonial/envato.png",
style: "style-2",
},
{
id: 1,
shapeImgSrc: "/assets/img/testimonial/shape-left.png",
text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nunc viverra laoreet est, a pretium metus aliquam eget. Maecenas porta is nunc ut viverra. Aenean pulvinar maximus leo, non pharetra quam feugiat et. Suspendisse vitae nunc sed ligula.",
clientImgSrc: "/assets/img/testimonial/client-4.png",
clientName: "Shikhon Islam",
clientRole: "Web Developer",
logoSrc: "/assets/img/testimonial/amazon.png",
style: "",
},
{
id: 2,
shapeImgSrc: "/assets/img/testimonial/shape-right.png",
text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nunc viverra laoreet est, a pretium metus aliquam eget. Maecenas porta is nunc ut viverra. Aenean pulvinar maximus leo, non pharetra quam feugiat et. Suspendisse vitae nunc sed ligula.",
clientImgSrc: "/assets/img/testimonial/client-5.png",
clientName: "Rony Ahmed",
clientRole: "Web Development",
logoSrc: "/assets/img/testimonial/envato.png",
style: "style-2",
},
];

7
jsconfig.json Normal file
View File

@ -0,0 +1,7 @@
{
"compilerOptions": {
"paths": {
"@/*": ["./*"]
}
}
}

4
next.config.mjs Normal file
View File

@ -0,0 +1,4 @@
/** @type {import('next').NextConfig} */
const nextConfig = {};
export default nextConfig;

832
package-lock.json generated Normal file
View File

@ -0,0 +1,832 @@
{
"name": "xbuild-next",
"version": "0.1.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "xbuild-next",
"version": "0.1.0",
"dependencies": {
"@emailjs/browser": "^4.4.1",
"bootstrap": "^5.3.3",
"next": "14.2.5",
"photoswipe": "^5.4.4",
"react": "^18",
"react-dom": "^18",
"react-modal-video": "^2.0.2",
"react-photoswipe-gallery": "^3.0.2",
"react-toastify": "^10.0.5",
"sass": "^1.77.8",
"swiper": "^11.1.9",
"wowjs": "^1.1.3"
}
},
"node_modules/@babel/runtime": {
"version": "7.25.0",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.0.tgz",
"integrity": "sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==",
"license": "MIT",
"dependencies": {
"regenerator-runtime": "^0.14.0"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@emailjs/browser": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/@emailjs/browser/-/browser-4.4.1.tgz",
"integrity": "sha512-DGSlP9sPvyFba3to2A50kDtZ+pXVp/0rhmqs2LmbMS3I5J8FSOgLwzY2Xb4qfKlOVHh29EAutLYwe5yuEZmEFg==",
"license": "BSD-3-Clause",
"engines": {
"node": ">=14.0.0"
}
},
"node_modules/@next/env": {
"version": "14.2.5",
"resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.5.tgz",
"integrity": "sha512-/zZGkrTOsraVfYjGP8uM0p6r0BDT6xWpkjdVbcz66PJVSpwXX3yNiRycxAuDfBKGWBrZBXRuK/YVlkNgxHGwmA=="
},
"node_modules/@next/swc-darwin-arm64": {
"version": "14.2.5",
"resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.5.tgz",
"integrity": "sha512-/9zVxJ+K9lrzSGli1///ujyRfon/ZneeZ+v4ptpiPoOU+GKZnm8Wj8ELWU1Pm7GHltYRBklmXMTUqM/DqQ99FQ==",
"cpu": [
"arm64"
],
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">= 10"
}
},
"node_modules/@next/swc-darwin-x64": {
"version": "14.2.5",
"resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.5.tgz",
"integrity": "sha512-vXHOPCwfDe9qLDuq7U1OYM2wUY+KQ4Ex6ozwsKxp26BlJ6XXbHleOUldenM67JRyBfVjv371oneEvYd3H2gNSA==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">= 10"
}
},
"node_modules/@next/swc-linux-arm64-gnu": {
"version": "14.2.5",
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.5.tgz",
"integrity": "sha512-vlhB8wI+lj8q1ExFW8lbWutA4M2ZazQNvMWuEDqZcuJJc78iUnLdPPunBPX8rC4IgT6lIx/adB+Cwrl99MzNaA==",
"cpu": [
"arm64"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10"
}
},
"node_modules/@next/swc-linux-arm64-musl": {
"version": "14.2.5",
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.5.tgz",
"integrity": "sha512-NpDB9NUR2t0hXzJJwQSGu1IAOYybsfeB+LxpGsXrRIb7QOrYmidJz3shzY8cM6+rO4Aojuef0N/PEaX18pi9OA==",
"cpu": [
"arm64"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10"
}
},
"node_modules/@next/swc-linux-x64-gnu": {
"version": "14.2.5",
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.5.tgz",
"integrity": "sha512-8XFikMSxWleYNryWIjiCX+gU201YS+erTUidKdyOVYi5qUQo/gRxv/3N1oZFCgqpesN6FPeqGM72Zve+nReVXQ==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10"
}
},
"node_modules/@next/swc-linux-x64-musl": {
"version": "14.2.5",
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.5.tgz",
"integrity": "sha512-6QLwi7RaYiQDcRDSU/os40r5o06b5ue7Jsk5JgdRBGGp8l37RZEh9JsLSM8QF0YDsgcosSeHjglgqi25+m04IQ==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10"
}
},
"node_modules/@next/swc-win32-arm64-msvc": {
"version": "14.2.5",
"resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.5.tgz",
"integrity": "sha512-1GpG2VhbspO+aYoMOQPQiqc/tG3LzmsdBH0LhnDS3JrtDx2QmzXe0B6mSZZiN3Bq7IOMXxv1nlsjzoS1+9mzZw==",
"cpu": [
"arm64"
],
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">= 10"
}
},
"node_modules/@next/swc-win32-ia32-msvc": {
"version": "14.2.5",
"resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.5.tgz",
"integrity": "sha512-Igh9ZlxwvCDsu6438FXlQTHlRno4gFpJzqPjSIBZooD22tKeI4fE/YMRoHVJHmrQ2P5YL1DoZ0qaOKkbeFWeMg==",
"cpu": [
"ia32"
],
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">= 10"
}
},
"node_modules/@next/swc-win32-x64-msvc": {
"version": "14.2.5",
"resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.5.tgz",
"integrity": "sha512-tEQ7oinq1/CjSG9uSTerca3v4AZ+dFa+4Yu6ihaG8Ud8ddqLQgFGcnwYls13H5X5CPDPZJdYxyeMui6muOLd4g==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">= 10"
}
},
"node_modules/@popperjs/core": {
"version": "2.11.8",
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
"integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
"license": "MIT",
"peer": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/popperjs"
}
},
"node_modules/@swc/counter": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz",
"integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ=="
},
"node_modules/@swc/helpers": {
"version": "0.5.5",
"resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz",
"integrity": "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==",
"dependencies": {
"@swc/counter": "^0.1.3",
"tslib": "^2.4.0"
}
},
"node_modules/animate.css": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/animate.css/-/animate.css-4.1.1.tgz",
"integrity": "sha512-+mRmCTv6SbCmtYJCN4faJMNFVNN5EuCTTprDTAo7YzIGji2KADmakjVA3+8mVDkZ2Bf09vayB35lSQIex2+QaQ==",
"license": "MIT"
},
"node_modules/anymatch": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
"integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
"license": "ISC",
"dependencies": {
"normalize-path": "^3.0.0",
"picomatch": "^2.0.4"
},
"engines": {
"node": ">= 8"
}
},
"node_modules/binary-extensions": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
"integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
"license": "MIT",
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/bootstrap": {
"version": "5.3.3",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz",
"integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/twbs"
},
{
"type": "opencollective",
"url": "https://opencollective.com/bootstrap"
}
],
"license": "MIT",
"peerDependencies": {
"@popperjs/core": "^2.11.8"
}
},
"node_modules/braces": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"license": "MIT",
"dependencies": {
"fill-range": "^7.1.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/busboy": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
"integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==",
"dependencies": {
"streamsearch": "^1.1.0"
},
"engines": {
"node": ">=10.16.0"
}
},
"node_modules/caniuse-lite": {
"version": "1.0.30001651",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz",
"integrity": "sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==",
"funding": [
{
"type": "opencollective",
"url": "https://opencollective.com/browserslist"
},
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/caniuse-lite"
},
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
]
},
"node_modules/chokidar": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
"integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
"license": "MIT",
"dependencies": {
"anymatch": "~3.1.2",
"braces": "~3.0.2",
"glob-parent": "~5.1.2",
"is-binary-path": "~2.1.0",
"is-glob": "~4.0.1",
"normalize-path": "~3.0.0",
"readdirp": "~3.6.0"
},
"engines": {
"node": ">= 8.10.0"
},
"funding": {
"url": "https://paulmillr.com/funding/"
},
"optionalDependencies": {
"fsevents": "~2.3.2"
}
},
"node_modules/client-only": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
"integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="
},
"node_modules/clsx": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
"integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
"license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/core-js": {
"version": "3.38.0",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.38.0.tgz",
"integrity": "sha512-XPpwqEodRljce9KswjZShh95qJ1URisBeKCjUdq27YdenkslVe7OO0ZJhlYXAChW7OhXaRLl8AAba7IBfoIHug==",
"hasInstallScript": true,
"license": "MIT",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/core-js"
}
},
"node_modules/csstype": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
"license": "MIT"
},
"node_modules/dom-helpers": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz",
"integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.8.7",
"csstype": "^3.0.2"
}
},
"node_modules/fill-range": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"license": "MIT",
"dependencies": {
"to-regex-range": "^5.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/fsevents": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
"hasInstallScript": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
"node_modules/glob-parent": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
"license": "ISC",
"dependencies": {
"is-glob": "^4.0.1"
},
"engines": {
"node": ">= 6"
}
},
"node_modules/graceful-fs": {
"version": "4.2.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
},
"node_modules/immutable": {
"version": "4.3.7",
"resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz",
"integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==",
"license": "MIT"
},
"node_modules/is-binary-path": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
"integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
"license": "MIT",
"dependencies": {
"binary-extensions": "^2.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
"license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/is-glob": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
"license": "MIT",
"dependencies": {
"is-extglob": "^2.1.1"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/is-number": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
"license": "MIT",
"engines": {
"node": ">=0.12.0"
}
},
"node_modules/js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
},
"node_modules/loose-envify": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
"integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
"dependencies": {
"js-tokens": "^3.0.0 || ^4.0.0"
},
"bin": {
"loose-envify": "cli.js"
}
},
"node_modules/nanoid": {
"version": "3.3.7",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
"integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"bin": {
"nanoid": "bin/nanoid.cjs"
},
"engines": {
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
"node_modules/next": {
"version": "14.2.5",
"resolved": "https://registry.npmjs.org/next/-/next-14.2.5.tgz",
"integrity": "sha512-0f8aRfBVL+mpzfBjYfQuLWh2WyAwtJXCRfkPF4UJ5qd2YwrHczsrSzXU4tRMV0OAxR8ZJZWPFn6uhSC56UTsLA==",
"dependencies": {
"@next/env": "14.2.5",
"@swc/helpers": "0.5.5",
"busboy": "1.6.0",
"caniuse-lite": "^1.0.30001579",
"graceful-fs": "^4.2.11",
"postcss": "8.4.31",
"styled-jsx": "5.1.1"
},
"bin": {
"next": "dist/bin/next"
},
"engines": {
"node": ">=18.17.0"
},
"optionalDependencies": {
"@next/swc-darwin-arm64": "14.2.5",
"@next/swc-darwin-x64": "14.2.5",
"@next/swc-linux-arm64-gnu": "14.2.5",
"@next/swc-linux-arm64-musl": "14.2.5",
"@next/swc-linux-x64-gnu": "14.2.5",
"@next/swc-linux-x64-musl": "14.2.5",
"@next/swc-win32-arm64-msvc": "14.2.5",
"@next/swc-win32-ia32-msvc": "14.2.5",
"@next/swc-win32-x64-msvc": "14.2.5"
},
"peerDependencies": {
"@opentelemetry/api": "^1.1.0",
"@playwright/test": "^1.41.2",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"sass": "^1.3.0"
},
"peerDependenciesMeta": {
"@opentelemetry/api": {
"optional": true
},
"@playwright/test": {
"optional": true
},
"sass": {
"optional": true
}
}
},
"node_modules/normalize-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
"license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
"license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/photoswipe": {
"version": "5.4.4",
"resolved": "https://registry.npmjs.org/photoswipe/-/photoswipe-5.4.4.tgz",
"integrity": "sha512-WNFHoKrkZNnvFFhbHL93WDkW3ifwVOXSW3w1UuZZelSmgXpIGiZSNlZJq37rR8YejqME2rHs9EhH9ZvlvFH2NA==",
"license": "MIT",
"engines": {
"node": ">= 0.12.0"
}
},
"node_modules/picocolors": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz",
"integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew=="
},
"node_modules/picomatch": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
"license": "MIT",
"engines": {
"node": ">=8.6"
},
"funding": {
"url": "https://github.com/sponsors/jonschlinkert"
}
},
"node_modules/postcss": {
"version": "8.4.31",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
"integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
"funding": [
{
"type": "opencollective",
"url": "https://opencollective.com/postcss/"
},
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/postcss"
},
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"dependencies": {
"nanoid": "^3.3.6",
"picocolors": "^1.0.0",
"source-map-js": "^1.0.2"
},
"engines": {
"node": "^10 || ^12 || >=14"
}
},
"node_modules/prop-types": {
"version": "15.8.1",
"resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
"integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
"license": "MIT",
"dependencies": {
"loose-envify": "^1.4.0",
"object-assign": "^4.1.1",
"react-is": "^16.13.1"
}
},
"node_modules/react": {
"version": "18.3.1",
"resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
"integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
"dependencies": {
"loose-envify": "^1.1.0"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/react-dom": {
"version": "18.3.1",
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
"integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
"dependencies": {
"loose-envify": "^1.1.0",
"scheduler": "^0.23.2"
},
"peerDependencies": {
"react": "^18.3.1"
}
},
"node_modules/react-is": {
"version": "16.13.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
"license": "MIT"
},
"node_modules/react-modal-video": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/react-modal-video/-/react-modal-video-2.0.2.tgz",
"integrity": "sha512-Cfo3rEsxU5BL+Et/nRK7l2ajW/TLZOKTMPgpD8FDlhIxRR3yqo3Xdo1ufNxONApN0XL6iXqmMkqyEKmGOmcEiw==",
"license": "MIT",
"dependencies": {
"core-js": "^3.27.2",
"react-transition-group": "^4.4.2"
},
"peerDependencies": {
"react": "^17.0.0 || ^18.2.0",
"react-dom": "^17.0.0 || ^18.2.0"
}
},
"node_modules/react-photoswipe-gallery": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/react-photoswipe-gallery/-/react-photoswipe-gallery-3.0.2.tgz",
"integrity": "sha512-TLkpzp2BSUUL/4GPRU5SQWXfJ8xuUBKgS8qUaHyhsT1co6CStr1mVCl4oQrSSFbWxAKhB5fHbr12l1R+TkqFcQ==",
"license": "MIT",
"peerDependencies": {
"photoswipe": ">= 5.2.2",
"prop-types": ">= 15.7.0",
"react": ">= 16.8.0"
}
},
"node_modules/react-toastify": {
"version": "10.0.5",
"resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-10.0.5.tgz",
"integrity": "sha512-mNKt2jBXJg4O7pSdbNUfDdTsK9FIdikfsIE/yUCxbAEXl4HMyJaivrVFcn3Elvt5xvCQYhUZm+hqTIu1UXM3Pw==",
"license": "MIT",
"dependencies": {
"clsx": "^2.1.0"
},
"peerDependencies": {
"react": ">=18",
"react-dom": ">=18"
}
},
"node_modules/react-transition-group": {
"version": "4.4.5",
"resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz",
"integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==",
"license": "BSD-3-Clause",
"dependencies": {
"@babel/runtime": "^7.5.5",
"dom-helpers": "^5.0.1",
"loose-envify": "^1.4.0",
"prop-types": "^15.6.2"
},
"peerDependencies": {
"react": ">=16.6.0",
"react-dom": ">=16.6.0"
}
},
"node_modules/readdirp": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
"integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
"license": "MIT",
"dependencies": {
"picomatch": "^2.2.1"
},
"engines": {
"node": ">=8.10.0"
}
},
"node_modules/regenerator-runtime": {
"version": "0.14.1",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
"integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
"license": "MIT"
},
"node_modules/sass": {
"version": "1.77.8",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.77.8.tgz",
"integrity": "sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==",
"license": "MIT",
"dependencies": {
"chokidar": ">=3.0.0 <4.0.0",
"immutable": "^4.0.0",
"source-map-js": ">=0.6.2 <2.0.0"
},
"bin": {
"sass": "sass.js"
},
"engines": {
"node": ">=14.0.0"
}
},
"node_modules/scheduler": {
"version": "0.23.2",
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
"integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
"dependencies": {
"loose-envify": "^1.1.0"
}
},
"node_modules/source-map-js": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
"integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/streamsearch": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
"integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==",
"engines": {
"node": ">=10.0.0"
}
},
"node_modules/styled-jsx": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz",
"integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==",
"dependencies": {
"client-only": "0.0.1"
},
"engines": {
"node": ">= 12.0.0"
},
"peerDependencies": {
"react": ">= 16.8.0 || 17.x.x || ^18.0.0-0"
},
"peerDependenciesMeta": {
"@babel/core": {
"optional": true
},
"babel-plugin-macros": {
"optional": true
}
}
},
"node_modules/swiper": {
"version": "11.1.9",
"resolved": "https://registry.npmjs.org/swiper/-/swiper-11.1.9.tgz",
"integrity": "sha512-rflu8zvfGa3x1v/aeSufk4zRJffhOQowyvtJlp46sUBnOqAuk1Rdv5Ldj0AWWBV595iZ+ZMk7VB35ZRtRUomtA==",
"funding": [
{
"type": "patreon",
"url": "https://www.patreon.com/swiperjs"
},
{
"type": "open_collective",
"url": "http://opencollective.com/swiper"
}
],
"license": "MIT",
"engines": {
"node": ">= 4.7.0"
}
},
"node_modules/to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
"license": "MIT",
"dependencies": {
"is-number": "^7.0.0"
},
"engines": {
"node": ">=8.0"
}
},
"node_modules/tslib": {
"version": "2.6.3",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
"integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
},
"node_modules/wowjs": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/wowjs/-/wowjs-1.1.3.tgz",
"integrity": "sha512-HQp1gi56wYmjOYYOMZ08TnDGpT+AO21RJVa0t1NJ3jU8l3dMyP+sY7TO/lilzVp4JFjW88bBY87RnpxdpSKofA==",
"dependencies": {
"animate.css": "latest"
}
}
}
}

25
package.json Normal file
View File

@ -0,0 +1,25 @@
{
"name": "xbuild-next",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "next lint"
},
"dependencies": {
"@emailjs/browser": "^4.4.1",
"bootstrap": "^5.3.3",
"next": "14.2.5",
"photoswipe": "^5.4.4",
"react": "^18",
"react-dom": "^18",
"react-modal-video": "^2.0.2",
"react-photoswipe-gallery": "^3.0.2",
"react-toastify": "^10.0.5",
"sass": "^1.77.8",
"swiper": "^11.1.9",
"wowjs": "^1.1.3"
}
}

25355
public/assets/css/all.min.css vendored Normal file

File diff suppressed because it is too large Load Diff

2744
public/assets/css/animate.css vendored Normal file

File diff suppressed because it is too large Load Diff

12633
public/assets/css/bootstrap.min.css vendored Normal file

File diff suppressed because it is too large Load Diff

View File

View File

@ -0,0 +1,351 @@
/* Magnific Popup CSS */
.mfp-bg {
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 1042;
overflow: hidden;
position: fixed;
background: #0b0b0b;
opacity: 0.8; }
.mfp-wrap {
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 1043;
position: fixed;
outline: none !important;
-webkit-backface-visibility: hidden; }
.mfp-container {
text-align: center;
position: absolute;
width: 100%;
height: 100%;
left: 0;
top: 0;
padding: 0 8px;
box-sizing: border-box; }
.mfp-container:before {
content: '';
display: inline-block;
height: 100%;
vertical-align: middle; }
.mfp-align-top .mfp-container:before {
display: none; }
.mfp-content {
position: relative;
display: inline-block;
vertical-align: middle;
margin: 0 auto;
text-align: left;
z-index: 1045; }
.mfp-inline-holder .mfp-content,
.mfp-ajax-holder .mfp-content {
width: 100%;
cursor: auto; }
.mfp-ajax-cur {
cursor: progress; }
.mfp-zoom-out-cur, .mfp-zoom-out-cur .mfp-image-holder .mfp-close {
cursor: -moz-zoom-out;
cursor: -webkit-zoom-out;
cursor: zoom-out; }
.mfp-zoom {
cursor: pointer;
cursor: -webkit-zoom-in;
cursor: -moz-zoom-in;
cursor: zoom-in; }
.mfp-auto-cursor .mfp-content {
cursor: auto; }
.mfp-close,
.mfp-arrow,
.mfp-preloader,
.mfp-counter {
-webkit-user-select: none;
-moz-user-select: none;
user-select: none; }
.mfp-loading.mfp-figure {
display: none; }
.mfp-hide {
display: none !important; }
.mfp-preloader {
color: #CCC;
position: absolute;
top: 50%;
width: auto;
text-align: center;
margin-top: -0.8em;
left: 8px;
right: 8px;
z-index: 1044; }
.mfp-preloader a {
color: #CCC; }
.mfp-preloader a:hover {
color: $white; }
.mfp-s-ready .mfp-preloader {
display: none; }
.mfp-s-error .mfp-content {
display: none; }
button.mfp-close,
button.mfp-arrow {
overflow: visible;
cursor: pointer;
background: transparent;
border: 0;
-webkit-appearance: none;
display: block;
outline: none;
padding: 0;
z-index: 1046;
box-shadow: none;
touch-action: manipulation; }
button::-moz-focus-inner {
padding: 0;
border: 0; }
.mfp-close {
width: 44px;
height: 44px;
line-height: 44px;
position: absolute;
right: 0;
top: 0;
text-decoration: none;
text-align: center;
opacity: 0.65;
padding: 0 0 18px 10px;
color: $white;
font-style: normal;
font-size: 28px;
font-family: Arial, Baskerville, monospace; }
.mfp-close:hover,
.mfp-close:focus {
opacity: 1; }
.mfp-close:active {
top: 1px; }
.mfp-close-btn-in .mfp-close {
color: #fff; }
.mfp-image-holder .mfp-close,
.mfp-iframe-holder .mfp-close {
color: $white;
right: -6px;
text-align: right;
padding-right: 6px;
width: 100%; }
.mfp-counter {
position: absolute;
top: 0;
right: 0;
color: #CCC;
font-size: 12px;
line-height: 18px;
white-space: nowrap; }
.mfp-arrow {
position: absolute;
opacity: 0.65;
margin: 0;
top: 50%;
margin-top: -55px;
padding: 0;
width: 90px;
height: 110px;
-webkit-tap-highlight-color: transparent; }
.mfp-arrow:active {
margin-top: -54px; }
.mfp-arrow:hover,
.mfp-arrow:focus {
opacity: 1; }
.mfp-arrow:before,
.mfp-arrow:after {
content: '';
display: block;
width: 0;
height: 0;
position: absolute;
left: 0;
top: 0;
margin-top: 35px;
margin-left: 35px;
border: medium inset transparent; }
.mfp-arrow:after {
border-top-width: 13px;
border-bottom-width: 13px;
top: 8px; }
.mfp-arrow:before {
border-top-width: 21px;
border-bottom-width: 21px;
opacity: 0.7; }
.mfp-arrow-left {
left: 0; }
.mfp-arrow-left:after {
border-right: 17px solid $white;
margin-left: 31px; }
.mfp-arrow-left:before {
margin-left: 25px;
border-right: 27px solid #fff; }
.mfp-arrow-right {
right: 0; }
.mfp-arrow-right:after {
border-left: 17px solid $white;
margin-left: 39px; }
.mfp-arrow-right:before {
border-left: 27px solid #fff; }
.mfp-iframe-holder {
padding-top: 40px;
padding-bottom: 40px; }
.mfp-iframe-holder .mfp-content {
line-height: 0;
width: 100%;
max-width: 900px; }
.mfp-iframe-holder .mfp-close {
top: -40px; }
.mfp-iframe-scaler {
width: 100%;
height: 0;
overflow: hidden;
padding-top: 56.25%; }
.mfp-iframe-scaler iframe {
position: absolute;
display: block;
top: 0;
left: 0;
width: 100%;
height: 100%;
box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
background: #000; }
/* Main image in popup */
img.mfp-img {
width: auto;
max-width: 100%;
height: auto;
display: block;
line-height: 0;
box-sizing: border-box;
padding: 40px 0 40px;
margin: 0 auto; }
/* The shadow behind the image */
.mfp-figure {
line-height: 0; }
.mfp-figure:after {
content: '';
position: absolute;
left: 0;
top: 40px;
bottom: 40px;
display: block;
right: 0;
width: auto;
height: auto;
z-index: -1;
box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
background: #444; }
.mfp-figure small {
color: #BDBDBD;
display: block;
font-size: 12px;
line-height: 14px; }
.mfp-figure figure {
margin: 0; }
.mfp-bottom-bar {
margin-top: -36px;
position: absolute;
top: 100%;
left: 0;
width: 100%;
cursor: auto; }
.mfp-title {
text-align: left;
line-height: 18px;
color: #F3F3F3;
word-wrap: break-word;
padding-right: 36px; }
.mfp-image-holder .mfp-content {
max-width: 100%; }
.mfp-gallery .mfp-image-holder .mfp-figure {
cursor: pointer; }
@media screen and (max-width: 800px) and (orientation: landscape), screen and (max-height: 300px) {
/**
* Remove all paddings around the image on small screen
*/
.mfp-img-mobile .mfp-image-holder {
padding-left: 0;
padding-right: 0; }
.mfp-img-mobile img.mfp-img {
padding: 0; }
.mfp-img-mobile .mfp-figure:after {
top: 0;
bottom: 0; }
.mfp-img-mobile .mfp-figure small {
display: inline;
margin-left: 5px; }
.mfp-img-mobile .mfp-bottom-bar {
background: rgba(0, 0, 0, 0.6);
bottom: 0;
margin: 0;
top: auto;
padding: 3px 5px;
position: fixed;
box-sizing: border-box; }
.mfp-img-mobile .mfp-bottom-bar:empty {
padding: 0; }
.mfp-img-mobile .mfp-counter {
right: 5px;
top: 3px; }
.mfp-img-mobile .mfp-close {
top: 0;
right: 0;
width: 35px;
height: 35px;
line-height: 35px;
background: rgba(0, 0, 0, 0.6);
position: fixed;
text-align: center;
padding: 0; } }
@media all and (max-width: 900px) {
.mfp-arrow {
-webkit-transform: scale(0.75);
transform: scale(0.75); }
.mfp-arrow-left {
-webkit-transform-origin: 0;
transform-origin: 0; }
.mfp-arrow-right {
-webkit-transform-origin: 100%;
transform-origin: 100%; }
.mfp-container {
padding-left: 6px;
padding-right: 6px; } }

6892
public/assets/css/main.css Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,148 @@
/*! #######################################################################
MeanMenu 2.0.7
--------
To be used with jquery.meanmenu.js by Chris Wharton (http://www.meanthemes.com/plugins/meanmenu/)
####################################################################### */
a.meanmenu-reveal {
display: none
}
.mean-container .mean-bar {
float: left;
width: 100%;
position: relative;
background: #070337;
padding: 4px 0;
min-height: 42px;
z-index: 999999
}
.mean-container a.meanmenu-reveal {
width: 22px;
height: 22px;
padding: 13px 13px 11px 13px;
position: absolute;
top: 0;
right: 0;
cursor: pointer;
color: #fff;
text-decoration: none;
font-size: 16px;
text-indent: -9999em;
line-height: 22px;
font-size: 1px;
display: block;
font-family: Arial, Helvetica, sans-serif;
font-weight: 700
}
.mean-container a.meanmenu-reveal span {
display: block;
background: #fff;
height: 3px;
margin-top: 3px
}
.mean-container .mean-nav {
float: left;
width: 100%;
background: #070337;
margin-top: 44px
}
.mean-container .mean-nav ul {
padding: 0;
margin: 0;
width: 100%;
list-style-type: none
}
.mean-container .mean-nav ul li {
position: relative;
float: left;
width: 100%
}
.mean-container .mean-nav ul li a {
display: block;
float: left;
width: 90%;
padding: 10px 5%;
margin: 0;
text-align: left;
color: #fff;
border-top: 1px solid #e0e3ed;
text-decoration: none;
text-transform: uppercase
}
.mean-container .mean-nav ul li li a {
width: 80%;
padding: 10px 10%;
text-shadow: none !important;
visibility: visible
}
.mean-container .mean-nav ul li.mean-last a {
border-bottom: 0;
margin-bottom: 0
}
.mean-container .mean-nav ul li li li a {
width: 70%;
padding: 10px 15%
}
.mean-container .mean-nav ul li li li li a {
width: 60%;
padding: 10px 20%
}
.mean-container .mean-nav ul li li li li li a {
width: 50%;
padding: 10px 25%
}
.mean-container .mean-nav ul li a.mean-expand {
margin-top: 1px;
width: 26px;
height: 32px;
text-align: center;
position: absolute;
right: 0;
top: 0;
z-index: 2;
font-weight: 700;
background: transparent;
border: none !important;
font-size: 14px
}
.mean-container .mean-push {
float: left;
width: 100%;
padding: 0;
margin: 0;
clear: both
}
.mean-nav .wrapper {
width: 100%;
padding: 0;
margin: 0
}
.mean-container .mean-bar,
.mean-container .mean-bar * {
-webkit-box-sizing: content-box;
-moz-box-sizing: content-box;
box-sizing: content-box
}
.mean-remove {
display: none !important
}

Some files were not shown because too many files have changed in this diff Show More