Skip to content

Commit 74daf36

Browse files
Jay PanchalJay Panchal
authored andcommitted
feat: Added Tags page to find blog or case study based on tags
1 parent f09d442 commit 74daf36

File tree

1 file changed

+86
-0
lines changed

1 file changed

+86
-0
lines changed

src/app/tag/[slug]/page.tsx

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
import PageNavbar from "@/components/PageNavbar";
2+
import { blogsPageData, caseStudiesData } from "@/data";
3+
import Link from "next/link";
4+
import { notFound } from "next/navigation";
5+
6+
export default async function Page({
7+
params,
8+
}: {
9+
params: Promise<{ slug: string }>;
10+
}) {
11+
const slug = (await params).slug;
12+
13+
const filteredBlogData = Object.entries(blogsPageData)
14+
.filter(([, blogData]) => {
15+
return blogData.tags.some((tag) => tag.id === slug);
16+
})
17+
.map(([id, blogData]) => ({
18+
id,
19+
...blogData,
20+
}));
21+
22+
const filteredCaseStudiesData = Object.entries(caseStudiesData)
23+
.filter(([, caseStudyData]) => {
24+
return caseStudyData.services.some((tag) => tag.id === slug);
25+
})
26+
.map(([dataId, caseStudyData]) => ({
27+
dataId,
28+
...caseStudyData,
29+
}));
30+
31+
if (filteredBlogData.length === 0 && filteredCaseStudiesData.length === 0) {
32+
return notFound();
33+
}
34+
35+
return (
36+
<>
37+
<section className="relative pb-12 lg:pb-0 lg:mb-28">
38+
<div className="container-padding">
39+
<PageNavbar className="static mt-14 lg:w-full" isNavVisible={false}>
40+
<h1 className="text-5xl lg:text-6xl xl:text-7xl pt-4 mb-1.5 tracking-tighter dot">
41+
Results for: {slug.replace(/^./, (match) => match.toUpperCase())}
42+
</h1>
43+
</PageNavbar>
44+
</div>
45+
</section>
46+
<section className="mb-28">
47+
<div className="container-padding">
48+
<div>
49+
{filteredBlogData.map((blogData) => (
50+
<div key={blogData.id} className="mb-10 pb-10 border-b border-b-black/20">
51+
<h4 className="mb-5">
52+
{blogData.heroSection.heading}
53+
</h4>
54+
<p className="mb-8">
55+
{blogData.subHeadings.join(' ')}
56+
</p>
57+
<Link
58+
className="primary-button bg-white"
59+
href={`/${blogData.id}`}
60+
>
61+
Explore
62+
</Link>
63+
</div>
64+
))}
65+
{filteredCaseStudiesData.map((caseStudy) => (
66+
<div key={caseStudy.id} className="mb-10 pb-10 border-b border-b-black/20">
67+
<h4 className="mb-5">
68+
{caseStudy.description}
69+
</h4>
70+
<p className="mb-8">
71+
{caseStudy.content.overview.join(' ')}
72+
</p>
73+
<Link
74+
className="primary-button bg-white"
75+
href={`/case_study/${caseStudy.id}`}
76+
>
77+
Explore
78+
</Link>
79+
</div>
80+
))}
81+
</div>
82+
</div>
83+
</section>
84+
</>
85+
);
86+
}

0 commit comments

Comments
 (0)