feat(doctor): enhance doctor schema with addresses, ratings, and social media links
feat(robots): update disallow rules to include '/panel' feat(sitemap): implement separate sitemaps for doctors, clinics, and blogs feat(icons): add social media icons for doctor profiles
This commit is contained in:
@@ -5,6 +5,19 @@ import LikeDI from "@/components/icons/LikeDI";
|
||||
import StarDI from "@/components/icons/StarDI";
|
||||
import TickCircle from "@/components/icons/TickCircle";
|
||||
import DoctorAvatar from "@/app/component/DoctorAvatar";
|
||||
import Instagram from "@/components/icons/Instagram";
|
||||
import Telegram from "@/components/icons/Telegram";
|
||||
import Aparat from "@/components/icons/Aparat";
|
||||
import Youtube from "@/components/icons/Youtube";
|
||||
import Linkedin from "@/components/icons/Linkedin";
|
||||
|
||||
const SOCIAL_ICONS = {
|
||||
instagram: Instagram,
|
||||
telegram: Telegram,
|
||||
aparat: Aparat,
|
||||
youtube: Youtube,
|
||||
linkedin: Linkedin,
|
||||
};
|
||||
|
||||
function Title({ doctor }) {
|
||||
return (
|
||||
@@ -67,6 +80,26 @@ function Title({ doctor }) {
|
||||
</div>
|
||||
</div>
|
||||
</CustomLoading>
|
||||
{doctor?.social_media && Object.values(doctor.social_media).some(Boolean) && (
|
||||
<div className="flex items-center gap-2">
|
||||
{Object.entries(doctor.social_media).map(([key, url]) => {
|
||||
if (!url) return null;
|
||||
const Icon = SOCIAL_ICONS[key];
|
||||
if (!Icon) return null;
|
||||
return (
|
||||
<a
|
||||
key={key}
|
||||
href={url}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="flex items-center justify-center p-1.5 rounded-full bg-[#F8F8FF]"
|
||||
>
|
||||
<Icon />
|
||||
</a>
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
function Aparat() {
|
||||
return (
|
||||
<svg
|
||||
className="transition-all duration-500"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="20"
|
||||
height="20"
|
||||
viewBox="0 0 20 20"
|
||||
fill="none"
|
||||
>
|
||||
<path
|
||||
d="M18.3334 10.0001C18.3334 14.6025 14.6025 18.3334 10.0001 18.3334C5.39771 18.3334 1.66675 14.6025 1.66675 10.0001C1.66675 5.39771 5.39771 1.66675 10.0001 1.66675C14.6025 1.66675 18.3334 5.39771 18.3334 10.0001Z"
|
||||
stroke="#5559CE"
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
/>
|
||||
<path
|
||||
d="M8.33325 7.08331L12.9166 9.99998L8.33325 12.9166V7.08331Z"
|
||||
stroke="#5559CE"
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
/>
|
||||
</svg>
|
||||
);
|
||||
}
|
||||
|
||||
export default Aparat;
|
||||
@@ -0,0 +1,27 @@
|
||||
function Youtube() {
|
||||
return (
|
||||
<svg
|
||||
className="transition-all duration-500"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="20"
|
||||
height="20"
|
||||
viewBox="0 0 20 20"
|
||||
fill="none"
|
||||
>
|
||||
<path
|
||||
d="M1.66675 10.0001C1.66675 6.27106 1.66675 4.40656 2.78731 3.18996C3.90787 1.97337 5.66881 1.97337 9.19069 1.97337H10.8092C14.331 1.97337 16.092 1.97337 17.2125 3.18996C18.3331 4.40656 18.3334 6.27106 18.3334 10.0001C18.3334 13.7291 18.3334 15.5936 17.2125 16.8102C16.092 18.0268 14.331 18.0268 10.8092 18.0268H9.19069C5.66881 18.0268 3.90787 18.0268 2.78731 16.8102C1.66675 15.5936 1.66675 13.7291 1.66675 10.0001Z"
|
||||
stroke="#5559CE"
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
/>
|
||||
<path
|
||||
d="M8.33325 7.50002L12.5 10.0001L8.33325 12.5V7.50002Z"
|
||||
stroke="#5559CE"
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
/>
|
||||
</svg>
|
||||
);
|
||||
}
|
||||
|
||||
export default Youtube;
|
||||
Reference in New Issue
Block a user