Compare commits

..

No commits in common. "f0d1cf08aca6c69bd16b5b0f85061646e21718f8" and "b41a0c0ee2eae1a2b5e46bc4e73f71dd79bc931c" have entirely different histories.

25 changed files with 7 additions and 2306 deletions

View File

@ -9464,20 +9464,12 @@ ul.social-box li a:hover {
.blogbanner-shape {
width: 60%;
width: 45%;
}
}
@media only screen and (min-width: 320px) and (max-width: 1600px){
.blogbanner-shape {
display: none;
}
}
@media only screen and (min-width: 320px) and (max-width: 992px){

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 567 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 304 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 362 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 702 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 210 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 309 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 235 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 983 KiB

File diff suppressed because one or more lines are too long

View File

@ -39,7 +39,7 @@ const staticLinks = [
{ url: '/services-digital-solutions/', changefreq: 'daily', priority: 0.7 },
{ url: '/about/', changefreq: 'weekly', priority: 0.7 },
{ url: '/careers/', changefreq: 'weekly', priority: 0.7 },
{ url: '/portfolio/', changefreq: 'weekly', priority: 0.7 },
{ url: '/portfolio/', changefreq: 'weekly', priority: 0.7 },
{ url: '/blog/', changefreq: 'weekly', priority: 0.7 },
{ url: '/contact/', changefreq: 'monthly', priority: 0.5 },
{ url: '/faq/', changefreq: 'monthly', priority: 0.5 },
@ -82,12 +82,6 @@ const blogPosts = [
{ slug: 'mastering-omnichannel-marketing-strategies-for-2026' },
{ slug: 'how-metatroncube-solutions-improve-local-seo-waterloo' },
{ slug: 'why-metatroncube-solutions-top-choice-social-media-marketing-waterloo' },
{ slug: 'how-does-metatroncube-solutions-help-businesses-get-more-local-customers-through-search-engines' },
{ slug: 'can-metatroncube-solutions-optimize-my-google-business-profile' },
{ slug: 'seo-services-waterloo-small-businesses-metatroncube' },
{ slug: 'boost-google-maps-ranking-waterloo-metatroncube' },
{ slug: 'how-metatroncube-solutions-uses-ai-tools-to-boost-your-marketing-in-toronto' },
{ slug: 'what-types-of-social-media-ads-does-metatroncube-solutions-recommend-for-small-businesses-in-toronto' },
];

View File

@ -1,6 +1,6 @@
"use client";
import { useState, useEffect, useRef } from "react";
import { useState } from "react";
import Image from "next/image";
import Link from "next/link";
import { PortfolioData } from "@/utils/constant.utils";
@ -11,46 +11,18 @@ const tabs = [
{ label: "Graphic Design", value: "graphic" },
{ label: "Google Meta Ads", value: "meta" },
{ label: "Shopify Store", value: "shopify" },
{ label: "WordPress", value: "wordpress" },
{ label: "Logo Branding", value: "logo" },
{ label: "Video Editing", value: "video" },
];
const CaseStudies = () => {
const [activeTab, setActiveTab] = useState("*");
const [visibleCount, setVisibleCount] = useState(6);
const observerRef = useRef(null);
const filteredItems =
activeTab === "*"
? PortfolioData
: PortfolioData.filter((item) => item.category === activeTab);
useEffect(() => {
setVisibleCount(6);
}, [activeTab]);
useEffect(() => {
const observer = new IntersectionObserver(
(entries) => {
if (entries[0].isIntersecting) {
setVisibleCount((prev) => prev + 6);
}
},
{ threshold: 0.1 }
);
if (observerRef.current) {
observer.observe(observerRef.current);
}
return () => {
if (observerRef.current) {
observer.unobserve(observerRef.current);
}
};
}, [filteredItems]);
return (
<>
{/* Title Section */}
@ -109,7 +81,7 @@ const CaseStudies = () => {
{/* Portfolio Grid */}
<div className="row image_load">
{filteredItems.slice(0, visibleCount).map((item) => (
{filteredItems.map((item) => (
<div
key={item.id}
className={`${item.colClass} grid-item ${item.category} ${item.itemClass || ""}`}
@ -215,12 +187,6 @@ const CaseStudies = () => {
</div>
))}
</div>
{/* Sentinel Element for Infinite Scroll */}
<div
ref={observerRef}
style={{ height: "20px", marginBottom: "20px" }}
></div>
</>
);
};

File diff suppressed because it is too large Load Diff