edit menu

This commit is contained in:
romiz5269
2025-11-19 11:52:41 +03:30
parent f935aecd09
commit 48a65f0e27
7 changed files with 190 additions and 165 deletions

BIN
public/doctor.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -4,11 +4,11 @@ import PageHeaderSlider from "@/ui/page-header-slider/PageHeaderSlider";
import {toPersianNumber} from "@/utils/functions"; import {toPersianNumber} from "@/utils/functions";
import Image from "next/image"; import Image from "next/image";
import React from "react"; import React from "react";
import { getDictionary } from "../dictionaries"; import {getDictionary} from "../dictionaries";
import { Metadata } from "next"; import {Metadata} from "next";
import { pages_titles } from "@/constants"; import {pages_titles} from "@/constants";
export const metadata: Metadata = { export const metadata: Metadata = {
title: pages_titles.doctors['fa'] + ' | ' +'بیمارستان شمال', title: pages_titles.doctors["fa"] + " | " + "بیمارستان شمال",
description: "Shomal Hospital IPD Doctors page", description: "Shomal Hospital IPD Doctors page",
}; };
@@ -21,7 +21,14 @@ export default async function DoctorsPage({
}) { }) {
const {lang} = await params; const {lang} = await params;
const {name = "", expertise = ""} = await searchParams; const {name = "", expertise = ""} = await searchParams;
const {our_doctors,license_number,search_by_name,search,select_expertise,doctors}=await getDictionary(lang) const {
our_doctors,
license_number,
search_by_name,
search,
select_expertise,
doctors,
} = await getDictionary(lang);
const filteredData = doctors.filter((doctor) => { const filteredData = doctors.filter((doctor) => {
const nameMatch = name const nameMatch = name
? Object.values(doctor.fullname.toString()) ? Object.values(doctor.fullname.toString())
@@ -53,7 +60,7 @@ export default async function DoctorsPage({
lang={lang} lang={lang}
defaultName={name} defaultName={name}
defaultExpertise={expertise} defaultExpertise={expertise}
dict={{search,search_by_name,select_this:select_expertise}} dict={{search, search_by_name, select_this: select_expertise}}
/> />
<div className="grid grid-cols-4 gap-10 mt-10 "> <div className="grid grid-cols-4 gap-10 mt-10 ">
{filteredData?.map((doctor) => ( {filteredData?.map((doctor) => (
@@ -63,7 +70,7 @@ export default async function DoctorsPage({
> >
<div className="lg:h-[250px] h-[200px] relative before:absolute before:bottom-0 before:bg-gradient-to-t before:from-white before:to-transparent before:z-10 before:w-full before:h-full before:top-0 before:right-0"> <div className="lg:h-[250px] h-[200px] relative before:absolute before:bottom-0 before:bg-gradient-to-t before:from-white before:to-transparent before:z-10 before:w-full before:h-full before:top-0 before:right-0">
<Image <Image
src="/doctor.png" src="/doctor.jpg"
fill fill
alt="" alt=""
className="object-fill" className="object-fill"

View File

@@ -8,11 +8,11 @@ import {FooterMenuLinks1} from "@/constants/menu/menu.const";
import CustomLink from "@/ui/components/global/CustomLink"; import CustomLink from "@/ui/components/global/CustomLink";
import {getHref} from "@/utils/functions"; import {getHref} from "@/utils/functions";
import {languages_types} from "@/types"; import {languages_types} from "@/types";
import { getDictionary } from "./dictionaries"; import {getDictionary} from "./dictionaries";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Create Next App", title: "بیماران بین الملل | بیمارستان شمال آمل",
description: "Generated by create next app", description: "صفحه ی بیماران بین الملل بیمارستان شمال آمل",
}; };
export async function generateStaticParams() { export async function generateStaticParams() {
return [{lang: "en"}, {lang: "fa"}, {lang: "ar"}]; return [{lang: "en"}, {lang: "fa"}, {lang: "ar"}];
@@ -36,7 +36,8 @@ export default async function RootLayout({
<TopNavbar lang={lang as languages_types} /> <TopNavbar lang={lang as languages_types} />
<TopMenu lang={lang as languages_types} /> <TopMenu lang={lang as languages_types} />
{children} {children}
<footer className="bg-blue-primary rounded-t-2xl py-20 container "> <div className="bg-blue-primary">
<footer className=" rounded-t-2xl py-20 container ">
<div className="grid lg:grid-cols-12 sm:grid-cols-2 grid-cols-1 w-full container lg:gap-x-10 gap-y-0 gap-y-10"> <div className="grid lg:grid-cols-12 sm:grid-cols-2 grid-cols-1 w-full container lg:gap-x-10 gap-y-0 gap-y-10">
<div className="lg:col-span-3 col-span-12 flex flex-col items-center justify-start gap-x-3"> <div className="lg:col-span-3 col-span-12 flex flex-col items-center justify-start gap-x-3">
<div className="relative h-[140px] w-[140px]"> <div className="relative h-[140px] w-[140px]">
@@ -125,6 +126,7 @@ export default async function RootLayout({
</div> </div>
</div> </div>
</footer> </footer>
</div>
</body> </body>
</html> </html>
); );

View File

@@ -116,7 +116,7 @@ export default async function Page({
<div className="grid grid-cols-3 gap-x-10 lg:gap-y-0 gap-y-4 mt-10 lg:h-[600px]"> <div className="grid grid-cols-3 gap-x-10 lg:gap-y-0 gap-y-4 mt-10 lg:h-[600px]">
<div className="lg:col-span-1 col-span-3 rounded-2xl border-[1px] border-neutral-200 overflow-hidden relative"> <div className="lg:col-span-1 col-span-3 rounded-2xl border-[1px] border-neutral-200 overflow-hidden relative">
<div className="lg:h-[410px] h-[300px] relative before:absolute before:bottom-0 before:bg-gradient-to-t before:from-white before:to-transparent before:z-10 before:w-full before:h-full before:top-0 before:right-0"> <div className="lg:h-[410px] h-[300px] relative before:absolute before:bottom-0 before:bg-gradient-to-t before:from-white before:to-transparent before:z-10 before:w-full before:h-full before:top-0 before:right-0">
<Image src="/doctor.png" fill alt="" className="object-fill" /> <Image src="/doctor.jpg" fill alt="" className="object-fill" />
</div> </div>
<div className=" h-full px-6 py-10 space-y-2 "> <div className=" h-full px-6 py-10 space-y-2 ">
<h3 className="lg:text-2xl text-lg font-black text-black"> <h3 className="lg:text-2xl text-lg font-black text-black">

View File

@@ -5,10 +5,10 @@ import {getDictionary} from "../dictionaries";
import Image from "next/image"; import Image from "next/image";
import TransferServicesPackages from "@/ui/TransferServicesPackages"; import TransferServicesPackages from "@/ui/TransferServicesPackages";
import {toPersianNumber} from "@/utils/functions"; import {toPersianNumber} from "@/utils/functions";
import { Metadata } from "next"; import {Metadata} from "next";
import { pages_titles } from "@/constants"; import {pages_titles} from "@/constants";
export const metadata: Metadata = { export const metadata: Metadata = {
title: pages_titles.transfer_services['fa'] + ' | ' +'بیمارستان شمال', title: pages_titles.transfer_services["fa"] + " | " + "بیمارستان شمال",
description: "Shomal Hospital IPD transfer services page", description: "Shomal Hospital IPD transfer services page",
}; };
export default async function TransferServicePage({ export default async function TransferServicePage({
@@ -17,8 +17,14 @@ export default async function TransferServicePage({
params: Promise<{lang: languages_types}>; params: Promise<{lang: languages_types}>;
}) { }) {
const {lang} = await params; const {lang} = await params;
const {transfer_service_page, package_price, phone_number, email,oxin_hotel_location,olympic_hotel_location} = const {
await getDictionary(lang); transfer_service_page,
package_price,
phone_number,
email,
oxin_hotel_location,
olympic_hotel_location,
} = await getDictionary(lang);
return ( return (
<> <>
<PageHeaderSlider <PageHeaderSlider
@@ -42,7 +48,7 @@ export default async function TransferServicePage({
<div className="grid grid-cols-2 gap-x-10 lg:gap-y-0 gap-y-4 mt-10 lg:h-[600px]"> <div className="grid grid-cols-2 gap-x-10 lg:gap-y-0 gap-y-4 mt-10 lg:h-[600px]">
<div className="lg:col-span-1 col-span-3 rounded-2xl border-[1px] border-neutral-200 overflow-hidden relative"> <div className="lg:col-span-1 col-span-3 rounded-2xl border-[1px] border-neutral-200 overflow-hidden relative">
<div className="lg:h-[410px] h-[300px] relative before:absolute before:bottom-0 before:bg-gradient-to-t before:from-white before:to-transparent before:z-10 before:w-full before:h-full before:top-0 before:right-0"> <div className="lg:h-[410px] h-[300px] relative before:absolute before:bottom-0 before:bg-gradient-to-t before:from-white before:to-transparent before:z-10 before:w-full before:h-full before:top-0 before:right-0">
<Image src="/doctor.png" fill alt="" className="object-fill" /> <Image src="/doctor.jpg" fill alt="" className="object-fill" />
</div> </div>
<div className=" h-full px-6 py-10 space-y-2 "> <div className=" h-full px-6 py-10 space-y-2 ">
<h3 className="lg:text-2xl text-lg font-black text-black"> <h3 className="lg:text-2xl text-lg font-black text-black">
@@ -84,7 +90,7 @@ export default async function TransferServicePage({
</div> </div>
<div className="lg:col-span-1 col-span-3 rounded-2xl border-[1px] border-neutral-200 overflow-hidden relative"> <div className="lg:col-span-1 col-span-3 rounded-2xl border-[1px] border-neutral-200 overflow-hidden relative">
<div className="lg:h-[410px] h-[300px] relative before:absolute before:bottom-0 before:bg-gradient-to-t before:from-white before:to-transparent before:z-10 before:w-full before:h-full before:top-0 before:right-0"> <div className="lg:h-[410px] h-[300px] relative before:absolute before:bottom-0 before:bg-gradient-to-t before:from-white before:to-transparent before:z-10 before:w-full before:h-full before:top-0 before:right-0">
<Image src="/doctor.png" fill alt="" className="object-fill" /> <Image src="/doctor.jpg" fill alt="" className="object-fill" />
</div> </div>
<div className=" h-full px-6 py-10 space-y-2 "> <div className=" h-full px-6 py-10 space-y-2 ">
<h3 className="lg:text-2xl text-lg font-black text-black"> <h3 className="lg:text-2xl text-lg font-black text-black">
@@ -143,12 +149,20 @@ export default async function TransferServicePage({
{transfer_service_page.introduction.our_serives_ipd} {transfer_service_page.introduction.our_serives_ipd}
</h3> </h3>
<> <>
<div className="mt-20 introduction_description_subText" dangerouslySetInnerHTML={{__html:transfer_service_page.services}}/> <div
className="mt-20 introduction_description_subText"
dangerouslySetInnerHTML={{__html: transfer_service_page.services}}
/>
</> </>
<h3 className="my-10 lg:text-[3em] text-3xl font-black text-blue-primary text-center relative before:absolute before:w-[100px] before:block before:bg-secondary before:-bottom-5 before:h-[2px] before:left-[50%] before:translate-x-[-50%] "> <h3 className="my-10 lg:text-[3em] text-3xl font-black text-blue-primary text-center relative before:absolute before:w-[100px] before:block before:bg-secondary before:-bottom-5 before:h-[2px] before:left-[50%] before:translate-x-[-50%] ">
{transfer_service_page.introduction.packages_list} {transfer_service_page.introduction.packages_list}
</h3> </h3>
<TransferServicesPackages oxin_hotel_location={oxin_hotel_location} olympic_hotel_location={olympic_hotel_location} transfer_service_page={transfer_service_page} package_price={package_price} /> <TransferServicesPackages
oxin_hotel_location={oxin_hotel_location}
olympic_hotel_location={olympic_hotel_location}
transfer_service_page={transfer_service_page}
package_price={package_price}
/>
</div> </div>
</section> </section>
</> </>

View File

@@ -27,9 +27,9 @@ export default function TopMenu({lang}: {lang: languages_types}) {
return () => window.removeEventListener("scroll", handleScroll); return () => window.removeEventListener("scroll", handleScroll);
}, []); }, []);
return ( return (
<> <div className="w-full">
<div <div
className={`w-full z-30 transition-all duration-300 container flex lg:justify-around justify-between items-center className={`w-full z-30 transition-all duration-300 md:px-10 px-4 flex lg:justify-around justify-between items-center
${ ${
isSticky isSticky
? "h-[80px] lg:fixed top-0 custom-shadow backdrop-blur-3xl bg-white/80" ? "h-[80px] lg:fixed top-0 custom-shadow backdrop-blur-3xl bg-white/80"
@@ -102,6 +102,6 @@ export default function TopMenu({lang}: {lang: languages_types}) {
</div> </div>
</div> </div>
</div> </div>
</> </div>
); );
} }

View File

@@ -1,11 +1,12 @@
import React from "react"; import React from "react";
import LanguagesChanger from "../components/LanguagesChanger"; import LanguagesChanger from "../components/LanguagesChanger";
import { languages_types } from "@/types"; import {languages_types} from "@/types";
import { default_info } from "@/constants"; import {default_info} from "@/constants";
export default function TopNavbar({lang}:{lang:languages_types}) { export default function TopNavbar({lang}: {lang: languages_types}) {
return ( return (
<div className="py-2 container bg-blue-primary flex items-center justify-between"> <div className="bg-blue-primary">
<div className="py-2 container flex items-center justify-between w-full">
<div className="flex items-center justify-center gap-x-2 group"> <div className="flex items-center justify-center gap-x-2 group">
<span className="text-[#e6e6e6] group-hover:text-white"> <span className="text-[#e6e6e6] group-hover:text-white">
<svg <svg
@@ -64,5 +65,6 @@ export default function TopNavbar({lang}:{lang:languages_types}) {
<LanguagesChanger lang={lang} /> <LanguagesChanger lang={lang} />
</div> </div>
</div> </div>
</div>
); );
} }