first commit
This commit is contained in:
commit
2902ff8bab
36
.gitignore
vendored
Normal file
36
.gitignore
vendored
Normal 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
36
README.md
Normal 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.
|
||||
85
app/(about)/about/page.jsx
Normal file
85
app/(about)/about/page.jsx
Normal 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 />
|
||||
</>
|
||||
);
|
||||
}
|
||||
78
app/(blogs)/news-details/[id]/page.jsx
Normal file
78
app/(blogs)/news-details/[id]/page.jsx
Normal 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 />
|
||||
</>
|
||||
);
|
||||
}
|
||||
75
app/(blogs)/news-grid/page.jsx
Normal file
75
app/(blogs)/news-grid/page.jsx
Normal 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
75
app/(blogs)/news/page.jsx
Normal 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 />
|
||||
</>
|
||||
);
|
||||
}
|
||||
79
app/(contact)/contact/page.jsx
Normal file
79
app/(contact)/contact/page.jsx
Normal 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 />
|
||||
</>
|
||||
);
|
||||
}
|
||||
43
app/(homes)/home-1-one-page/page.jsx
Normal file
43
app/(homes)/home-1-one-page/page.jsx
Normal 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 />
|
||||
</>
|
||||
);
|
||||
}
|
||||
43
app/(homes)/home-1/page.jsx
Normal file
43
app/(homes)/home-1/page.jsx
Normal 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 />
|
||||
</>
|
||||
);
|
||||
}
|
||||
63
app/(homes)/home-2-one-page/page.jsx
Normal file
63
app/(homes)/home-2-one-page/page.jsx
Normal 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 />
|
||||
</>
|
||||
);
|
||||
}
|
||||
61
app/(homes)/home-2/page.jsx
Normal file
61
app/(homes)/home-2/page.jsx
Normal 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 />
|
||||
</>
|
||||
);
|
||||
}
|
||||
108
app/(othersPages)/404/page.jsx
Normal file
108
app/(othersPages)/404/page.jsx
Normal 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 />
|
||||
</>
|
||||
);
|
||||
}
|
||||
77
app/(othersPages)/faq/page.jsx
Normal file
77
app/(othersPages)/faq/page.jsx
Normal 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 />
|
||||
</>
|
||||
);
|
||||
}
|
||||
79
app/(othersPages)/pricing/page.jsx
Normal file
79
app/(othersPages)/pricing/page.jsx
Normal 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 />
|
||||
</>
|
||||
);
|
||||
}
|
||||
79
app/(othersPages)/team-details/[id]/page.jsx
Normal file
79
app/(othersPages)/team-details/[id]/page.jsx
Normal 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 />
|
||||
</>
|
||||
);
|
||||
}
|
||||
76
app/(othersPages)/team/page.jsx
Normal file
76
app/(othersPages)/team/page.jsx
Normal 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 />
|
||||
</>
|
||||
);
|
||||
}
|
||||
78
app/(project)/project-details/[id]/page.jsx
Normal file
78
app/(project)/project-details/[id]/page.jsx
Normal 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 />
|
||||
</>
|
||||
);
|
||||
}
|
||||
76
app/(project)/project/page.jsx
Normal file
76
app/(project)/project/page.jsx
Normal 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 />
|
||||
</>
|
||||
);
|
||||
}
|
||||
78
app/(service)/service-details/[id]/page.jsx
Normal file
78
app/(service)/service-details/[id]/page.jsx
Normal 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 />
|
||||
</>
|
||||
);
|
||||
}
|
||||
76
app/(service)/service/page.jsx
Normal file
76
app/(service)/service/page.jsx
Normal 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
BIN
app/favicon.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.2 KiB |
63
app/layout.jsx
Normal file
63
app/layout.jsx
Normal 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
108
app/not-found.jsx
Normal 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
12
app/page.jsx
Normal 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 />
|
||||
</>
|
||||
);
|
||||
}
|
||||
109
components/about/Achievments.jsx
Normal file
109
components/about/Achievments.jsx
Normal 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
78
components/about/Team.jsx
Normal 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>
|
||||
);
|
||||
}
|
||||
245
components/blogs/BlogDetails.jsx
Normal file
245
components/blogs/BlogDetails.jsx
Normal 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>
|
||||
);
|
||||
}
|
||||
75
components/blogs/Blogs.jsx
Normal file
75
components/blogs/Blogs.jsx
Normal 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
231
components/blogs/Blogs2.jsx
Normal 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)}
|
||||
/>{" "}
|
||||
</>
|
||||
);
|
||||
}
|
||||
44
components/blogs/CommentForm.jsx
Normal file
44
components/blogs/CommentForm.jsx
Normal 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>
|
||||
);
|
||||
}
|
||||
79
components/blogs/Comments.jsx
Normal file
79
components/blogs/Comments.jsx
Normal 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>
|
||||
</>
|
||||
);
|
||||
}
|
||||
44
components/common/AnimatedText.jsx
Normal file
44
components/common/AnimatedText.jsx
Normal 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>
|
||||
</>
|
||||
);
|
||||
}
|
||||
30
components/common/BackToTop.jsx
Normal file
30
components/common/BackToTop.jsx
Normal 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>
|
||||
);
|
||||
}
|
||||
53
components/common/Brands.jsx
Normal file
53
components/common/Brands.jsx
Normal 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>
|
||||
);
|
||||
}
|
||||
59
components/common/Mouse.jsx
Normal file
59
components/common/Mouse.jsx
Normal 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>
|
||||
</>
|
||||
);
|
||||
}
|
||||
51
components/common/Pagination.jsx
Normal file
51
components/common/Pagination.jsx
Normal 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>
|
||||
);
|
||||
}
|
||||
28
components/common/SearchWrap.jsx
Normal file
28
components/common/SearchWrap.jsx
Normal 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>
|
||||
);
|
||||
}
|
||||
134
components/contact/ContactForm.jsx
Normal file
134
components/contact/ContactForm.jsx
Normal 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="What’s 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>
|
||||
);
|
||||
}
|
||||
91
components/contact/ContactInfo.jsx
Normal file
91
components/contact/ContactInfo.jsx
Normal 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>
|
||||
);
|
||||
}
|
||||
14
components/contact/Map.jsx
Normal file
14
components/contact/Map.jsx
Normal 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>
|
||||
);
|
||||
}
|
||||
214
components/footers/Footer1.jsx
Normal file
214
components/footers/Footer1.jsx
Normal 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>
|
||||
);
|
||||
}
|
||||
119
components/headers/Header1.jsx
Normal file
119
components/headers/Header1.jsx
Normal 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>
|
||||
</>
|
||||
);
|
||||
}
|
||||
118
components/headers/Header1Onepage.jsx
Normal file
118
components/headers/Header1Onepage.jsx
Normal 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>
|
||||
</>
|
||||
);
|
||||
}
|
||||
113
components/headers/Header2.jsx
Normal file
113
components/headers/Header2.jsx
Normal 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 & 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>
|
||||
</>
|
||||
);
|
||||
}
|
||||
113
components/headers/Header2Onepage.jsx
Normal file
113
components/headers/Header2Onepage.jsx
Normal 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 & 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>{" "}
|
||||
</>
|
||||
);
|
||||
}
|
||||
30
components/headers/HeaderTop1.jsx
Normal file
30
components/headers/HeaderTop1.jsx
Normal 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
145
components/headers/Nav.jsx
Normal 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>
|
||||
))}
|
||||
</>
|
||||
);
|
||||
}
|
||||
93
components/headers/NavOnepage.jsx
Normal file
93
components/headers/NavOnepage.jsx
Normal 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>
|
||||
))}
|
||||
</>
|
||||
);
|
||||
}
|
||||
132
components/headers/Offcanvas.jsx
Normal file
132
components/headers/Offcanvas.jsx
Normal 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()} />
|
||||
</>
|
||||
);
|
||||
}
|
||||
144
components/homes/home-1/About.jsx
Normal file
144
components/homes/home-1/About.jsx
Normal 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)}
|
||||
/>{" "}
|
||||
</>
|
||||
);
|
||||
}
|
||||
124
components/homes/home-1/Blogs.jsx
Normal file
124
components/homes/home-1/Blogs.jsx
Normal 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 & 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>
|
||||
);
|
||||
}
|
||||
145
components/homes/home-1/Contact.jsx
Normal file
145
components/homes/home-1/Contact.jsx
Normal 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>
|
||||
);
|
||||
}
|
||||
50
components/homes/home-1/Cta.jsx
Normal file
50
components/homes/home-1/Cta.jsx
Normal 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>
|
||||
);
|
||||
}
|
||||
104
components/homes/home-1/Faq.jsx
Normal file
104
components/homes/home-1/Faq.jsx
Normal 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>
|
||||
);
|
||||
}
|
||||
164
components/homes/home-1/Hero.jsx
Normal file
164
components/homes/home-1/Hero.jsx
Normal 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)}
|
||||
/>{" "}
|
||||
</>
|
||||
);
|
||||
}
|
||||
57
components/homes/home-1/Projects.jsx
Normal file
57
components/homes/home-1/Projects.jsx
Normal 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>
|
||||
);
|
||||
}
|
||||
112
components/homes/home-1/Services.jsx
Normal file
112
components/homes/home-1/Services.jsx
Normal 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>
|
||||
);
|
||||
}
|
||||
113
components/homes/home-1/Skills.jsx
Normal file
113
components/homes/home-1/Skills.jsx
Normal 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>
|
||||
);
|
||||
}
|
||||
66
components/homes/home-1/Team.jsx
Normal file
66
components/homes/home-1/Team.jsx
Normal 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>
|
||||
);
|
||||
}
|
||||
132
components/homes/home-1/Testimonials.jsx
Normal file
132
components/homes/home-1/Testimonials.jsx
Normal 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 Client’s 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>
|
||||
);
|
||||
}
|
||||
183
components/homes/home-2/About.jsx
Normal file
183
components/homes/home-2/About.jsx
Normal 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)}
|
||||
/>{" "}
|
||||
</>
|
||||
);
|
||||
}
|
||||
96
components/homes/home-2/Achievements.jsx
Normal file
96
components/homes/home-2/Achievements.jsx
Normal 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>
|
||||
);
|
||||
}
|
||||
106
components/homes/home-2/Blogs.jsx
Normal file
106
components/homes/home-2/Blogs.jsx
Normal 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 & 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>
|
||||
);
|
||||
}
|
||||
41
components/homes/home-2/Cta.jsx
Normal file
41
components/homes/home-2/Cta.jsx
Normal 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>{" "}
|
||||
</>
|
||||
);
|
||||
}
|
||||
87
components/homes/home-2/Hero.jsx
Normal file
87
components/homes/home-2/Hero.jsx
Normal 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)}
|
||||
/>{" "}
|
||||
</>
|
||||
);
|
||||
}
|
||||
89
components/homes/home-2/Pricing.jsx
Normal file
89
components/homes/home-2/Pricing.jsx
Normal 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>
|
||||
</>
|
||||
);
|
||||
}
|
||||
101
components/homes/home-2/Projects.jsx
Normal file
101
components/homes/home-2/Projects.jsx
Normal 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>
|
||||
);
|
||||
}
|
||||
142
components/homes/home-2/Services.jsx
Normal file
142
components/homes/home-2/Services.jsx
Normal 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>
|
||||
);
|
||||
}
|
||||
82
components/homes/home-2/Team.jsx
Normal file
82
components/homes/home-2/Team.jsx
Normal 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>
|
||||
);
|
||||
}
|
||||
105
components/homes/home-2/Testimonials.jsx
Normal file
105
components/homes/home-2/Testimonials.jsx
Normal 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>
|
||||
);
|
||||
}
|
||||
165
components/project/ProjectDetails.jsx
Normal file
165
components/project/ProjectDetails.jsx
Normal 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>
|
||||
);
|
||||
}
|
||||
51
components/project/Projects.jsx
Normal file
51
components/project/Projects.jsx
Normal 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>
|
||||
);
|
||||
}
|
||||
238
components/service/ServiceDetails.jsx
Normal file
238
components/service/ServiceDetails.jsx
Normal 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>
|
||||
);
|
||||
}
|
||||
75
components/service/Services.jsx
Normal file
75
components/service/Services.jsx
Normal 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
65
components/team/Team.jsx
Normal 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>
|
||||
);
|
||||
}
|
||||
194
components/team/TeamDetails.jsx
Normal file
194
components/team/TeamDetails.jsx
Normal 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 & 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
229
data/blogs.js
Normal 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
12
data/brands.js
Normal 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
67
data/facts.js
Normal 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
42
data/faq.js
Normal 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
26
data/gallery.js
Normal 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
103
data/menu.js
Normal 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: "FAQ’S", href: "/faq" },
|
||||
{ name: "Login / Register", href: "/contact" },
|
||||
];
|
||||
41
data/pricing.js
Normal file
41
data/pricing.js
Normal 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
154
data/projects.js
Normal 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
236
data/services.js
Normal 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
17
data/skills.js
Normal 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
423
data/team.js
Normal 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
48
data/testimonials.js
Normal 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
7
jsconfig.json
Normal file
@ -0,0 +1,7 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"paths": {
|
||||
"@/*": ["./*"]
|
||||
}
|
||||
}
|
||||
}
|
||||
4
next.config.mjs
Normal file
4
next.config.mjs
Normal file
@ -0,0 +1,4 @@
|
||||
/** @type {import('next').NextConfig} */
|
||||
const nextConfig = {};
|
||||
|
||||
export default nextConfig;
|
||||
832
package-lock.json
generated
Normal file
832
package-lock.json
generated
Normal 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
25
package.json
Normal 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
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
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
12633
public/assets/css/bootstrap.min.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
0
public/assets/css/color.css
Normal file
0
public/assets/css/color.css
Normal file
351
public/assets/css/magnific-popup.css
Normal file
351
public/assets/css/magnific-popup.css
Normal 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
6892
public/assets/css/main.css
Normal file
File diff suppressed because it is too large
Load Diff
1
public/assets/css/main.css.map
Normal file
1
public/assets/css/main.css.map
Normal file
File diff suppressed because one or more lines are too long
148
public/assets/css/meanmenu.css
Normal file
148
public/assets/css/meanmenu.css
Normal 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
Loading…
x
Reference in New Issue
Block a user