feat: Add CMS context, hooks, and types for managing CMS data

- Implemented CmsContext and CmsProvider for global state management of CMS data.
- Created a custom hook `useGetCms` to fetch CMS data using React Query.
- Defined TypeScript interfaces for CMS response and its related data structures.
- Added error handling for data fetching in both the service and context.
This commit is contained in:
AmirReza Jamali
2025-11-11 15:22:12 +03:30
parent 910e8aed89
commit efbdb82535
12 changed files with 198 additions and 107 deletions
+6 -6
View File
@@ -124,7 +124,7 @@ export default function Home() {
</p>
</div>
<ul className="flex flex-col gap-4 lg:flex-row lg:justify-between">
<li className="flex flex-col gap-4 lg:w-80">
<li className="flex flex-col lg:w-80 gap-4 transition duration-500 hover:shadow-2xl p-5 rounded-2xl hover:transform hover:scale-110">
<div className="p-4">
<Image
src={"/clock.svg"}
@@ -139,10 +139,10 @@ export default function Home() {
monitor the market and prepare high-quality bids.
</p>
</li>
<li className="flex flex-col gap-4 lg:w-80">
<li className="flex flex-col gap-4 lg:w-80 transition duration-500 hover:shadow-2xl p-5 rounded-2xl hover:transform hover:scale-110">
<div className="p-4">
<Image
src={"/clipboard.svg"}
src={"/file.svg"}
alt="clipboard icon"
width={36}
height={36}
@@ -154,7 +154,7 @@ export default function Home() {
corporations with dedicated tender departments.
</p>
</li>
<li className="flex flex-col gap-4 lg:w-80">
<li className="flex flex-col gap-4 lg:w-80 transition duration-500 hover:shadow-2xl p-5 rounded-2xl hover:transform hover:scale-110">
<div className="p-4">
<Image
src={"/arrow-up.svg"}
@@ -176,7 +176,7 @@ export default function Home() {
The Opplens Advantage
</h2>
<div className="flex flex-col gap-10 lg:flex-row">
<article className="flex flex-col gap-7 bg-[#FFF7EB] p-10 rounded-3xl lg:pb-20">
<article className="flex flex-col gap-7 bg-[#FFF7EB] p-10 rounded-3xl lg:pb-20 hover:shadow-2xl hover:transform hover:scale-110 hover:border border-[#ffdca7] transition duration-500">
<Image
src={"people.svg"}
width={48}
@@ -192,7 +192,7 @@ export default function Home() {
</p>
</div>
</article>
<article className="flex flex-col gap-7 bg-[#E5EFFF] p-10 rounded-3xl lg:pb-20">
<article className="flex flex-col gap-7 bg-[#E5EFFF] p-10 rounded-3xl lg:pb-20 hover:shadow-2xl hover:transform hover:scale-110 hover:border border-(--primary) transition duration-500">
<Image
src={"shield-tick.svg"}
width={48}