diff --git a/src/pages/service/DetailService.tsx b/src/pages/service/DetailService.tsx
index bb71bbc..c716d60 100644
--- a/src/pages/service/DetailService.tsx
+++ b/src/pages/service/DetailService.tsx
@@ -2,6 +2,7 @@ import { FC, Fragment, useState } from 'react'
import { useTranslation } from 'react-i18next'
import Rate from 'rc-rate'
import ServiceImages from './components/ServiceImages'
+import ServiceAudios from './components/ServiceAudios'
import AvatarImage from '../../assets/images/avatar_image.png'
import ServiceHeader from './components/ServiceHeader'
import { useGetServiceBySlug } from './hooks/useServiceData'
@@ -82,12 +83,15 @@ const DetailService: FC = () => {
-
+
{t('service.compelete_description')}
+
+
+
= ({ item }) => {
+ if (!item?.audios || item.audios.length === 0) {
+ return null
+ }
+
+ return (
+
+
+
+ {item.audios.map((audio) => (
+
+ ))}
+
+
+ )
+}
+
+export default ServiceAudios
diff --git a/src/pages/service/components/ServiceImages.tsx b/src/pages/service/components/ServiceImages.tsx
index 8efa75f..282fac9 100644
--- a/src/pages/service/components/ServiceImages.tsx
+++ b/src/pages/service/components/ServiceImages.tsx
@@ -1,5 +1,7 @@
-import { FC } from 'react'
+import { FC, useState, useRef } from 'react'
import { Swiper, SwiperSlide } from 'swiper/react'
+import { ServiceDetailDataType } from '../types/ServiecTypes'
+import { Play, Pause } from 'iconsax-react'
const SWIPER_SLIDE_STYLE = {
overflow: 'visible !important',
@@ -7,10 +9,46 @@ const SWIPER_SLIDE_STYLE = {
}
type Props = {
- images: { id: string, imageUrl: string }[]
+ item: ServiceDetailDataType
}
-const ServiceImages: FC
= ({ images }) => {
+const ServiceImages: FC = ({ item }) => {
+ const [playingVideos, setPlayingVideos] = useState<{ [key: string]: boolean }>({})
+ const videoRefs = useRef<{ [key: string]: HTMLVideoElement | null }>({})
+
+ const toggleVideo = (videoId: string) => {
+ const video = videoRefs.current[videoId]
+ if (!video) return
+
+ if (playingVideos[videoId]) {
+ video.pause()
+ setPlayingVideos(prev => ({
+ ...prev,
+ [videoId]: false
+ }))
+ } else {
+ video.play()
+ setPlayingVideos(prev => ({
+ ...prev,
+ [videoId]: true
+ }))
+ }
+ }
+
+ const handleVideoPlay = (videoId: string) => {
+ setPlayingVideos(prev => ({
+ ...prev,
+ [videoId]: true
+ }))
+ }
+
+ const handleVideoPause = (videoId: string) => {
+ setPlayingVideos(prev => ({
+ ...prev,
+ [videoId]: false
+ }))
+ }
+
return (
= ({ images }) => {
spaceBetween={20} // فاصله پیشفرض بین اسلایدها
slidesPerView='auto'
>
+ {/* نمایش ویدیوها */}
+ {item?.videos?.map((video) => (
+
+
+
+
+ ))}
- {
- images.map((item) => {
- return (
-
-
-

-
-
- )
- })
- }
+ {/* نمایش تصاویر */}
+ {item?.images?.map((image) => (
+
+
+

+
+
+ ))}
)
diff --git a/src/pages/service/types/ServiecTypes.ts b/src/pages/service/types/ServiecTypes.ts
index 5b2ae6f..075c014 100644
--- a/src/pages/service/types/ServiecTypes.ts
+++ b/src/pages/service/types/ServiecTypes.ts
@@ -36,6 +36,8 @@ export type ServiceDetailDataType = {
icon: string;
id: string;
images: { id: string; createdAt: string; imageUrl: string }[];
+ videos: { id: string; createdAt: string; videoUrl: string }[];
+ audios: { id: string; createdAt: string; audioUrl: string }[];
isActive: boolean;
isDanakSuggest: boolean;
link: string;