Skip to content

Commit df13ace

Browse files
committed
Refactor panels to implement like functionality and remove social media share buttons
- Added `useLikes` hook to manage likes for each panel. - Updated like button styling and functionality across all panels. - Removed social media share sections from each panel for a cleaner UI. - Adjusted spacing and layout for improved readability and consistency.
1 parent a541dca commit df13ace

10 files changed

Lines changed: 488 additions & 615 deletions

src/components/home/CheckUpSection.tsx

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,45 +10,45 @@ const packages = [
1010
id: 1,
1111
title: "Sporcu Check – Up Paketi",
1212
image: getImagePath("paketleri/Sporcu-Paketi.jpg"),
13-
href: "/paketler/sporcu-check-up-paketi",
13+
href: "/paketler",
1414
},
1515
{
1616
id: 2,
1717
title: "Saç Dökülmesi Paketi",
1818
image: getImagePath("paketleri/Sac-Dokulmesi-Paketi.jpg"),
19-
href: "/paketler/sac-dokulmesi-paketi",
19+
href: "/paketler",
2020
},
2121
{
2222
id: 3,
2323
title: "Kardiyak Checkup Paketi",
2424
image: getImagePath("paketleri/Kardiyak-Check-Up-Paketi.jpg"),
25-
href: "/paketler/kardiyak-checkup-paketi",
25+
href: "/paketler",
2626
},
2727
{
2828
id: 4,
2929
title: "Kansızlık ve Vitamin Eksikliği Kontrolü",
3030
image: getImagePath(
3131
"paketleri/Kansizlik-ve-Vitamin-Eksikligi-Kontrolu-Paketi.jpg"
3232
),
33-
href: "/paketler/kansizlik-ve-vitamin-eksikligi-kontrolu",
33+
href: "/paketler",
3434
},
3535
{
3636
id: 5,
3737
title: "Kadın Checkup Paketi",
3838
image: getImagePath("paketleri/Kadin-Check-Up-Paketi.jpg"),
39-
href: "/paketler/kadin-checkup-paketi",
39+
href: "/paketler",
4040
},
4141
{
4242
id: 6,
4343
title: "Erkek Checkup Paketi",
4444
image: getImagePath("paketleri/Erkek-Check-Up.jpg"),
45-
href: "/paketler/erkek-checkup-paketi",
45+
href: "/paketler",
4646
},
4747
{
4848
id: 7,
4949
title: "Cinsel Yolla Bulaşan Hastalıklar",
5050
image: getImagePath("paketleri/Cinsel-Yolla-Bulasan.jpg"),
51-
href: "/test-panelleri/cinsel-hastaliklar",
51+
href: "/paketler",
5252
},
5353
];
5454

src/hooks/useLikes.ts

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
import { useState, useEffect } from "react";
2+
3+
interface LikesData {
4+
[key: string]: number;
5+
}
6+
7+
export function useLikes(panelName: string) {
8+
const [likes, setLikes] = useState(0);
9+
const [hasLiked, setHasLiked] = useState(false);
10+
11+
// Load likes from localStorage on mount
12+
useEffect(() => {
13+
const savedLikes = localStorage.getItem("etiklab-panel-likes");
14+
const savedLikedPanels = localStorage.getItem("etiklab-liked-panels");
15+
16+
if (savedLikes) {
17+
try {
18+
const likesData: LikesData = JSON.parse(savedLikes);
19+
setLikes(likesData[panelName] || 0);
20+
} catch (e) {
21+
console.error("Error parsing likes data:", e);
22+
}
23+
}
24+
25+
if (savedLikedPanels) {
26+
try {
27+
const likedPanels: string[] = JSON.parse(savedLikedPanels);
28+
setHasLiked(likedPanels.includes(panelName));
29+
} catch (e) {
30+
console.error("Error parsing liked panels data:", e);
31+
}
32+
}
33+
}, [panelName]);
34+
35+
const toggleLike = () => {
36+
const savedLikes = localStorage.getItem("etiklab-panel-likes");
37+
const savedLikedPanels = localStorage.getItem("etiklab-liked-panels");
38+
39+
let likesData: LikesData = {};
40+
let likedPanels: string[] = [];
41+
42+
if (savedLikes) {
43+
try {
44+
likesData = JSON.parse(savedLikes);
45+
} catch (e) {
46+
console.error("Error parsing likes data:", e);
47+
}
48+
}
49+
50+
if (savedLikedPanels) {
51+
try {
52+
likedPanels = JSON.parse(savedLikedPanels);
53+
} catch (e) {
54+
console.error("Error parsing liked panels data:", e);
55+
}
56+
}
57+
58+
if (hasLiked) {
59+
// Remove like
60+
const newLikes = Math.max(0, (likesData[panelName] || 0) - 1);
61+
likesData[panelName] = newLikes;
62+
likedPanels = likedPanels.filter((panel) => panel !== panelName);
63+
setLikes(newLikes);
64+
setHasLiked(false);
65+
} else {
66+
// Add like
67+
const newLikes = (likesData[panelName] || 0) + 1;
68+
likesData[panelName] = newLikes;
69+
likedPanels.push(panelName);
70+
setLikes(newLikes);
71+
setHasLiked(true);
72+
}
73+
74+
localStorage.setItem("etiklab-panel-likes", JSON.stringify(likesData));
75+
localStorage.setItem("etiklab-liked-panels", JSON.stringify(likedPanels));
76+
};
77+
78+
return { likes, hasLiked, toggleLike };
79+
}

0 commit comments

Comments
 (0)