inner banner images are updated

This commit is contained in:
akash 2026-03-04 21:39:47 +05:30
parent 08366424d1
commit 5bafc5d0fa
54 changed files with 2023 additions and 204 deletions

View File

@ -1607,7 +1607,7 @@ only screen and (min-width: 576px) and (max-width: 767px) {
position: relative; position: relative;
list-style: none; list-style: none;
display: inline-block; display: inline-block;
margin-inline-end: 30px; margin-inline-end: 20px;
} }
.main-menu ul li:last-child { .main-menu ul li:last-child {
@ -3957,10 +3957,10 @@ p.banner-text {
background-position: left bottom; background-position: left bottom;
} }
.choose-section figure.image { /* .choose-section figure.image {
position: relative; position: relative;
padding-top: 60px; padding-top: 60px;
} } */
.choose-section .section-title { .choose-section .section-title {
color: #fff; color: #fff;
@ -4021,17 +4021,17 @@ p.banner-text {
@media only screen and (max-width: 1400px) { @media only screen and (max-width: 1400px) {
.choose-section .bg-image { /* .choose-section .bg-image {
display: none; display: none;
} } */
.choose-section figure.image { /* .choose-section figure.image {
padding-right: 120px; padding-right: 120px;
} } */
} }
@media only screen and (max-width: 1199px) { /* @media only screen and (max-width: 1199px) {
.choose-section figure.image { .choose-section figure.image {
display: none; display: none;
@ -4039,7 +4039,7 @@ p.banner-text {
} }
} } */
/*----------------------------------------*/ /*----------------------------------------*/
/* TESTIMONIALS CSS START /* TESTIMONIALS CSS START

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

View File

@ -45,14 +45,18 @@ export default function Home2() {
<> <>
<Header1 /> <Header1 />
<main> <main>
<PageHeader title="About Us" /> <PageHeader
title="About Us"
bannerLeftImage="/assets/images/innerbanner/left/left-about.webp"
bannerRightImage="/assets/images/innerbanner/right/right-about.webp"
/>
{/* <FeaturesSection /> */} {/* <FeaturesSection /> */}
<About2Section /> <About2Section />
{/* <CounterAreaTwo /> */} {/* <CounterAreaTwo /> */}
<CouterAreaThree /> <CouterAreaThree />
{/* <IconCounterSection /> */} {/* <IconCounterSection /> */}
<WhyChooseTwo /> <WhyChooseTwo />
{/* <HelpFormSection /> */} {/* <HelpFormSection /> */}
{/* <WhyChooseSection /> */} {/* <WhyChooseSection /> */}
{/* <WhyChooseUs /> */} {/* <WhyChooseUs /> */}

View File

@ -8,8 +8,12 @@ import InnerBanner from "@/components/common/InnerBanner";
import { BlogType } from "@/types"; import { BlogType } from "@/types";
import PageHeader from "@/components/common/PageHeader"; import PageHeader from "@/components/common/PageHeader";
import Link from "next/link";
import { BlogData } from "@/utils/constant.utils";
import BlogCard from "@/components/cards/BlogCard";
interface BlogDetailsClientProps { interface BlogDetailsClientProps {
blog: BlogType | undefined; blog: any | undefined;
} }
export default function BlogDetailsClient({ blog }: BlogDetailsClientProps) { export default function BlogDetailsClient({ blog }: BlogDetailsClientProps) {
@ -43,16 +47,82 @@ export default function BlogDetailsClient({ blog }: BlogDetailsClientProps) {
); );
} }
// Date sorting for "All Blogs"
const sortedBlogs = [...BlogData].sort(
(a, b) => new Date(b.date).getTime() - new Date(a.date).getTime()
);
// Find a related blog (different from current, same category if possible, else just next one)
const relatedBlog = BlogData.find((b: any) => b.id !== blog.id && b.category === blog.category) ||
BlogData.find((b: any) => b.id !== blog.id) ||
BlogData[0];
return ( return (
<> <>
<Header1 /> <Header1 />
<main> <main>
<PageHeader title="Blog Details" /> <PageHeader
title="Blog Details"
bannerLeftImage={blog.bannerLeftImage}
bannerRightImage={blog.bannerRightImage}
/>
<section className="blog-details-area section-space"> <section className="blog-details-area section-space">
<div className="container"> <div className="container">
<div className="row justify-content-center"> <div className="row gutter-y-30 ">
<div className="col-lg-10"> <div className="col-md-12 col-lg-4">
<div className="service-sidebar">
<div className="service-sidebar__single">
<h3 className="service-sidebar__title">All Blogs</h3>
<ul className="list-unstyled service-sidebar__nav">
{sortedBlogs.map((item: any) => (
<li key={item.id} className={item.slug === blog.slug ? "active" : ""}>
<Link href={`/blog/${item.slug}`}>
{item.title}
<i className="fa-solid fa-chevron-right"></i>
</Link>
</li>
))}
</ul>
</div>
{relatedBlog && (
<div className="service-sidebar__single">
<h3 className="service-sidebar__title">Related Blog</h3>
<div className="blog-sidebar__related">
<div className="blog-style-one relative overflow-hidden">
<Link className="blog-image w-img block relative" href={`/blog/${relatedBlog.slug}`}>
<img src={relatedBlog.image} alt={relatedBlog.title} />
<span className="blog-category-tag">{relatedBlog.category}</span>
</Link>
<div className="blog-content">
<div className="post-meta">
<span className="p-relative">
<i className="fa-solid fa-user"></i> By Admin
</span>
<span className="p-relative">
<i className="fa-solid fa-calendar-days"></i> {relatedBlog.date}
</span>
</div>
<hr />
<h5 className="blog-title mb-30" style={{ fontSize: '18px' }}>
<Link href={`/blog/${relatedBlog.slug}`}>{relatedBlog.title}</Link>
</h5>
<div className="blog-footer">
<div className="blog-link-learn">
<Link href={`/blog/${relatedBlog.slug}`} className="learn-more-link">
Learn More <span>+</span>
</Link>
</div>
</div>
</div>
</div>
</div>
</div>
)}
</div>
</div>
<div className="col-md-12 col-lg-8">
<div className="blog-details-content"> <div className="blog-details-content">
<div className="blog-details-img mb-40"> <div className="blog-details-img mb-40">
<img src={blog.big_image || blog.image} alt={blog.title} className="w-100" /> <img src={blog.big_image || blog.image} alt={blog.title} className="w-100" />
@ -80,7 +150,7 @@ export default function BlogDetailsClient({ blog }: BlogDetailsClientProps) {
<h3 className="sec-title__title">Frequently Asked Questions</h3> <h3 className="sec-title__title">Frequently Asked Questions</h3>
</div> </div>
<div className="faq-one__accordion pelocis-accrodion"> <div className="faq-one__accordion pelocis-accrodion">
{blog.faq.map((item, index) => ( {blog.faq.map((item: any, index: number) => (
<div key={index} className={`accrodion ${activeIndex === index ? 'active' : ''}`}> <div key={index} className={`accrodion ${activeIndex === index ? 'active' : ''}`}>
<div className="accrodion-title" onClick={() => toggleAccordion(index)}> <div className="accrodion-title" onClick={() => toggleAccordion(index)}>
<div className="accrodion-title__shape"></div> <div className="accrodion-title__shape"></div>

View File

@ -18,7 +18,11 @@ export default function BlogPage() {
<> <>
<Header1 /> <Header1 />
<main> <main>
<PageHeader title="Our Blog" /> <PageHeader
title="Our Blog"
bannerLeftImage="/assets/images/innerbanner/left/left-blog.webp"
bannerRightImage="/assets/images/innerbanner/right/right-blog.webp"
/>
{/* <div className="container section-space-top"> {/* <div className="container section-space-top">
<SectionTitle <SectionTitle
tagline="LATEST NEWS" tagline="LATEST NEWS"

View File

@ -28,12 +28,16 @@ export default function CareersPage() {
<> <>
<Header1 /> <Header1 />
<main> <main>
<PageHeader title="Careers" /> <PageHeader
title="Careers"
bannerLeftImage="/assets/images/innerbanner/left/left-career.webp"
bannerRightImage="/assets/images/innerbanner/right/right-careers.webp"
/>
<AboutService /> <AboutService />
{/* <AboutOneSection /> */} {/* <AboutOneSection /> */}
<AboutThree /> <AboutThree />
<WhyChooseUs /> <WhyChooseUs />
<ProjectsSection/> <ProjectsSection />
{/* <FaqVideoSection /> */} {/* <FaqVideoSection /> */}
{/* <ContactSection /> */} {/* <ContactSection /> */}
{/* <FeaturesSection /> */} {/* <FeaturesSection /> */}

View File

@ -24,7 +24,11 @@ export default function ContactPage() {
<> <>
<Header1 /> <Header1 />
<main> <main>
<PageHeader title="Contact Us" /> <PageHeader
title="Contact Us"
bannerLeftImage="/assets/images/innerbanner/left/left-contact.webp"
bannerRightImage="/assets/images/innerbanner/right/right-contact.webp"
/>
<ContactSection /> <ContactSection />
<MapSection /> <MapSection />
</main> </main>

View File

@ -27,7 +27,11 @@ export default function FaqPage() {
<> <>
<Header1 /> <Header1 />
<main> <main>
<PageHeader title="FAQ" /> <PageHeader
title="FAQ"
bannerLeftImage="/assets/images/innerbanner/left/left-faq.webp"
bannerRightImage="/assets/images/innerbanner/right/right-faq.webp"
/>
<FaqPageSection /> <FaqPageSection />
<FaqFour /> <FaqFour />
<FaqFive /> <FaqFive />

View File

@ -5328,8 +5328,8 @@ body {
*/ */
.home-contact-one { .home-contact-one {
background-color: var(--pelocis-black, #1a1f2b); background-color: var(--pelocis-black, #1a1f2b);
padding: 260px 0 112px; padding: 80px 0 80px;
position: relative; /* position: relative;
-webkit-mask: url("data:image/svg+xml;utf8,<svg viewBox='0 0 1920 969' fill='currentColor' xmlns='http://www.w3.org/2000/svg'><path d='M0 124.777L235.25 40.1068L470.5 101.505L939.5 0L1294 127.252H1607H1920V969H0V124.777Z'/></svg>"); -webkit-mask: url("data:image/svg+xml;utf8,<svg viewBox='0 0 1920 969' fill='currentColor' xmlns='http://www.w3.org/2000/svg'><path d='M0 124.777L235.25 40.1068L470.5 101.505L939.5 0L1294 127.252H1607H1920V969H0V124.777Z'/></svg>");
mask: url("data:image/svg+xml;utf8,<svg viewBox='0 0 1920 969' fill='currentColor' xmlns='http://www.w3.org/2000/svg'><path d='M0 124.777L235.25 40.1068L470.5 101.505L939.5 0L1294 127.252H1607H1920V969H0V124.777Z'/></svg>"); mask: url("data:image/svg+xml;utf8,<svg viewBox='0 0 1920 969' fill='currentColor' xmlns='http://www.w3.org/2000/svg'><path d='M0 124.777L235.25 40.1068L470.5 101.505L939.5 0L1294 127.252H1607H1920V969H0V124.777Z'/></svg>");
-webkit-mask-repeat: no-repeat; -webkit-mask-repeat: no-repeat;
@ -5337,10 +5337,10 @@ body {
-webkit-mask-position: top center; -webkit-mask-position: top center;
mask-position: top center; mask-position: top center;
-webkit-mask-size: cover; -webkit-mask-size: cover;
mask-size: cover; mask-size: cover; */
} }
.home-contact-one__bg { /* .home-contact-one__bg {
position: absolute; position: absolute;
left: 0; left: 0;
top: 0; top: 0;
@ -5350,7 +5350,7 @@ body {
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: cover; background-size: cover;
opacity: 0.05; opacity: 0.05;
} } */
.home-contact-one .home-contact__card { .home-contact-one .home-contact__card {
padding: 32px; padding: 32px;
@ -5551,8 +5551,8 @@ body {
*/ */
.home-contact-one { .home-contact-one {
background-color: var(--pelocis-black, #1a1f2b); background-color: var(--pelocis-black, #1a1f2b);
padding: 260px 0 112px; padding: 80px 0 80px;
position: relative; /* position: relative;
-webkit-mask: url("data:image/svg+xml;utf8,<svg viewBox='0 0 1920 969' fill='currentColor' xmlns='http://www.w3.org/2000/svg'><path d='M0 124.777L235.25 40.1068L470.5 101.505L939.5 0L1294 127.252H1607H1920V969H0V124.777Z'/></svg>"); -webkit-mask: url("data:image/svg+xml;utf8,<svg viewBox='0 0 1920 969' fill='currentColor' xmlns='http://www.w3.org/2000/svg'><path d='M0 124.777L235.25 40.1068L470.5 101.505L939.5 0L1294 127.252H1607H1920V969H0V124.777Z'/></svg>");
mask: url("data:image/svg+xml;utf8,<svg viewBox='0 0 1920 969' fill='currentColor' xmlns='http://www.w3.org/2000/svg'><path d='M0 124.777L235.25 40.1068L470.5 101.505L939.5 0L1294 127.252H1607H1920V969H0V124.777Z'/></svg>"); mask: url("data:image/svg+xml;utf8,<svg viewBox='0 0 1920 969' fill='currentColor' xmlns='http://www.w3.org/2000/svg'><path d='M0 124.777L235.25 40.1068L470.5 101.505L939.5 0L1294 127.252H1607H1920V969H0V124.777Z'/></svg>");
-webkit-mask-repeat: no-repeat; -webkit-mask-repeat: no-repeat;
@ -5560,10 +5560,10 @@ body {
-webkit-mask-position: top center; -webkit-mask-position: top center;
mask-position: top center; mask-position: top center;
-webkit-mask-size: cover; -webkit-mask-size: cover;
mask-size: cover; mask-size: cover; */
} }
.home-contact-one__bg { /* .home-contact-one__bg {
position: absolute; position: absolute;
left: 0; left: 0;
top: 0; top: 0;
@ -5573,7 +5573,7 @@ body {
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: cover; background-size: cover;
opacity: 0.05; opacity: 0.05;
} } */
.home-contact-one .home-contact__card { .home-contact-one .home-contact__card {
padding: 32px; padding: 32px;
@ -5785,8 +5785,8 @@ body {
*/ */
.home-contact-one { .home-contact-one {
background-color: var(--pelocis-black, #1a1f2b); background-color: var(--pelocis-black, #1a1f2b);
padding: 260px 0 112px; padding: 80px 0 80px;
position: relative; /* position: relative;
-webkit-mask: url("data:image/svg+xml;utf8,<svg viewBox='0 0 1920 969' fill='currentColor' xmlns='http://www.w3.org/2000/svg'><path d='M0 124.777L235.25 40.1068L470.5 101.505L939.5 0L1294 127.252H1607H1920V969H0V124.777Z'/></svg>"); -webkit-mask: url("data:image/svg+xml;utf8,<svg viewBox='0 0 1920 969' fill='currentColor' xmlns='http://www.w3.org/2000/svg'><path d='M0 124.777L235.25 40.1068L470.5 101.505L939.5 0L1294 127.252H1607H1920V969H0V124.777Z'/></svg>");
mask: url("data:image/svg+xml;utf8,<svg viewBox='0 0 1920 969' fill='currentColor' xmlns='http://www.w3.org/2000/svg'><path d='M0 124.777L235.25 40.1068L470.5 101.505L939.5 0L1294 127.252H1607H1920V969H0V124.777Z'/></svg>"); mask: url("data:image/svg+xml;utf8,<svg viewBox='0 0 1920 969' fill='currentColor' xmlns='http://www.w3.org/2000/svg'><path d='M0 124.777L235.25 40.1068L470.5 101.505L939.5 0L1294 127.252H1607H1920V969H0V124.777Z'/></svg>");
-webkit-mask-repeat: no-repeat; -webkit-mask-repeat: no-repeat;
@ -5794,10 +5794,10 @@ body {
-webkit-mask-position: top center; -webkit-mask-position: top center;
mask-position: top center; mask-position: top center;
-webkit-mask-size: cover; -webkit-mask-size: cover;
mask-size: cover; mask-size: cover; */
} }
.home-contact-one__bg { /* .home-contact-one__bg {
position: absolute; position: absolute;
left: 0; left: 0;
top: 0; top: 0;
@ -5807,7 +5807,7 @@ body {
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: cover; background-size: cover;
opacity: 0.05; opacity: 0.05;
} } */
.home-contact-one .home-contact__card { .home-contact-one .home-contact__card {
padding: 32px; padding: 32px;
@ -6019,8 +6019,8 @@ body {
*/ */
.home-contact-one { .home-contact-one {
background-color: var(--pelocis-black, #1a1f2b); background-color: var(--pelocis-black, #1a1f2b);
padding: 260px 0 112px; padding: 80px 0 80px;
position: relative; /* position: relative;
-webkit-mask: url("data:image/svg+xml;utf8,<svg viewBox='0 0 1920 969' fill='currentColor' xmlns='http://www.w3.org/2000/svg'><path d='M0 124.777L235.25 40.1068L470.5 101.505L939.5 0L1294 127.252H1607H1920V969H0V124.777Z'/></svg>"); -webkit-mask: url("data:image/svg+xml;utf8,<svg viewBox='0 0 1920 969' fill='currentColor' xmlns='http://www.w3.org/2000/svg'><path d='M0 124.777L235.25 40.1068L470.5 101.505L939.5 0L1294 127.252H1607H1920V969H0V124.777Z'/></svg>");
mask: url("data:image/svg+xml;utf8,<svg viewBox='0 0 1920 969' fill='currentColor' xmlns='http://www.w3.org/2000/svg'><path d='M0 124.777L235.25 40.1068L470.5 101.505L939.5 0L1294 127.252H1607H1920V969H0V124.777Z'/></svg>"); mask: url("data:image/svg+xml;utf8,<svg viewBox='0 0 1920 969' fill='currentColor' xmlns='http://www.w3.org/2000/svg'><path d='M0 124.777L235.25 40.1068L470.5 101.505L939.5 0L1294 127.252H1607H1920V969H0V124.777Z'/></svg>");
-webkit-mask-repeat: no-repeat; -webkit-mask-repeat: no-repeat;
@ -6028,10 +6028,10 @@ body {
-webkit-mask-position: top center; -webkit-mask-position: top center;
mask-position: top center; mask-position: top center;
-webkit-mask-size: cover; -webkit-mask-size: cover;
mask-size: cover; mask-size: cover; */
} }
.home-contact-one__bg { /* .home-contact-one__bg {
position: absolute; position: absolute;
left: 0; left: 0;
top: 0; top: 0;
@ -6041,7 +6041,7 @@ body {
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: cover; background-size: cover;
opacity: 0.05; opacity: 0.05;
} } */
.home-contact-one .home-contact__card { .home-contact-one .home-contact__card {
padding: 32px; padding: 32px;
@ -6255,7 +6255,7 @@ body {
content: ""; content: "";
position: absolute; position: absolute;
inset: 0; inset: 0;
background: linear-gradient(270.07deg, #002b98 0.07%, #00060c 99.95%); background: linear-gradient(90deg, #1a1f2b 0%, #3779b9 60%, #1a1f2b 100%) !important;
opacity: 0.8; opacity: 0.8;
z-index: -1; z-index: -1;
} }
@ -6294,7 +6294,7 @@ body {
position: absolute; position: absolute;
left: -8px; left: -8px;
bottom: 0px; bottom: 0px;
background-color: var(--pelocis-base, #3779b9); background-color: var(--pelocis-base, #1a1f2b);
height: 326px; height: 326px;
width: 337px; width: 337px;
clip-path: polygon(60% 0, 100% 0, 100% 100%, 0% 100%); clip-path: polygon(60% 0, 100% 0, 100% 100%, 0% 100%);
@ -6367,6 +6367,7 @@ body {
left: 20px; left: 20px;
bottom: 20px; bottom: 20px;
animation: zumpBottom 2s linear infinite; animation: zumpBottom 2s linear infinite;
opacity: 0.3;
} }
@keyframes moveRight { @keyframes moveRight {
@ -6432,20 +6433,18 @@ body {
.faq-four__content { .faq-four__content {
position: relative; position: relative;
padding: 60px 0 60px; /* padding: 60px 0 60px; */
} }
.faq-four__image2 img { .faq-four__image2 img {
min-height: 650px; min-height: 650px;
object-fit: cover; object-fit: cover;
max-width: 100%; max-width: 100%;
clip-path: polygon( clip-path: polygon(0 0,
0 0, 100% 0,
100% 0, 88% 50%,
88% 50%, 100% 100%,
100% 100%, 0 100%);
0 100%
);
} }
.faq-four__image2__icon { .faq-four__image2__icon {
@ -6481,6 +6480,7 @@ body {
z-index: -1; z-index: -1;
animation: textRotate 15s linear 0s forwards infinite alternate; animation: textRotate 15s linear 0s forwards infinite alternate;
} }
/* .faq-four__content .sec-title { /* .faq-four__content .sec-title {
padding-bottom: 21px; padding-bottom: 21px;
} */ } */
@ -6532,7 +6532,7 @@ body {
font-weight: 500; font-weight: 500;
color: var(--pelocis-black, #1a1f2b); color: var(--pelocis-black, #1a1f2b);
font-family: var(--pelocis-font); font-family: var(--pelocis-font);
font-size: 16px; font-size: 18px !important;
line-height: 25px; line-height: 25px;
margin: 0; margin: 0;
transition: all 500ms ease; transition: all 500ms ease;
@ -7842,7 +7842,7 @@ body {
padding-top: 110px; padding-top: 110px;
padding-bottom: 120px; padding-bottom: 120px;
counter-reset: count; counter-reset: count;
background-color: var(--pelocis-gray, #F5F2EF); /* background-color: var(--pelocis-gray, #F5F2EF); */
} }
.projects-one__title { .projects-one__title {
@ -8182,7 +8182,7 @@ body {
.service-details__benefit__list li { .service-details__benefit__list li {
display: flex; display: flex;
align-items: start; align-items: flex-start;
gap: 12px; gap: 12px;
font-size: 15px; font-size: 15px;
color: #64748b; color: #64748b;
@ -9297,7 +9297,7 @@ body {
.faq-two .primary-btn-1-link { .faq-two .primary-btn-1-link {
background: #3779b9; background: #3779b9;
color: #fff; color: #fff;
padding: 18px 45px; padding: 18px 35px;
border-radius: 12px; border-radius: 12px;
font-weight: 700; font-weight: 700;
border: none; border: none;
@ -10518,6 +10518,15 @@ body {
box-shadow: 0 10px 25px rgba(99, 102, 241, 0.1); box-shadow: 0 10px 25px rgba(99, 102, 241, 0.1);
} }
@media (max-width: 424px) {
.contact-area .contact-info-item .icon {
width: 0px;
height: 0px;
margin-right: 20px;
font-size: 16px;
}
}
.contact-area .contact-info-item:hover .icon { .contact-area .contact-info-item:hover .icon {
background: #3779b9; background: #3779b9;
color: #fff; color: #fff;
@ -11399,4 +11408,217 @@ body {
margin-bottom: 0; margin-bottom: 0;
font-size: 15px; font-size: 15px;
line-height: 1.6; line-height: 1.6;
}
/*
FIX: Global Responsiveness & Overflow (requested breakpoints)
*/
/* Prevent horizontal overflow globally */
html,
body {
overflow-x: hidden !important;
width: 100%;
position: relative;
}
/* Base fixes for Hero and About */
.banner-title {
word-wrap: break-word;
overflow-wrap: break-word;
}
.working-area {
transition: all 0.3s ease;
}
/* 1920px - 1600px */
@media (max-width: 1920px) {
.large-container {
max-width: 1720px !important;
margin: 0 auto;
}
}
@media (max-width: 1600px) {
.large-container {
max-width: 1550px !important;
}
h1.banner-title {
font-size: 56px !important;
}
}
/* 1540px */
@media (max-width: 1540px) {
.large-container {
max-width: 1480px !important;
}
h1.banner-title {
font-size: 52px !important;
}
}
/* 1440px */
@media (max-width: 1440px) {
.large-container {
max-width: 1380px !important;
}
h1.banner-title {
font-size: 50px !important;
line-height: 1.2 !important;
}
}
/* 1360px */
@media (max-width: 1360px) {
.large-container {
max-width: 1300px !important;
}
}
/* 1200px */
@media (max-width: 1200px) {
.large-container {
max-width: 1140px !important;
}
h1.banner-title {
font-size: 48px !important;
}
.about-us-image-area .working-area {
left: -20px !important;
top: 40px !important;
}
}
/* 1024px */
@media (max-width: 1024px) {
.large-container {
max-width: 960px !important;
}
h1.banner-title {
font-size: 42px !important;
}
}
/* 992px */
@media (max-width: 992px) {
.banner-main {
padding: 150px 0 !important;
}
h1.banner-title {
font-size: 38px !important;
line-height: 1.3 !important;
}
.banner-area {
padding-left: 20px !important;
}
}
/* 768px */
@media (max-width: 768px) {
.banner-main {
padding: 100px 0 !important;
}
h1.banner-title {
font-size: 34px !important;
}
.about-us-image-area .working-area {
left: 0 !important;
top: 0 !important;
position: relative !important;
display: inline-block !important;
margin-bottom: 20px !important;
}
/* Inner page banner fixes */
.page-header__bg {
display: none !important;
}
.page-header__shape {
width: 30% !important;
}
}
/* 500px */
@media (max-width: 500px) {
h1.banner-title {
font-size: 28px !important;
line-height: 1.2 !important;
}
.banner-sub-title {
font-size: 14px !important;
letter-spacing: 5px !important;
margin-left: 40px !important;
}
.banner-sub-title:before {
left: -40px !important;
width: 30px !important;
}
}
/* 425px */
@media (max-width: 425px) {
h1.banner-title {
font-size: 26px !important;
}
.banner-btn-area {
flex-direction: column !important;
gap: 15px !important;
}
}
/* 375px */
@media (max-width: 375px) {
h1.banner-title {
font-size: 24px !important;
}
.banner-area {
padding-left: 15px !important;
padding-right: 15px !important;
}
}
/* 320px */
@media (max-width: 320px) {
h1.banner-title {
font-size: 22px !important;
}
.banner-main {
padding: 80px 0 !important;
}
}
@media (max-width: 768px) {
.page-header__bg {
display: none !important;
}
.page-header {
padding: 100px 0 !important;
}
}
@media (max-width: 768px) {
.page-header__shape {
width: 30%;
}
} }

View File

@ -28,7 +28,11 @@ export default function PortfolioPage() {
<> <>
<Header1 /> <Header1 />
<main> <main>
<PageHeader title="Our Portfolio" /> <PageHeader
title="Our Portfolio"
bannerLeftImage="/assets/images/innerbanner/left/left-portfolio.webp"
bannerRightImage="/assets/images/innerbanner/right/right-portfolio.webp"
/>
<PortfolioSection /> <PortfolioSection />
</main> </main>
<Footer1 /> <Footer1 />

View File

@ -25,7 +25,11 @@ export default async function ServiceDetailsPage({ params }: { params: Promise<{
<> <>
<Header1 /> <Header1 />
<main> <main>
<PageHeader title={service.title} /> <PageHeader
title={service.title}
bannerLeftImage={service.bannerLeftImage}
bannerRightImage={service.bannerRightImage}
/>
<ServiceDetails service={service} /> <ServiceDetails service={service} />
</main> </main>
<Footer1 /> <Footer1 />

View File

@ -42,7 +42,11 @@ export default function Home3() {
<> <>
<Header1 /> <Header1 />
<main> <main>
<PageHeader title="Our Services" /> <PageHeader
title="Our Services"
bannerLeftImage="/assets/images/innerbanner/left/left-services.webp"
bannerRightImage="/assets/images/innerbanner/right/right-services.webp"
/>
<FeaturesSection /> <FeaturesSection />
<ChooseSection /> <ChooseSection />
{/* <HelpFormSection /> */} {/* <HelpFormSection /> */}

View File

@ -12,9 +12,12 @@ import CaseStudies from "@/components/web-development-service/CaseStudies";
import Testimonial from "@/components/web-development-service/Testimonial"; import Testimonial from "@/components/web-development-service/Testimonial";
import FAQ from "@/components/web-development-service/FAQ"; import FAQ from "@/components/web-development-service/FAQ";
import Pricing from "@/components/web-development-service/Pricing"; import Pricing from "@/components/web-development-service/Pricing";
import { ourServices } from "@/utils/data";
import "@/components/web-development-service/style.css"; import "@/components/web-development-service/style.css";
export default function WebsiteDevelopmentService() { export default function WebsiteDevelopmentService() {
const service = ourServices.find((s) => s.slug === "web-development");
return ( return (
<MainLayout> <MainLayout>
<Hero /> <Hero />
@ -28,7 +31,7 @@ export default function WebsiteDevelopmentService() {
<CaseStudies /> <CaseStudies />
<Pricing /> <Pricing />
<Testimonial /> <Testimonial />
<FAQ /> <FAQ faqData={service?.faq} />
</MainLayout> </MainLayout>
); );
} }

View File

@ -29,12 +29,12 @@ const BlogCard: React.FC<BlogCardProps> = ({ blog }) => {
</div> </div>
<div className="space20"></div> <div className="space20"></div>
<h4 className="vl-blog-1-title"> <h4 className="vl-blog-1-title">
<Link href="/blogs/single">{blog.title}</Link> <Link href={`/blog/${blog.slug}`}>{blog.title}</Link>
</h4> </h4>
<div className="space16"></div> <div className="space16"></div>
<p>{blog.description}</p> <p>{blog.description}</p>
<div className="vl-blog-1-icon"> <div className="vl-blog-1-icon">
<Link href="/blogs/single"> <Link href={`/blog/${blog.slug}`}>
<i className="fa-solid fa-arrow-right"></i> <i className="fa-solid fa-arrow-right"></i>
</Link> </Link>
</div> </div>

View File

@ -157,7 +157,7 @@ const FaqVideoSection = () => {
</select> </select>
{formErrors.service && <small className="faq-error">{formErrors.service}</small>} {formErrors.service && <small className="faq-error">{formErrors.service}</small>}
</div> </div>
<div className="col-md-12 mb-20"> <div className="col-md-12 mb-20" style={{ overflow: "hidden" }}>
<label className="faq-form-label">Write Message</label> <label className="faq-form-label">Write Message</label>
<textarea <textarea
name="message" name="message"
@ -204,7 +204,7 @@ const FaqVideoSection = () => {
<p className="consultation-text">Book Your Personalized Consultation with Our Experts Today.</p> <p className="consultation-text">Book Your Personalized Consultation with Our Experts Today.</p>
<a <a
href="https://calendly.com/metatroncubeswsolutions/request-consultation?month=2025-05" href="https://calendly.com/metatroncubeswsolutions/request-consultation?month=2025-05"
className="primary-btn-1 mt-4" className="primary-btn-1 mt-4 mb-25"
target="_blank" target="_blank"
rel="noopener noreferrer" rel="noopener noreferrer"
> >

View File

@ -4,15 +4,20 @@ import React from 'react';
interface PageHeaderProps { interface PageHeaderProps {
title: string; title: string;
breadcrumbItems?: { name: string; href?: string }[]; breadcrumbItems?: { name: string; href?: string }[];
bannerLeftImage?: string;
bannerRightImage?: string;
} }
const PageHeader: React.FC<PageHeaderProps> = ({ title, breadcrumbItems }) => { const PageHeader: React.FC<PageHeaderProps> = ({ title, breadcrumbItems, bannerLeftImage, bannerRightImage }) => {
const defaultRightImage = "https://bracketweb.com/pelocishtml/assets/images/backgrounds/page-header-img-1.png";
const defaultLeftImage = "https://bracketweb.com/pelocishtml/assets/images/shapes/bannar-shape-2.png";
return ( return (
<section className="page-header"> <section className="page-header">
<div className="page-header__bg"> <div className="page-header__bg">
<div <div
className="page-header__bg__img" className="page-header__bg__img"
style={{ backgroundImage: 'url(https://bracketweb.com/pelocishtml/assets/images/backgrounds/page-header-img-1.png)' }} style={{ backgroundImage: `url(${bannerRightImage || defaultRightImage})` }}
> >
</div> </div>
<div className="page-header__bg__shape-1"> <div className="page-header__bg__shape-1">
@ -38,7 +43,7 @@ const PageHeader: React.FC<PageHeaderProps> = ({ title, breadcrumbItems }) => {
</div> </div>
<img <img
className="page-header__shape" className="page-header__shape"
src="https://bracketweb.com/pelocishtml/assets/images/shapes/bannar-shape-2.png" src={bannerLeftImage || defaultLeftImage}
alt="bannar-shape" alt="bannar-shape"
/> />
</section> </section>

View File

@ -15,14 +15,14 @@ const services = [
title: "Mobile Application Development", title: "Mobile Application Development",
text: "High-performance mobile apps for iOS and Android.", text: "High-performance mobile apps for iOS and Android.",
icon: "/assets/imgs/icon/icon-2.png", icon: "/assets/imgs/icon/icon-2.png",
link: "/services-digital-solutions/mobile-app-development", link: "/services-digital-solutions/mobile-application-development",
}, },
{ {
id: 2, id: 2,
title: "Graphic Designing", title: "Graphic Designing",
text: "Creative graphic design solutions for your brand.", text: "Creative graphic design solutions for your brand.",
icon: "/assets/imgs/icon/icon-3.png", icon: "/assets/imgs/icon/icon-3.png",
link: "/services-digital-solutions/graphic-designing", link: "/services-digital-solutions/graphic-designing-company",
}, },
{ {
id: 3, id: 3,
@ -36,14 +36,14 @@ const services = [
title: "SEO & Content Writing", title: "SEO & Content Writing",
text: "Optimization and content that drives organic growth.", text: "Optimization and content that drives organic growth.",
icon: "/assets/imgs/icon/icon-5.png", icon: "/assets/imgs/icon/icon-5.png",
link: "/services-digital-solutions/seo-content-writing", link: "/services-digital-solutions/search-engine-optimization-seo-content-writing",
}, },
{ {
id: 5, id: 5,
title: "Digital Marketing", title: "Digital Marketing",
text: "Strategic digital marketing to grow your online presence.", text: "Strategic digital marketing to grow your online presence.",
icon: "/assets/imgs/icon/icon-6.png", icon: "/assets/imgs/icon/icon-6.png",
link: "/services-digital-solutions/digital-marketing", link: "/services-digital-solutions/digital-marketing-agency-in-canada",
}, },
]; ];

View File

@ -10,7 +10,7 @@ const projectsData = [
description: "5 Feb, 2025 | Full Time", description: "5 Feb, 2025 | Full Time",
image: "/assets/images/careers/web-dev.webp", image: "/assets/images/careers/web-dev.webp",
category: "web", category: "web",
link: "/service/website-development-company" link: "/services-digital-solutions/web-development"
}, },
{ {
id: 2, id: 2,
@ -18,7 +18,7 @@ const projectsData = [
description: "5 Feb, 2025 | Full Time", description: "5 Feb, 2025 | Full Time",
image: "/assets/images/careers/seo.webp", image: "/assets/images/careers/seo.webp",
category: "seo", category: "seo",
link: "/service/search-engine-optimization-seo-content-writing" link: "/services-digital-solutions/search-engine-optimization-seo-content-writing"
}, },
{ {
id: 3, id: 3,
@ -26,7 +26,7 @@ const projectsData = [
description: "5 Feb, 2025 | Full Time", description: "5 Feb, 2025 | Full Time",
image: "/assets/images/careers/digi-marketing.webp", image: "/assets/images/careers/digi-marketing.webp",
category: "dm", category: "dm",
link: "/service/digital-marketing-agency-in-canada" link: "/services-digital-solutions/digital-marketing-agency-in-canada"
} }
]; ];

View File

@ -4,9 +4,9 @@ const AboutSection = () => {
return ( return (
<section className="about-us-section section-space p-relative"> <section className="about-us-section section-space p-relative">
<div className="shape-area"> <div className="shape-area">
<div className="shape-1" style={{ backgroundImage: "url(/assets/imgs/bg/bg-shape-1.png)" }}></div> {/* <div className="shape-1" style={{ backgroundImage: "url(/assets/imgs/bg/bg-shape-1.png)" }}></div> */}
<div className="shape-2 quote-animation" style={{ backgroundImage: "url(/assets/imgs/shapes/shape-7.png)" }}></div> {/* <div className="shape-2 quote-animation" style={{ backgroundImage: "url(/assets/imgs/shapes/shape-7.png)" }}></div> */}
<div className="shape-3 quote-animation" style={{ backgroundImage: "url(/assets/imgs/shapes/shape-8.png)" }}></div> {/* <div className="shape-3 quote-animation" style={{ backgroundImage: "url(/assets/imgs/shapes/shape-8.png)" }}></div> */}
</div> </div>
<div className="small-container"> <div className="small-container">
<div className="row g-4"> <div className="row g-4">

View File

@ -16,7 +16,7 @@ const ServiceThreeSlider = () => {
<div className="small-container"> <div className="small-container">
<div className="row align-items-end"> <div className="row align-items-end">
<div className="col-xxl-10 col-xl-6"> <div className="col-xxl-10 col-xl-12">
<div className="sec-title-wrapper wow fadeInLeft" data-wow-delay=".5s"> <div className="sec-title-wrapper wow fadeInLeft" data-wow-delay=".5s">
<div className="sec-title sec-title--light"> <div className="sec-title sec-title--light">
<div className="sec-title__shape"></div> <div className="sec-title__shape"></div>
@ -27,14 +27,14 @@ const ServiceThreeSlider = () => {
<img src="https://bracketweb.com/pelocishtml/assets/images/shapes/text-shape-2.png" alt="" className="sec-title__text-shape" /> <img src="https://bracketweb.com/pelocishtml/assets/images/shapes/text-shape-2.png" alt="" className="sec-title__text-shape" />
</div> </div>
</div> </div>
<div className="col-xxl-2 col-xl-6"> {/* <div className="col-xxl-2 col-xl-6">
<div className="service_1_navigation__wrapprer position-relative z-1 text-end mt-30"> <div className="service_1_navigation__wrapprer position-relative z-1 text-end mt-30">
<div className="common-slider-navigation"> <div className="common-slider-navigation">
<button className="service-1-button-prev slider-nav-btn"><i className="fa-solid fa-chevron-left"></i></button> <button className="service-1-button-prev slider-nav-btn"><i className="fa-solid fa-chevron-left"></i></button>
<button className="service-1-button-next slider-nav-btn"><i className="fa-solid fa-chevron-right"></i></button> <button className="service-1-button-next slider-nav-btn"><i className="fa-solid fa-chevron-right"></i></button>
</div> </div>
</div> </div>
</div> </div> */}
</div> </div>
<div className="swiper service-active-1"> <div className="swiper service-active-1">

View File

@ -64,14 +64,14 @@ const Header1 = () => {
<div className="header-shopping-cart my-auto"> <div className="header-shopping-cart my-auto">
<div className="cart-icon"><a href="#"><i className="fa-solid fa-cart-shopping"></i></a></div> <div className="cart-icon"><a href="#"><i className="fa-solid fa-cart-shopping"></i></a></div>
</div> */} </div> */}
<div className="header-action d-none d-xl-inline-flex gap-5"> {/* <div className="header-action d-none d-xl-inline-flex gap-5">
<div className="header-link"> <div className="header-link">
<Link className="primary-btn-1 btn-hover" href="/contact"> <Link className="primary-btn-1 btn-hover" href="/contact">
GET A QUOTE &nbsp; | <i className="fa-solid fa-arrow-right"></i> GET A QUOTE &nbsp; | <i className="fa-solid fa-arrow-right"></i>
<span className="btn-hover-span"></span> <span className="btn-hover-span"></span>
</Link> </Link>
</div> </div>
</div> </div> */}
<div className="header-action"> <div className="header-action">
<div className="header-link-1"> <div className="header-link-1">
<div className="icon"><i className="fa-solid fa-phone-volume"></i></div> <div className="icon"><i className="fa-solid fa-phone-volume"></i></div>
@ -82,7 +82,7 @@ const Header1 = () => {
</div> </div>
</div> </div>
<div <div
className="header__hamburger d-xl-none my-auto" className="header__hamburger d-lg-none my-auto"
onClick={openOffcanvas} onClick={openOffcanvas}
> >
<div className="sidebar__toggle"> <div className="sidebar__toggle">

View File

@ -8,11 +8,11 @@ const NavMenu = () => (
<Link href="/services-digital-solutions">SERVICE <i className="fa-solid fa-angle-down ms-1"></i></Link> <Link href="/services-digital-solutions">SERVICE <i className="fa-solid fa-angle-down ms-1"></i></Link>
<ul className="submenu"> <ul className="submenu">
<li><Link href="/services-digital-solutions/web-development">WEBSITE DEVELOPMENT</Link></li> <li><Link href="/services-digital-solutions/web-development">WEBSITE DEVELOPMENT</Link></li>
<li><Link href="/services-digital-solutions/mobile-app-development">MOBILE APPLICATION DEVELOPMENT</Link></li> <li><Link href="/services-digital-solutions/mobile-application-development">MOBILE APPLICATION DEVELOPMENT</Link></li>
<li><Link href="/services-digital-solutions/graphic-designing">GRAPHIC DESIGNING</Link></li> <li><Link href="/services-digital-solutions/graphic-designing-company">GRAPHIC DESIGNING</Link></li>
<li><Link href="/services-digital-solutions/ui-ux-designing">UI / UX DESIGNING</Link></li> <li><Link href="/services-digital-solutions/ui-ux-designing">UI / UX DESIGNING</Link></li>
<li><Link href="/services-digital-solutions/seo-content-writing">SEO & CONTENT WRITING</Link></li> <li><Link href="/services-digital-solutions/search-engine-optimization-seo-content-writing">SEO & CONTENT WRITING</Link></li>
<li><Link href="/services-digital-solutions/digital-marketing">DIGITAL MARKETING</Link></li> <li><Link href="/services-digital-solutions/digital-marketing-agency-in-canada">DIGITAL MARKETING</Link></li>
</ul> </ul>
</li> </li>
<li><Link href="/portfolio">PORTFOLIO</Link></li> <li><Link href="/portfolio">PORTFOLIO</Link></li>

View File

@ -1,15 +1,22 @@
"use client"; "use client";
import React, { useEffect } from "react"; import React, { useEffect, useState } from "react";
import Link from "next/link"; import Link from "next/link";
import { ServiceType } from "@/types"; import { ServiceType } from "@/types";
import { ourServices } from "@/utils/data"; import { ourServices } from "@/utils/data";
import "@/components/web-development-service/style.css";
interface ServiceDetailsProps { interface ServiceDetailsProps {
service: ServiceType; service: ServiceType;
} }
const ServiceDetails: React.FC<ServiceDetailsProps> = ({ service }) => { const ServiceDetails: React.FC<ServiceDetailsProps> = ({ service }) => {
const [activeIndex, setActiveIndex] = useState<number | null>(0);
const toggleAccordion = (index: number) => {
setActiveIndex(activeIndex === index ? null : index);
};
useEffect(() => { useEffect(() => {
const init = () => { const init = () => {
if (typeof window !== "undefined" && (window as any).initMetatron && (window as any).jQuery) { if (typeof window !== "undefined" && (window as any).initMetatron && (window as any).jQuery) {
@ -25,12 +32,12 @@ const ServiceDetails: React.FC<ServiceDetailsProps> = ({ service }) => {
<section className="service-details section-space"> <section className="service-details section-space">
<div className="container"> <div className="container">
<div className="row gutter-y-30"> <div className="row gutter-y-30">
<div className="col-md-12 col-lg-4"> <div className="col-md-12 col-lg-4">
<div className="service-sidebar"> <div className="service-sidebar">
<div className="service-sidebar__single"> <div className="service-sidebar__single">
<h3 className="service-sidebar__title">All Services</h3> <h3 className="service-sidebar__title">All Services</h3>
<ul className="list-unstyled service-sidebar__nav"> <ul className="list-unstyled service-sidebar__nav">
{ourServices.map((item) => ( {ourServices.slice(0, 6).map((item) => (
<li key={item.id} className={item.slug === service.slug ? "active" : ""}> <li key={item.id} className={item.slug === service.slug ? "active" : ""}>
<Link href={`/services-digital-solutions/${item.slug}`}> <Link href={`/services-digital-solutions/${item.slug}`}>
{item.title} {item.title}
@ -65,8 +72,6 @@ const ServiceDetails: React.FC<ServiceDetailsProps> = ({ service }) => {
<div className="service-details__thumbnail"> <div className="service-details__thumbnail">
<img src={service.image} alt={service.title} /> <img src={service.image} alt={service.title} />
</div> </div>
<h3 className="service-details__title">{service.title}</h3>
<p className="service-details__text">{service.description}</p>
{service.content && ( {service.content && (
<div <div
@ -74,10 +79,41 @@ const ServiceDetails: React.FC<ServiceDetailsProps> = ({ service }) => {
dangerouslySetInnerHTML={{ __html: service.content }} dangerouslySetInnerHTML={{ __html: service.content }}
/> />
)} )}
{service.faq && service.faq.length > 0 && (
<div className="service-details__faq-wrapper mt-40">
<div className="sec-title mb-40">
<div className="sec-title__shape"></div>
<h6 className="sec-title__tagline">Service FAQ</h6>
<h3 className="sec-title__title" style={{ fontSize: '34px' }}>Frequently Asked Questions</h3>
</div>
<div className="faq-one__accordion pelocis-accrodion">
{service.faq.map((item, index) => (
<div key={index} className={`accrodion ${activeIndex === index ? 'active' : ''}`}>
<div className="accrodion-title" onClick={() => toggleAccordion(index)}>
<div className="accrodion-title__shape"></div>
<div className="accrodion-title__icon">
<i className="fa fa-check"></i>
</div>
<h4 style={{ fontSize: '24px' }}>
{item.question}
<i className="icon-right-arrow-white"></i>
</h4>
</div>
<div className="accrodion-content" style={{ display: activeIndex === index ? 'block' : 'none' }}>
<div className="inner">
<p style={{ fontSize: '18px', color: '#444', lineHeight: '1.8' }} dangerouslySetInnerHTML={{ __html: item.answer }} />
</div>
</div>
</div>
))}
</div>
</div>
)}
</div> </div>
</div> </div>
</div> </div>
</div> </div>

View File

@ -55,7 +55,7 @@ const AccordionItem = ({
onToggle, onToggle,
align, align,
}: { }: {
faq: { q: string; a: string }; faq: { question: string; answer: string };
isOpen: boolean; isOpen: boolean;
onToggle: () => void; onToggle: () => void;
align: "left" | "right"; align: "left" | "right";
@ -64,7 +64,7 @@ const AccordionItem = ({
className={`faqv2-item${isOpen ? " faqv2-item-open" : ""} faqv2-item-${align}`} className={`faqv2-item${isOpen ? " faqv2-item-open" : ""} faqv2-item-${align}`}
> >
<button className="faqv2-question" onClick={onToggle} aria-expanded={isOpen}> <button className="faqv2-question" onClick={onToggle} aria-expanded={isOpen}>
<span className="faqv2-q-text">{faq.q}</span> <span className="faqv2-q-text">{faq.question}</span>
<span className={`faqv2-icon${isOpen ? " faqv2-icon-open" : ""}`}> <span className={`faqv2-icon${isOpen ? " faqv2-icon-open" : ""}`}>
<i className="fa-solid fa-chevron-down"></i> <i className="fa-solid fa-chevron-down"></i>
</span> </span>
@ -76,18 +76,26 @@ const AccordionItem = ({
padding: "0 20px 18px 20px", padding: "0 20px 18px 20px",
}} }}
> >
<p>{faq.a}</p> <p>{faq.answer}</p>
</div> </div>
</div> </div>
); );
const FAQ = () => { const FAQ = ({ faqData }: { faqData?: { question: string; answer: string }[] }) => {
const [openId, setOpenId] = useState<string | null>("left-0"); const [openId, setOpenId] = useState<string | null>("left-0");
const toggleFaq = (id: string) => { const toggleFaq = (id: string) => {
setOpenId(prev => prev === id ? null : id); setOpenId(prev => prev === id ? null : id);
}; };
// If no faqData provided, use empty arrays
const faqs = faqData || [];
const half = Math.ceil(faqs.length / 2);
const leftFAQs = faqs.slice(0, half);
const rightFAQs = faqs.slice(half);
if (faqs.length === 0) return null;
return ( return (
<section className="ztc-faq-section sp1" id="faq"> <section className="ztc-faq-section sp1" id="faq">
{/* Section Header */} {/* Section Header */}
@ -105,12 +113,6 @@ const FAQ = () => {
<GsapReveal y={20} delay={0.2}> <GsapReveal y={20} delay={0.2}>
<h2 className="text-anime-style-3 faqv2-title">Frequently Asked Questions</h2> <h2 className="text-anime-style-3 faqv2-title">Frequently Asked Questions</h2>
</GsapReveal> </GsapReveal>
{/* <div className="space16"></div>
<GsapReveal y={20} delay={0.3}>
<p className="faqv2-desc" style={{ color: '#343a40' }}>
Everything you need to know about our IT services. Can&apos;t find the answer you&apos;re looking for? <Link href="/pages/contact" style={{ color: '#3779b9', fontWeight: 600 }}>Talk to our team.</Link>
</p>
</GsapReveal> */}
</div> </div>
</div> </div>
</div> </div>
@ -120,7 +122,7 @@ const FAQ = () => {
<div className="container faqv2-grid" style={{ paddingTop: '20px' }}> <div className="container faqv2-grid" style={{ paddingTop: '20px' }}>
<div className="row align-items-start" style={{ rowGap: '32px' }}> <div className="row align-items-start" style={{ rowGap: '32px' }}>
{/* ===== LEFT: 5 FAQs ===== */} {/* ===== LEFT: FAQs ===== */}
<div className="col-lg-4 col-md-12 faqv2-col-left"> <div className="col-lg-4 col-md-12 faqv2-col-left">
<div className="faqv2-accordion"> <div className="faqv2-accordion">
{leftFAQs.map((faq, idx) => ( {leftFAQs.map((faq, idx) => (
@ -146,6 +148,7 @@ const FAQ = () => {
</div> </div>
</div> </div>
{/* ===== RIGHT: FAQs ===== */}
<div className="col-lg-4 col-md-12 faqv2-col-right"> <div className="col-lg-4 col-md-12 faqv2-col-right">
<div className="faqv2-accordion"> <div className="faqv2-accordion">
{rightFAQs.map((faq, idx) => ( {rightFAQs.map((faq, idx) => (

View File

@ -187,35 +187,82 @@ h2,
.heading2 h2, .heading2 h2,
.heading1 h2, .heading1 h2,
.consen-section-title h2, .consen-section-title h2,
.vl-section-title { .vl-section-title,
font-size: var(--section-heading-size) !important; .service-details__content-title,
/* Refined Service Details Spacing (Blog Match) */
.service-details__title {
font-size: 34px;
font-weight: 800;
color: #0f172a;
line-height: 1.2;
margin-bottom: 25px;
} }
h3, .service-details__dynamic-content {
h4, font-size: 18px;
.case-study-title h3 { line-height: 1.8;
font-size: var(--subheading-size) !important; color: #475569;
} }
h5, /* .service-details__dynamic-content p {
h6, margin-top: 20px;
.heading2 h5, margin-bottom: 20px;
.heading1 h5, } */
.consen-section-title h5,
.case-study-title h6 { .service-details__dynamic-content h3,
font-size: var(--small-text-size) !important; .service-details__dynamic-content h4 {
font-size: 24px;
font-weight: 700;
color: #1e293b;
margin-top: 25px;
margin-bottom: 12px;
} }
p, .service-details__dynamic-content ul,
.consen-section-title p { .service-details__dynamic-content ol {
font-size: var(--body-size) !important; margin-top: 15px;
margin-bottom: 15px;
} }
.vl-btn1, /* Custom Service Details List */
.vl-btn2, .service-details__benefit__list_custom {
.kf-demo-btn { list-style: none;
font-size: var(--btn-font-size) !important; padding: 0;
padding: var(--btn-padding) !important; margin: 15px 0;
}
.service-details__benefit__list_custom li {
display: flex !important;
align-items: flex-start !important;
gap: 12px;
margin-bottom: 12px !important;
line-height: 1.8;
font-size: 16px;
color: #475569;
}
.service-details__benefit__list_custom li i {
color: #3779b9;
font-size: 18px;
margin-top: 5px;
flex-shrink: 0;
}
.service-details__benefit__list_custom li .list-content {
flex: 1;
}
.service-details__benefit__list_custom li b {
color: #1a1f2b;
font-weight: 700;
font-size: 17px !important;
display: inline;
margin-right: 5px;
}
.service-details__benefit__list_custom li p {
margin: 0 !important;
display: inline;
} }
/* Small text utility */ /* Small text utility */
@ -223,6 +270,204 @@ p,
font-size: var(--small-text-size) !important; font-size: var(--small-text-size) !important;
} }
/* Portfolio Cards Section (Pelocis Style) */
.service-details__portfolio-cards {
display: flex;
gap: 30px;
margin-top: 40px;
margin-bottom: 50px;
}
@media (max-width: 991px) {
.service-details__portfolio-cards {
flex-wrap: wrap;
justify-content: center;
}
}
@media (max-width: 767px) {
.service-details__portfolio-cards {
flex-direction: column;
gap: 30px;
}
}
.service-one .service-card {
flex: 1;
min-width: 300px;
padding: 10px;
display: flex;
flex-direction: column;
align-items: center;
border: 1px solid #DDDDDD;
position: relative;
transition: all 500ms ease-in-out;
text-align: center;
background: #fff;
border-radius: 10px;
overflow: hidden;
}
.service-one .service-card__inner {
position: relative;
width: 100%;
padding: 40px 30px;
transition: 0.5s ease-in-out;
z-index: 1;
}
.service-one .service-card__hover {
width: 100%;
height: 100%;
position: absolute;
background-repeat: no-repeat;
background-size: cover;
top: 0px;
left: 0px;
opacity: 0;
visibility: hidden;
border: 1px solid #e2a475;
background-position: center center;
transition: opacity 0.5s ease-in-out;
z-index: -1;
}
.service-one .service-card__hover::after {
background-color: rgba(255, 255, 255, 0.9);
position: absolute;
top: 0px;
left: 0px;
width: 100%;
height: 100%;
content: "";
z-index: -1;
}
.service-one .service-card:hover .service-card__hover {
opacity: 1;
visibility: visible;
}
.service-one .service-card__shape {
width: 218px;
height: 80px;
background-color: #e2a475;
clip-path: polygon(36% 100%, 65% 100%, 100% 0px, 0px 0px);
position: absolute;
top: 0px;
left: 50%;
transform: translateX(-50%) scaleY(0.6);
opacity: 0;
visibility: hidden;
z-index: 1;
transition: 500ms ease-in-out;
}
.service-one .service-card:hover .service-card__shape {
opacity: 1;
visibility: visible;
transform: translateX(-50%) scaleY(1);
}
.service-one .service-card__icon {
width: 76px;
height: 76px;
margin: 0 auto;
margin-bottom: 18px;
background-color: #3779b9;
color: #fff;
display: flex;
justify-content: center;
align-items: center;
font-size: 32px;
border-radius: 10px;
position: relative;
overflow: hidden;
z-index: 1;
transition: all 500ms ease-in-out;
}
.service-one .service-card__icon::before {
content: "";
position: absolute;
right: -22px;
top: -22px;
width: 50%;
height: 50%;
background-color: #222222;
transform: rotate(41deg);
transition: all 500ms ease-in-out;
z-index: -1;
}
.service-one .service-card__icon::after {
content: "";
position: absolute;
left: -22px;
bottom: -22px;
width: 50%;
height: 50%;
background-color: #222222;
transform: rotate(41deg);
transition: all 500ms ease-in-out;
z-index: -1;
}
.service-one .service-card:hover .service-card__icon {
background-color: #222222;
}
.service-one .service-card:hover .service-card__icon::before,
.service-one .service-card:hover .service-card__icon::after {
background-color: #3779b9;
}
.service-one .service-card__title {
font-size: 18px !important;
font-weight: 700;
line-height: 26px;
color: #0f172a;
margin-bottom: 10px !important;
margin-top: 0 !important;
z-index: 1;
position: relative;
transition: all 500ms ease;
}
.service-one .service-card__text {
font-size: 16px;
font-weight: 400;
line-height: 26px;
color: #475569;
margin-bottom: 12px !important;
z-index: 1;
position: relative;
transition: all 500ms ease;
}
.service-one .service-card__link {
font-size: 14px;
font-weight: 700;
color: #3779b9;
text-decoration: none;
text-transform: uppercase;
display: inline-flex;
align-items: center;
gap: 8px;
transition: all 500ms ease;
z-index: 1;
position: relative;
}
.service-one .service-card__link:hover {
color: #0f172a;
}
/* Typography Refinements */
.service-details b {
font-size: 17px !important;
}
body, body,
html { html {
overflow-x: hidden !important; overflow-x: hidden !important;

View File

@ -2,10 +2,13 @@ export interface ServiceType {
id: number; id: number;
icon: string; icon: string;
image?: string; image?: string;
bannerLeftImage?: string;
bannerRightImage?: string;
title: string; title: string;
description: string; description: string;
slug?: string; slug?: string;
content?: string; content?: string;
faq?: { question: string; answer: string }[];
} }
export interface CaseStudyType { export interface CaseStudyType {
@ -28,6 +31,8 @@ export interface TestimonialType {
export interface BlogType { export interface BlogType {
id: number; id: number;
image: string; image: string;
bannerLeftImage?: string;
bannerRightImage?: string;
date: string; date: string;
title: string; title: string;
slug: string; slug: string;

File diff suppressed because it is too large Load Diff