change name in register & add link to most-searched home page & change tag & change design and responsive & fix active link header & must include field num in register & send code msg
This commit is contained in:
@@ -13,9 +13,9 @@ function Head() {
|
||||
width={46}
|
||||
alt="logo"
|
||||
/>
|
||||
<p className="text-[#FAFAFA] text-[16px] sm:text-[18px] md:text-[22px] lg:text-[24px] font-bold">
|
||||
<h1 className="text-[#FAFAFA] text-[16px] sm:text-[18px] md:text-[22px] lg:text-[24px] font-bold">
|
||||
درباره {matchedCity?.site_name}
|
||||
</p>
|
||||
</h1>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ function AboutUsPage() {
|
||||
"
|
||||
>
|
||||
<Head />
|
||||
<p
|
||||
<h2
|
||||
className="
|
||||
text-[#525252] text-[16px] font-normal mt-[32px] leading-[24px] md:leading-[32px] lg:leading-[40px]
|
||||
px-[16px] sm:px-[52px] md:px-[15%] text-justify md:text-center
|
||||
@@ -26,7 +26,7 @@ function AboutUsPage() {
|
||||
داشت که تمام و دشواری موجود در ارائه راهکارها، و شرایط سخت تایپ به پایان
|
||||
رسد و زمان مورد نیاز شامل حروفچینی دستاوردهای اصلی، و جوابگوی سوالات
|
||||
پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.
|
||||
</p>
|
||||
</h2>
|
||||
<Services />
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -22,9 +22,9 @@ function Head({ data, loading }) {
|
||||
}
|
||||
>
|
||||
<TextLoading width={250} height={22} loading={loading}>
|
||||
<p className="text-[#3B3B3B] mt-[24px] sm:mt-[29px] md:mt-[35px] lg:mt-[40px] text-[14px] sm:text-[17px] md:text-[20px] lg:text-[24px] font-bold">
|
||||
<h1 className="text-[#3B3B3B] mt-[24px] sm:mt-[29px] md:mt-[35px] lg:mt-[40px] text-[14px] sm:text-[17px] md:text-[20px] lg:text-[24px] font-bold">
|
||||
روش های خانگی محافظت از پوست در تابستان
|
||||
</p>
|
||||
</h1>
|
||||
</TextLoading>
|
||||
</div>
|
||||
<div className="flex mt-[16px] sm:mt-[18px] md:mt-[21px] lg:mt-[24px] items-center justify-start gap-[35px]">
|
||||
|
||||
@@ -25,9 +25,9 @@ function Item({ data, idx, loading }) {
|
||||
<div className="flex flex-col gap-[16px] sm:gap-[18px] md:gap-[21px] lg:gap-[24px] items-start justify-between">
|
||||
<TextLoading width={150} height={18} loading={loading}>
|
||||
<Link href={`/blog/${data.id}`}>
|
||||
<p className="text-[#3B3B3B] text-[14px] md:text-[16px] font-bold text-wrap lg:text-nowrap">
|
||||
<h2 className="text-[#3B3B3B] text-[14px] md:text-[16px] font-bold text-wrap lg:text-nowrap">
|
||||
{data.title}
|
||||
</p>
|
||||
</h2>
|
||||
</Link>
|
||||
</TextLoading>
|
||||
<TextLoading width={110} height={18} loading={loading}>
|
||||
|
||||
@@ -21,9 +21,9 @@ function Article({ data, loading }) {
|
||||
<div className={loading ? "mb-[12px] md:mb-[14px] lg:mb-[16px]" : ""}>
|
||||
<TextLoading width={150} height={18} loading={loading}>
|
||||
<Link href={`/blog/${data.id}`}>
|
||||
<p className="text-[#3B3B3B] mb-[12px] md:mb-[14px] lg:mb-[16px] text-[16px] font-bold">
|
||||
<h1 className="text-[#3B3B3B] mb-[12px] md:mb-[14px] lg:mb-[16px] text-[16px] font-bold">
|
||||
{data.title}
|
||||
</p>
|
||||
</h1>
|
||||
</Link>
|
||||
</TextLoading>
|
||||
</div>
|
||||
|
||||
@@ -14,12 +14,12 @@ function Head({ doctor }) {
|
||||
width={56}
|
||||
/>
|
||||
<div className="flex flex-col items-start justify-start gap-[8px]">
|
||||
<p className="text-[#3B3B3B] text-[12px] md:text-[14px] font-bold">
|
||||
<h2 className="text-[#3B3B3B] text-[12px] md:text-[14px] font-bold">
|
||||
{doctor.name}
|
||||
</p>
|
||||
<p className="text-[#525252] text-[12px] md:text-[14px] font-medium">
|
||||
</h2>
|
||||
<h3 className="text-[#525252] text-[12px] md:text-[14px] font-medium">
|
||||
تخصص: {doctor.expertise}
|
||||
</p>
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -5,7 +5,7 @@ function ContentDetail({ head, children, loading }) {
|
||||
return (
|
||||
<div className="my-[24px]">
|
||||
<TextLoading width={200} height={20} loading={loading}>
|
||||
<p className="text-[#3B3B3B] text-[20px] font-bold">{head}</p>
|
||||
<h1 className="text-[#3B3B3B] text-[20px] font-bold">{head}</h1>
|
||||
</TextLoading>
|
||||
<div className="mt-[16px]">{children}</div>
|
||||
</div>
|
||||
|
||||
@@ -34,9 +34,9 @@ function ListBime({ data, loading }) {
|
||||
className="p-[16px] min-w-[156px] w-full border border-[#EFEFEF] flex flex-col items-center justify-center gap-[20px]"
|
||||
>
|
||||
<Image src={item.img} height={92} width={92} alt="bime" />
|
||||
<p className="text-[#525252] text-[16px] font-medium">
|
||||
<h3 className="text-[#525252] text-[16px] font-medium">
|
||||
{item.name}
|
||||
</p>
|
||||
</h3>
|
||||
</li>
|
||||
</CustomLoading>
|
||||
))}
|
||||
|
||||
@@ -15,14 +15,14 @@ function Services({ data, loading }) {
|
||||
<TickCircleOrange />
|
||||
</div>
|
||||
<TextLoading width={80} height={18} loading={loading}>
|
||||
<p
|
||||
<h3
|
||||
className={`
|
||||
text-[16px] font-normal
|
||||
${idx === 0 ? "text-[#F17732]" : "text-[#525252]"}
|
||||
`}
|
||||
>
|
||||
{item}
|
||||
</p>
|
||||
</h3>
|
||||
</TextLoading>
|
||||
</li>
|
||||
))}
|
||||
|
||||
@@ -15,14 +15,14 @@ function Specialties({ data, loading }) {
|
||||
<TickCircleOrange />
|
||||
</div>
|
||||
<TextLoading width={80} height={18} loading={loading}>
|
||||
<p
|
||||
<h3
|
||||
className={`
|
||||
text-[16px] font-normal
|
||||
${idx === 0 ? "text-[#F17732]" : "text-[#525252]"}
|
||||
`}
|
||||
>
|
||||
{item}
|
||||
</p>
|
||||
</h3>
|
||||
</TextLoading>
|
||||
</li>
|
||||
))}
|
||||
|
||||
@@ -16,7 +16,7 @@ function ItemClinic({ data, loading }) {
|
||||
</CircularLoading>
|
||||
<div className="flex flex-col items-start justify-center gap-2">
|
||||
<TextLoading loading={loading} width={100} height={18}>
|
||||
<p className="text-[#3B3B3B] text-[14px] font-bold">{data.title}</p>
|
||||
<h3 className="text-[#3B3B3B] text-[14px] font-bold">{data.title}</h3>
|
||||
</TextLoading>
|
||||
<TextLoading loading={loading} width={60} height={18}>
|
||||
<p className="text-[#7E7E7E] text-[14px] font-normal">
|
||||
|
||||
@@ -11,9 +11,9 @@ function Connect() {
|
||||
>
|
||||
<div>
|
||||
<div className="flex flex-col justify-center items-center gap-[10px]">
|
||||
<p className="text-[#3B3B3B] text-[16px] font-bold">
|
||||
<h3 className="text-[#3B3B3B] text-[16px] font-bold">
|
||||
با ما در ارتباط باشید
|
||||
</p>
|
||||
</h3>
|
||||
<p className="text-[#525252] text-[14px] font-normal">
|
||||
نظرات و پیشنهادات خود را با ما در میان بگذارید.
|
||||
</p>
|
||||
|
||||
@@ -8,8 +8,8 @@ function Call({ matchedCity, isDefault }) {
|
||||
overflow-hidden lg:pb-[171px] px-[16px] sm:px-[27px] md:px-[39px] lg:px-[48px]
|
||||
${isDefault ? 'lg:pl-[18%]' : 'w-full'}`}
|
||||
>
|
||||
<p className="text-[#FAFAFA] text-[20px] font-bold">تماس با ما</p>
|
||||
<p className="text-[#FAFAFA] leading-[26px] text-[14px] md:text-[16px] font-normal mt-6">{matchedCity.footerDescription}</p>
|
||||
<h1 className="text-[#FAFAFA] text-[20px] font-bold">تماس با ما</h1>
|
||||
<h2 className="text-[#FAFAFA] leading-[26px] text-[14px] md:text-[16px] font-normal mt-6">{matchedCity.footerDescription}</h2>
|
||||
<Links matchedCity={matchedCity} />
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -43,9 +43,9 @@ function Head({ user }) {
|
||||
{user.total_transactions}{" "}
|
||||
<span className="text-[12px]">تومان</span>
|
||||
</p>
|
||||
<p className="text-[#616161] text-nowrap text-[14px] font-normal">
|
||||
<h1 className="text-[#616161] text-nowrap text-[14px] font-normal">
|
||||
مجموع تراکنش ها
|
||||
</p>
|
||||
</h1>
|
||||
</div>
|
||||
</div>
|
||||
<div className="py-[10px] flex items-center justify-start gap-[12px] min-w-[184px] w-full px-[8px] bg-[#FFF] bg-[0px_1px_24.8px_0px_rgba(204,_204,_204,_0.18)] rounded-[8px]">
|
||||
|
||||
@@ -23,14 +23,14 @@ function Title({ doctor, loading }) {
|
||||
</CircularLoading>
|
||||
<div className="flex flex-col items-center lg:items-start gap-[8px] lg:gap-[16px]">
|
||||
<TextLoading loading={loading} width={90} height={20}>
|
||||
<p className="text-[#3B3B3B] text-[14px] sm:text-[16px] md:text-[18px] lg:text-[20px] font-bold">
|
||||
<h1 className="text-[#3B3B3B] text-[14px] sm:text-[16px] md:text-[18px] lg:text-[20px] font-bold">
|
||||
{doctor.name}
|
||||
</p>
|
||||
</h1>
|
||||
</TextLoading>
|
||||
<TextLoading loading={loading} width={100} height={20}>
|
||||
<p className="text-[#525252] text-[14px] md:text-[16px] font-medium">
|
||||
<h3 className="text-[#525252] text-[14px] md:text-[16px] font-medium">
|
||||
تخصص: {doctor.expertise}
|
||||
</p>
|
||||
</h3>
|
||||
</TextLoading>
|
||||
<div className="flex items-center justify-start gap-11">
|
||||
<TextLoading loading={loading} width={60} height={20}>
|
||||
|
||||
@@ -21,11 +21,10 @@ function AboutDcotor({ doctor, loading }) {
|
||||
text-[#616161] text-[14px] font-normal overflow-hidden relative
|
||||
md:max-h-fit after:absolute after:right-0 after:bottom-0 leading-[28px] sm:leading-[30px] md:leading-[32px] lg:leading-[33px] after:h-[80px]
|
||||
after:shadow-xl after:w-full transition-all duration-500 md:after:!bg-[linear-gradient(transparent,transparent)]
|
||||
${
|
||||
isMore
|
||||
? "after:bg-transparent max-h-screen"
|
||||
: "after:bg-[linear-gradient(transparent,#FAFAFA)] max-h-[200px]"
|
||||
}
|
||||
${isMore
|
||||
? "after:bg-transparent max-h-screen"
|
||||
: "after:bg-[linear-gradient(transparent,#FAFAFA)] max-h-[200px]"
|
||||
}
|
||||
`}
|
||||
>
|
||||
{doctor.detail}
|
||||
@@ -48,9 +47,9 @@ function AboutDcotor({ doctor, loading }) {
|
||||
<li key={idx} className="flex items-center justify-start gap-1">
|
||||
<span className="w-2 h-2 bg-[#F17732] rounded-full"></span>
|
||||
<TextLoading loading={loading} width={70} height={18}>
|
||||
<p className="text-[#616161] text-[16px] font-normal text-nowrap">
|
||||
<h4 className="text-[#616161] text-[16px] font-normal text-nowrap">
|
||||
{item}
|
||||
</p>
|
||||
</h4>
|
||||
</TextLoading>
|
||||
</li>
|
||||
))}
|
||||
|
||||
@@ -27,7 +27,7 @@ function ProgressAll({ doctor, loading }) {
|
||||
<br />
|
||||
رضایت کاربران
|
||||
</p>
|
||||
<p>{numberToArStyle(doctor.total_user_satisfaction)}%</p>
|
||||
<p className="text-[#3B3B3B]">{numberToArStyle(doctor.total_user_satisfaction)}%</p>
|
||||
</div>
|
||||
</CircularLoading>
|
||||
</div>
|
||||
|
||||
@@ -20,9 +20,9 @@ function DoctorPage({ doctor }) {
|
||||
<div className="flex items-center justify-between">
|
||||
<CustomLoading loading={loading} width={180} height={25}>
|
||||
<div className="flex items-center justify-start text-[14px] md:text-[16px] font-normal">
|
||||
<p className="text-[#9B9B9B] text-nowrap">
|
||||
<h2 className="text-[#9B9B9B] text-nowrap">
|
||||
متخصص {doctor.expertise} {" >"}
|
||||
</p>
|
||||
</h2>
|
||||
<p className="text-[#525252] text-nowrap mr-1">{doctor.name}</p>
|
||||
</div>
|
||||
</CustomLoading>
|
||||
|
||||
@@ -14,15 +14,13 @@ import { Button } from "@mui/material";
|
||||
import citiesData from "@/data/city.json";
|
||||
import statesData from "@/data/state.json";
|
||||
|
||||
function DoctorsPage() {
|
||||
function DoctorsPage({ params, matchedCity, matchedState }) {
|
||||
const [loading, setLoading] = useState(true);
|
||||
const [open, setOpen] = useState(false);
|
||||
const { isProvinceInclude } = useProvince();
|
||||
const [selected, setSelected] = useState({
|
||||
// province: isProvinceInclude?.name || locationSelected.province,
|
||||
// city: locationSelected.city || newCity,
|
||||
province: isProvinceInclude?.name,
|
||||
city: null,
|
||||
province: matchedState?.name,
|
||||
city: matchedCity?.name,
|
||||
});
|
||||
const searchParams = useSearchParams();
|
||||
const locationSelected = {
|
||||
@@ -65,16 +63,16 @@ function DoctorsPage() {
|
||||
onClick={() => setOpen(true)}
|
||||
>
|
||||
<LocationD />
|
||||
<p className="text-[#525252] text-[16px] font-semibold">
|
||||
<h1 className="text-[#525252] text-[16px] font-semibold">
|
||||
{" "}
|
||||
{selected.province || "استان"}
|
||||
{" / "}
|
||||
{selected.city || "شهر"}
|
||||
</p>
|
||||
</h1>
|
||||
</Button>
|
||||
</ModalSearchCity>
|
||||
<div className="flex flex-col lg:flex-row items-start lg:items-center justify-center gap-[24px] lg:gap-[32px] w-full">
|
||||
<SearchBar data={data} setData={setData} />
|
||||
<SearchBar data={data} setData={setData} params={params} />
|
||||
<SortList data={data} setData={setData} />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -4,7 +4,7 @@ import ArrowBottomD from "@/components/icons/ArrowBottomD";
|
||||
import SearchD from "@/components/icons/SearchD";
|
||||
import FilterModal from "../modal/FilterModal";
|
||||
|
||||
function SearchBar({ data, setData }) {
|
||||
function SearchBar({ data, setData, params }) {
|
||||
return (
|
||||
<ButtonGroup
|
||||
variant="contained"
|
||||
@@ -31,6 +31,7 @@ function SearchBar({ data, setData }) {
|
||||
</FilterModal>
|
||||
<TextField
|
||||
variant="standard"
|
||||
defaultValue={params.search || ''}
|
||||
InputProps={{
|
||||
disableUnderline: true,
|
||||
}}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { frequentSearches } from "@/constans";
|
||||
import { Button } from "@mui/material";
|
||||
import Link from "next/link";
|
||||
|
||||
function FrequentSearches() {
|
||||
return (
|
||||
@@ -10,16 +11,23 @@ function FrequentSearches() {
|
||||
<div className="overflow-auto hidden-scroll flex justify-start">
|
||||
<ul className="flex items-center justify-start gap-[14px] pl-[14px]">
|
||||
{frequentSearches.map((item, idx) => (
|
||||
<li key={idx}>
|
||||
<Button
|
||||
variant="contained"
|
||||
color="secondary"
|
||||
className="!py-[6px] md:!py-[7px] lg:!py-[8px] !px-[12px] sm:!px-[14px] md:!px-[15px] lg:!px-[16px] !text-[12px] lg:!text-[14px]
|
||||
!rounded-[4px] !shadow-none !font-normal !border !border-solid !border-[#D7D7D7] hover:!bg-[#EFEFEF]"
|
||||
>
|
||||
{item}
|
||||
</Button>
|
||||
</li>
|
||||
<Link href={{
|
||||
pathname: "/doctors",
|
||||
query: {
|
||||
search: item
|
||||
},
|
||||
}}>
|
||||
<li key={idx}>
|
||||
<Button
|
||||
variant="contained"
|
||||
color="secondary"
|
||||
className="!py-[6px] md:!py-[7px] lg:!py-[8px] !px-[12px] sm:!px-[14px] md:!px-[15px] lg:!px-[16px] !text-[12px] lg:!text-[14px]
|
||||
!rounded-[4px] !shadow-none !font-normal !border !border-solid !border-[#D7D7D7] hover:!bg-[#EFEFEF]"
|
||||
>
|
||||
{item}
|
||||
</Button>
|
||||
</li>
|
||||
</Link>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -7,17 +7,17 @@ function TextHeader() {
|
||||
|
||||
return (
|
||||
<div className="z-[50]">
|
||||
<p className="text-[#F17732] text-center font-kalame text-[20px] sm:text-[24px] md:text-[28px] lg:text-[32px] font-bold">
|
||||
<h1 className="text-[#F17732] text-center font-kalame text-[20px] sm:text-[24px] md:text-[28px] lg:text-[32px] font-bold">
|
||||
با {matchedCity?.site_name}
|
||||
</p>
|
||||
<p
|
||||
</h1>
|
||||
<h2
|
||||
className="text-[#525252] text-center mt-2.5 font-kalame text-[16px] sm:text-[25px] md:text-[31px] lg:text-[36px]
|
||||
font-bold flex items-center gap-1 sm:gap-2"
|
||||
>
|
||||
<BText />
|
||||
{matchedCity?.slogan}
|
||||
<AText />
|
||||
</p>
|
||||
</h2>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import ModalSearchCity from "@/app/component/modalSearchCity";
|
||||
import Search from "@/components/icons/Search";
|
||||
import ButtonFilter from "@/app/component/modalSearchCity/ButtonFilter";
|
||||
import Link from "next/link";
|
||||
import SearchD from "@/components/icons/SearchD";
|
||||
|
||||
function Fields({ city, state }) {
|
||||
const [open, setOpen] = useState(false);
|
||||
@@ -43,6 +44,15 @@ function Fields({ city, state }) {
|
||||
"& .MuiInputBase-input": {
|
||||
color: "#6C757D",
|
||||
},
|
||||
"& .MuiInputBase-input": {
|
||||
color: "#6C757D",
|
||||
fontSize: {
|
||||
xs: "10px !important",
|
||||
sm: "12px !important",
|
||||
md: "14px !important",
|
||||
lg: "16px !important",
|
||||
},
|
||||
}
|
||||
}}
|
||||
placeholder="جستجوی نام پزشک، تخصص، بیماری ..."
|
||||
dir="rtl"
|
||||
@@ -63,6 +73,18 @@ function Fields({ city, state }) {
|
||||
</div>
|
||||
<p>جستجو</p>
|
||||
</Button>
|
||||
<Button
|
||||
className="!flex lg:!hidden !rounded-[4px]
|
||||
!w-[40px] sm:!w-[42px] md:!w-[45px] lg:!w-[48px]
|
||||
!h-[40px] sm:!h-[42px] md:!h-[45px] lg:!h-[48px]
|
||||
!min-w-[40px] sm:!min-w-[42px] md:!min-w-[45px] lg:!min-w-[48px]
|
||||
!min-h-[40px] sm:!min-h-[42px] md:!min-h-[45px] lg:!min-h-[48px]
|
||||
!gap-2.5 !p-2.5"
|
||||
>
|
||||
<div className="w-[24px] h-[24px] min-w-[24px] min-h-[24px]">
|
||||
<SearchD />
|
||||
</div>
|
||||
</Button>
|
||||
</Link>
|
||||
</>
|
||||
)
|
||||
|
||||
@@ -1,30 +1,11 @@
|
||||
import { Button, ButtonGroup, TextField } from "@mui/material";
|
||||
import SearchD from "@/components/icons/SearchD";
|
||||
import Link from "next/link";
|
||||
|
||||
import statesData from "@/data/state.json";
|
||||
import citiesData from "@/data/city.json";
|
||||
import Fields from "./Fields";
|
||||
import { getStateInfo } from "@/lib/getStateInfo";
|
||||
|
||||
// const provinceIdMap = Object.fromEntries(
|
||||
// statesData.map((state) => [state.name, state.id])
|
||||
// );
|
||||
// const citiesByProvinceId = citiesData.reduce((acc, city) => {
|
||||
// if (!acc[city.province_id]) acc[city.province_id] = [];
|
||||
// acc[city.province_id].push(city);
|
||||
// return acc;
|
||||
// }, {});
|
||||
|
||||
function SearchBar() {
|
||||
const { matchedCity, matchedState } = getStateInfo()
|
||||
|
||||
// const getDefaultCityForProvince = useCallback((provinceName) => {
|
||||
// if (!provinceName) return undefined;
|
||||
// const provinceId = provinceIdMap[provinceName];
|
||||
// return citiesByProvinceId[provinceId]?.[0]?.name;
|
||||
// }, []);
|
||||
|
||||
return (
|
||||
<ButtonGroup
|
||||
variant="contained"
|
||||
@@ -35,18 +16,6 @@ function SearchBar() {
|
||||
"
|
||||
>
|
||||
<Fields city={matchedCity} state={matchedState} />
|
||||
<Button
|
||||
className="!flex lg:!hidden !rounded-[4px]
|
||||
!w-[40px] sm:!w-[42px] md:!w-[45px] lg:!w-[48px]
|
||||
!h-[40px] sm:!h-[42px] md:!h-[45px] lg:!h-[48px]
|
||||
!min-w-[40px] sm:!min-w-[42px] md:!min-w-[45px] lg:!min-w-[48px]
|
||||
!min-h-[40px] sm:!min-h-[42px] md:!min-h-[45px] lg:!min-h-[48px]
|
||||
!gap-2.5 !p-2.5"
|
||||
>
|
||||
<div className="w-[24px] h-[24px] min-w-[24px] min-h-[24px]">
|
||||
<SearchD />
|
||||
</div>
|
||||
</Button>
|
||||
</ButtonGroup>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -55,7 +55,7 @@ function List({
|
||||
>
|
||||
<div className="!flex !w-full !items-center !justify-start !gap-[8px] md:px-[24px]">
|
||||
<div className="w-[24px] h-[24px]">{item.icon}</div>
|
||||
<p
|
||||
<h2
|
||||
className={`
|
||||
text-[16px] transition-all duration-500
|
||||
${
|
||||
@@ -66,7 +66,7 @@ function List({
|
||||
`}
|
||||
>
|
||||
{item.name}
|
||||
</p>
|
||||
</h2>
|
||||
</div>
|
||||
<div className="flex md:hidden">
|
||||
<ArrowLeftSideBar active={value === idx} />
|
||||
|
||||
@@ -102,9 +102,9 @@ function AddDoctorPage() {
|
||||
|
||||
return (
|
||||
<div className="opacity-page">
|
||||
<p className="text-[#525252] dark:text-[#D7D8ED] text-[20px] font-bold hidden md:flex">
|
||||
<h1 className="text-[#525252] dark:text-[#D7D8ED] text-[20px] font-bold hidden md:flex">
|
||||
پروفایل من
|
||||
</p>
|
||||
</h1>
|
||||
<div
|
||||
className="rounded-[8px] mt-0 md:mt-[24px] bg-transparent md:bg-[#FFF]
|
||||
md:dark:bg-[#222433] shadow-none md:shadow-[0px_1px_24.8px_0px_rgba(204,204,204,0.18)] dark:shadow-none pt-0
|
||||
|
||||
@@ -1,23 +1,11 @@
|
||||
"use client";
|
||||
|
||||
import RegisterPage from "@/components/register";
|
||||
import SetCodePage from "@/components/register/SetCodePage";
|
||||
import LogInPage from "@/components/register/LogInPage";
|
||||
import { useState } from "react";
|
||||
import { getStateInfo } from "@/lib/getStateInfo";
|
||||
|
||||
function ContentLogin() {
|
||||
const [isSendMsg, setIsSendMsg] = useState(false);
|
||||
const { matchedCity } = getStateInfo();
|
||||
|
||||
return (
|
||||
<div>
|
||||
<RegisterPage>
|
||||
{isSendMsg ? (
|
||||
<SetCodePage setIsSendMsg={setIsSendMsg} setStep={false} link="/" />
|
||||
) : (
|
||||
<LogInPage setStep={false} setIsSendMsg={setIsSendMsg} />
|
||||
)}
|
||||
</RegisterPage>
|
||||
</div>
|
||||
<RegisterPage matchedCity={matchedCity} />
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
import Image from "next/image";
|
||||
import Link from "next/link";
|
||||
|
||||
const about = ["سوالات متداول", "تماس با ما", "درباره ما"];
|
||||
|
||||
function LayoutRegister({ children, matchedCity }) {
|
||||
return (
|
||||
<div
|
||||
className="flex padding-responsive items-center justify-center pt-[32px]
|
||||
overflow-auto flex-col h-screen w-full bg-banner-stroke !bg-bottom !bg-no-repeat !bg-cover
|
||||
!pb-[calc(108px_+_40px)] md:!pb-[calc(111px_+_40px)]"
|
||||
>
|
||||
<Link href="/">
|
||||
<div className="flex items-center justify-center gap-[5px] sm:mt-0">
|
||||
<Image
|
||||
src="/assets/images/logo.png"
|
||||
width={40}
|
||||
height={40}
|
||||
alt="logo"
|
||||
/>
|
||||
<p className="text-[#5559CE] text-[20px] font-bold">{matchedCity?.site_name || "نوبت ۷۲۴"}</p>
|
||||
</div>
|
||||
</Link>
|
||||
{children}
|
||||
<div className="fixed bottom-0 left-0 bg-[#FAFAFA] w-full pb-[50px] px-[18px] sm:px-[67px] md:px[117px] lg:px-[166px]">
|
||||
<div className="bg-border-t-gradient-sign h-px w-full"></div>
|
||||
<div className="flex items-center justify-center gap-[32px] sm:gap-[40px] md:gap-[48px] lg:gap-[56px] mt-[24px]">
|
||||
{about.map((item, idx) => (
|
||||
<Link href="/" key={idx}>
|
||||
<p
|
||||
className="text-[#494CB3] text-[14px] md:text-[16px] font-normal"
|
||||
key={idx}
|
||||
>
|
||||
{item}
|
||||
</p>
|
||||
</Link>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
export default LayoutRegister
|
||||
@@ -4,13 +4,15 @@ import { Button, InputAdornment } from "@mui/material";
|
||||
import Link from "next/link";
|
||||
import { useState } from "react";
|
||||
|
||||
function LogInPage({ setIsSendMsg, setStep }) {
|
||||
function LogInPage({ setIsSendMsg, setStep, matchedCity }) {
|
||||
const [num, setNum] = useState("");
|
||||
const [error, setError] = useState({ valid: true, text: '' });
|
||||
|
||||
|
||||
const handleChange = (val) => {
|
||||
!error.valid && setError({ ...error, valid: true });
|
||||
const formatted = formatPhoneNumber(val);
|
||||
const checkedNum = validatePhoneNumber(formatted);
|
||||
setError(checkedNum);
|
||||
setNum(formatted);
|
||||
};
|
||||
|
||||
@@ -20,7 +22,7 @@ function LogInPage({ setIsSendMsg, setStep }) {
|
||||
p-0 border-transparent sm:p-[40px] sm:pb-[48px] w-full sm:w-fit sm:min-w-[425px]"
|
||||
>
|
||||
<p className="text-[#525252] text-[18px] font-bold">
|
||||
ورود یا ثبت نام در نوبت 724
|
||||
ورود یا ثبت نام در {matchedCity?.site_name || "نوبت 724"}
|
||||
</p>
|
||||
<p className="text-[#616161] text-[14px] mt-[40px] sm:mt-[43px] md:mt-[46px] lg:mt-[48px] font-normal">
|
||||
شماره همراه خود را وارد نمایید.
|
||||
@@ -76,7 +78,7 @@ function LogInPage({ setIsSendMsg, setStep }) {
|
||||
<Link href="/">
|
||||
<span className="text-[#F17732] underline">قوانین استفاده</span>
|
||||
</Link>{" "}
|
||||
از نوبت 724 را می پذیرم.
|
||||
از {matchedCity?.site_name || 'نوبت 724'} را می پذیرم.
|
||||
</p>
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -1,43 +1,21 @@
|
||||
import Image from "next/image";
|
||||
import Link from "next/link";
|
||||
"use client";
|
||||
|
||||
const about = ["سوالات متداول", "تماس با ما", "درباره ما"];
|
||||
import SetCodePage from "@/components/register/SetCodePage";
|
||||
import LogInPage from "@/components/register/LogInPage";
|
||||
import { useState } from "react";
|
||||
import LayoutRegister from "./LayoutRegister";
|
||||
|
||||
function RegisterPage({ matchedCity }) {
|
||||
const [isSendMsg, setIsSendMsg] = useState(false);
|
||||
|
||||
function RegisterPage({ children }) {
|
||||
return (
|
||||
<div
|
||||
className="flex padding-responsive items-center justify-center pt-[32px]
|
||||
overflow-auto flex-col h-screen w-full bg-banner-stroke !bg-bottom !bg-no-repeat !bg-cover
|
||||
!pb-[calc(108px_+_40px)] md:!pb-[calc(111px_+_40px)]"
|
||||
>
|
||||
<Link href="/">
|
||||
<div className="flex items-center justify-center gap-[5px] sm:mt-0">
|
||||
<Image
|
||||
src="/assets/images/logo.png"
|
||||
width={40}
|
||||
height={40}
|
||||
alt="logo"
|
||||
/>
|
||||
<p className="text-[#5559CE] text-[20px] font-bold">نوبت ۷۲۴</p>
|
||||
</div>
|
||||
</Link>
|
||||
{children}
|
||||
<div className="fixed bottom-0 left-0 bg-[#FAFAFA] w-full pb-[50px] px-[18px] sm:px-[67px] md:px[117px] lg:px-[166px]">
|
||||
<div className="bg-border-t-gradient-sign h-px w-full"></div>
|
||||
<div className="flex items-center justify-center gap-[32px] sm:gap-[40px] md:gap-[48px] lg:gap-[56px] mt-[24px]">
|
||||
{about.map((item, idx) => (
|
||||
<Link href="/" key={idx}>
|
||||
<p
|
||||
className="text-[#494CB3] text-[14px] md:text-[16px] font-normal"
|
||||
key={idx}
|
||||
>
|
||||
{item}
|
||||
</p>
|
||||
</Link>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<LayoutRegister matchedCity={matchedCity}>
|
||||
{isSendMsg ? (
|
||||
<SetCodePage setIsSendMsg={setIsSendMsg} setStep={false} link="/" />
|
||||
) : (
|
||||
<LogInPage matchedCity={matchedCity} setStep={false} setIsSendMsg={setIsSendMsg} />
|
||||
)}
|
||||
</LayoutRegister>
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ function ItemSpecialties({ data, loading }) {
|
||||
hover:bg-[#5559CE] transition-all duration-500 cursor-pointer hover-mode-item-speciality"
|
||||
>
|
||||
<TextLoading loading={loading} width={70} height={18}>
|
||||
<p className="text-[#3B3B3B] text-[16px] font-bold">{data.name}</p>
|
||||
<h2 className="text-[#3B3B3B] text-[16px] font-bold">{data.name}</h2>
|
||||
</TextLoading>
|
||||
<TextLoading loading={loading} width={50} height={18}>
|
||||
<p className="text-[#7E7E7E] text-[14px] font-medium">
|
||||
|
||||
@@ -7,9 +7,9 @@ function List({ loading, specialties = [] }) {
|
||||
<div className="bg-[#FAFAFA]">
|
||||
<div className="flex items-center justify-center gap-[12px] pt-[24px] mb-[40px]">
|
||||
<MenuS />
|
||||
<p className="text-[#3B3B3B] text-[16px] sm:text-[19px] md:text-[22px] lg:text-[24px] font-bold">
|
||||
<h1 className="text-[#3B3B3B] text-[16px] sm:text-[19px] md:text-[22px] lg:text-[24px] font-bold">
|
||||
لیست تخصص ها
|
||||
</p>
|
||||
</h1>
|
||||
</div>
|
||||
{specialties.length === 0 ? (
|
||||
<div className="text-center py-10 text-gray-500">
|
||||
|
||||
Reference in New Issue
Block a user