This commit is contained in:
Iliyan Angelov
2025-10-08 13:46:46 +03:00
parent d48c54e2c5
commit 18ae8b9f88
94 changed files with 8882 additions and 1682 deletions

View File

@@ -1,12 +1,47 @@
"use client";
import { use } from 'react';
import Image from "next/legacy/image";
import { useCaseStudy } from "@/lib/hooks/useCaseStudy";
import { getImageUrl } from "@/lib/imageUtils";
import poster from "@/public/images/case/poster.png";
import project from "@/public/images/case/project.png";
import nine from "@/public/images/case/nine.png";
import ten from "@/public/images/case/ten.png";
import eleven from "@/public/images/case/eleven.png";
import twelve from "@/public/images/case/twelve.png";
const CaseSingle = () => {
interface CaseSingleProps {
slug: string;
}
const CaseSingle = ({ slug }: CaseSingleProps) => {
const { caseStudy, loading, error } = useCaseStudy(slug);
if (loading) {
return (
<section className="c-details fix-top pb-120">
<div className="container">
<div className="row">
<div className="col-12">
<p className="text-center">Loading case study...</p>
</div>
</div>
</div>
</section>
);
}
if (error || !caseStudy) {
return (
<section className="c-details fix-top pb-120">
<div className="container">
<div className="row">
<div className="col-12">
<p className="text-center text-danger">Case study not found.</p>
</div>
</div>
</div>
</section>
);
}
return (
<section className="c-details fix-top pb-120">
<div className="container">
@@ -14,16 +49,20 @@ const CaseSingle = () => {
<div className="col-12">
<div className="c-details-intro">
<h2 className="mt-8 text-secondary title-anim fw-7">
Artificial intelligence is the simulation of human intelligence
processes.
{caseStudy.title}
</h2>
{caseStudy.subtitle && (
<h4 className="mt-4 text-secondary">{caseStudy.subtitle}</h4>
)}
<div className="poster mt-60 fade-top">
<div className="parallax-image-wrap">
<div className="parallax-image-inner">
<Image
src={poster}
src={caseStudy.poster_image ? getImageUrl(caseStudy.poster_image) : poster}
className="w-100 parallax-image mh-300"
alt="Image"
alt={caseStudy.title}
width={1200}
height={600}
/>
</div>
</div>
@@ -34,17 +73,14 @@ const CaseSingle = () => {
<h2 className="mt-8 fw-7 text-secondary title-anim mb-24">
Project
</h2>
<p className="cur-lg">
Lorem ipsum dolor sit amet consectetur. Vestibulum
malesuada amet sagittis urna. Mattis eget ultricies est
morbi velit ultrices viverra elit facilisi. Amet est cras
euismod accumsan ornare sagittis ut integer. Sagittis sed
neque massa amet. Lorem vulputate nunc pulvinar maecenas
convallis augue. Magna massa viverra tincidunt vitae lacus
donec arcu consequat in. Maecenas dui nunc in convallis
vulputate vitae lectus eu lacus donec arcu consequat in.
Maecenas dui nunc in convallis vulputate vitae lectus eu.
</p>
{caseStudy.project_overview ? (
<p className="cur-lg">{caseStudy.project_overview}</p>
) : (
<div
className="cur-lg"
dangerouslySetInnerHTML={{ __html: caseStudy.description || '' }}
/>
)}
</div>
</div>
<div className="col-12 col-lg-6 col-xxl-5 offset-xxl-1 fade-wrapper">
@@ -52,88 +88,50 @@ const CaseSingle = () => {
<div className="parallax-image-wrap">
<div className="parallax-image-inner">
<Image
src={project}
src={caseStudy.project_image ? getImageUrl(caseStudy.project_image) : project}
className="w-100 parallax-image mh-260"
alt="Image"
alt={`${caseStudy.title} - Project`}
width={600}
height={500}
/>
</div>
</div>
</div>
</div>
</div>
<div className="row">
<div className="col-12">
<div className="road-map__content">
<h2 className="mt-8 fw-7 text-secondary title-anim mb-24">
Site Map
</h2>
<p className="cur-lg">
Lorem ipsum dolor sit amet consectetur. Vestibulum
malesuada amet sagittis urna. Mattis eget ultricies est
morbi velit ultrices viverra elit facilisi. Amet est cras
euismod accumsan ornare sagittis ut integer. Sagittis sed
neque massa amet. Lorem vulputate nunc pulvinar maecenas
convallis augue. Magna massa viverra tincidunt vitae lacus
donec arcu consequat in. Maecenas dui nunc in convallis
vulputate vitae lectus eu.
</p>
</div>
</div>
</div>
<div className="row vertical-column-gap mt-60 fade-wrapper">
<div className="col-12 col-sm-6 col-xl-3">
<div className="c-details-thumb fade-top">
<div className="parallax-image-wrap">
<div className="parallax-image-inner">
<Image
src={nine}
className="w-100 mh-300 parallax-image"
alt="Image"
/>
</div>
{caseStudy.site_map_content && (
<div className="row">
<div className="col-12">
<div className="road-map__content">
<h2 className="mt-8 fw-7 text-secondary title-anim mb-24">
Site Map
</h2>
<p className="cur-lg">{caseStudy.site_map_content}</p>
</div>
</div>
</div>
<div className="col-12 col-sm-6 col-xl-3">
<div className="c-details-thumb fade-top">
<div className="parallax-image-wrap">
<div className="parallax-image-inner">
<Image
src={ten}
className="w-100 mh-300 parallax-image"
alt="Image"
/>
)}
{caseStudy.gallery_images && caseStudy.gallery_images.length > 0 && (
<div className="row vertical-column-gap mt-60 fade-wrapper">
{caseStudy.gallery_images.map((image) => (
<div key={image.id} className="col-12 col-sm-6 col-xl-3">
<div className="c-details-thumb fade-top">
<div className="parallax-image-wrap">
<div className="parallax-image-inner">
<Image
src={getImageUrl(image.image) || nine}
className="w-100 mh-300 parallax-image"
alt={image.caption || caseStudy.title}
width={300}
height={300}
/>
</div>
</div>
</div>
</div>
</div>
))}
</div>
<div className="col-12 col-sm-6 col-xl-3">
<div className="c-details-thumb fade-top">
<div className="parallax-image-wrap">
<div className="parallax-image-inner">
<Image
src={eleven}
className="w-100 mh-300 parallax-image"
alt="Image"
/>
</div>
</div>
</div>
</div>
<div className="col-12 col-sm-6 col-xl-3">
<div className="c-details-thumb fade-top">
<div className="parallax-image-wrap">
<div className="parallax-image-inner">
<Image
src={twelve}
className="w-100 mh-300 parallax-image"
alt="Image"
/>
</div>
</div>
</div>
</div>
</div>
)}
</div>
</div>
</div>