first commit
41
.gitignore
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
|
||||
|
||||
# dependencies
|
||||
/node_modules
|
||||
/.pnp
|
||||
.pnp.*
|
||||
.yarn/*
|
||||
!.yarn/patches
|
||||
!.yarn/plugins
|
||||
!.yarn/releases
|
||||
!.yarn/versions
|
||||
|
||||
# testing
|
||||
/coverage
|
||||
|
||||
# next.js
|
||||
/.next/
|
||||
/out/
|
||||
|
||||
# production
|
||||
/build
|
||||
|
||||
# misc
|
||||
.DS_Store
|
||||
*.pem
|
||||
|
||||
# debug
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
.pnpm-debug.log*
|
||||
|
||||
# env files (can opt-in for committing if needed)
|
||||
.env*
|
||||
|
||||
# vercel
|
||||
.vercel
|
||||
|
||||
# typescript
|
||||
*.tsbuildinfo
|
||||
next-env.d.ts
|
||||
36
README.md
Normal file
@@ -0,0 +1,36 @@
|
||||
This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).
|
||||
|
||||
## Getting Started
|
||||
|
||||
First, run the development server:
|
||||
|
||||
```bash
|
||||
npm run dev
|
||||
# or
|
||||
yarn dev
|
||||
# or
|
||||
pnpm dev
|
||||
# or
|
||||
bun dev
|
||||
```
|
||||
|
||||
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
|
||||
|
||||
You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
|
||||
|
||||
This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.
|
||||
|
||||
## Learn More
|
||||
|
||||
To learn more about Next.js, take a look at the following resources:
|
||||
|
||||
- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
|
||||
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
|
||||
|
||||
You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!
|
||||
|
||||
## Deploy on Vercel
|
||||
|
||||
The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
|
||||
|
||||
Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.
|
||||
25
eslint.config.mjs
Normal file
@@ -0,0 +1,25 @@
|
||||
import { dirname } from "path";
|
||||
import { fileURLToPath } from "url";
|
||||
import { FlatCompat } from "@eslint/eslintrc";
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = dirname(__filename);
|
||||
|
||||
const compat = new FlatCompat({
|
||||
baseDirectory: __dirname,
|
||||
});
|
||||
|
||||
const eslintConfig = [
|
||||
...compat.extends("next/core-web-vitals", "next/typescript"),
|
||||
{
|
||||
ignores: [
|
||||
"node_modules/**",
|
||||
".next/**",
|
||||
"out/**",
|
||||
"build/**",
|
||||
"next-env.d.ts",
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
export default eslintConfig;
|
||||
7
next.config.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import type {NextConfig} from "next";
|
||||
|
||||
const nextConfig: NextConfig = {
|
||||
/* config options here */
|
||||
};
|
||||
|
||||
export default nextConfig;
|
||||
5726
package-lock.json
generated
Normal file
28
package.json
Normal file
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"name": "frontend",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
"build": "next build",
|
||||
"start": "next start",
|
||||
"lint": "eslint"
|
||||
},
|
||||
"dependencies": {
|
||||
"next": "15.5.4",
|
||||
"react": "19.1.0",
|
||||
"react-dom": "19.1.0",
|
||||
"swiper": "^12.0.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@eslint/eslintrc": "^3",
|
||||
"@tailwindcss/postcss": "^4",
|
||||
"@types/node": "^20",
|
||||
"@types/react": "^19",
|
||||
"@types/react-dom": "^19",
|
||||
"eslint": "^9",
|
||||
"eslint-config-next": "15.5.4",
|
||||
"tailwindcss": "^4",
|
||||
"typescript": "^5"
|
||||
}
|
||||
}
|
||||
5
postcss.config.mjs
Normal file
@@ -0,0 +1,5 @@
|
||||
const config = {
|
||||
plugins: ["@tailwindcss/postcss"],
|
||||
};
|
||||
|
||||
export default config;
|
||||
BIN
public/1daad534bbd4cd30c325dde4746d01bcc3752e98.jpg
Normal file
|
After Width: | Height: | Size: 6.0 MiB |
BIN
public/NICU.mp4
Normal file
BIN
public/bank-melat.png
Normal file
|
After Width: | Height: | Size: 74 KiB |
BIN
public/bimeh-ma.png
Normal file
|
After Width: | Height: | Size: 4.9 KiB |
BIN
public/bimeh-moallem.png
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
BIN
public/bimeh-novin.png
Normal file
|
After Width: | Height: | Size: 5.9 KiB |
BIN
public/bimeh-pasargad.png
Normal file
|
After Width: | Height: | Size: 6.9 KiB |
74
public/bimeh-pasargard.svg
Normal file
@@ -0,0 +1,74 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 27.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="90px" height="90px" viewBox="0 0 90 90" enable-background="new 0 0 90 90" xml:space="preserve">
|
||||
<g>
|
||||
<path fill="#003366" d="M21.3,79.3c1.3-1,2.6-2.1,3.8-3.2c-1.1,0-2.2,0-3.3,0c-1.3,1-3.9,3.2-3.9,3.2l3.4,3.3l-3.5,0l-0.1-7.9
|
||||
L15.2,76v9.7c1.7,0,3.6,0,5.3,0c0.6,0,1.3,0,1.8-0.4c1.2-0.7,1.8-2.3,1.2-3.6C23,80.7,22,80.1,21.3,79.3z"/>
|
||||
<path fill="#003366" d="M57.3,77.9l-2.2,1.3v3.3l-2.7,0l0-8L49.9,76v9.6c0,0,3.7,0,5.6,0c1,0,1.8-0.9,1.8-1.9c0,0,0-0.1,0-0.1V77.9
|
||||
z"/>
|
||||
<path fill="#003366" d="M22.4,75c0,0-2.8,2.3-4.2,3.5c0-0.4,0-1.3,0-1.3l2.7-2.2L22.4,75z"/>
|
||||
<path fill="#003366" d="M14.1,82.2c-0.1-1-0.9-1.8-1.6-2.4c-1.2-1-2.9-2.5-4.2-3.7v3.4l3.2,3l-3.2,0v3.3c0,0,2.9,0.1,4.1-0.4
|
||||
C13.6,85,14.3,83.5,14.1,82.2z"/>
|
||||
<path fill="#003366" d="M28.8,79.2l2.3-1.3c0,0,0,3.8,0,5.7c0,1-0.8,2-1.8,2c-1.4,0-2.9,0-4.3,0c0-1,0-2,0-3.1c1.3,0,2.5,0,3.8,0
|
||||
C28.8,81.4,28.8,80.3,28.8,79.2L28.8,79.2z"/>
|
||||
<path fill="#003366" d="M79.7,79.2c0,1.1,0,3.4,0,3.4l-2.3,0c0,0,0-3.1,0-4.7c-0.8,0.4-1.5,0.9-2.3,1.3c0,1.1,0,2.2-0.1,3.3
|
||||
c-0.9,0-1.9-0.1-2.8-0.1c0-1.5,0-4.6,0-4.6s-3.1,1.7-4.6,2.7c-0.8,0.6-0.7,1.2-0.8,1.9v0.1h-1.7c0,0-0.1,0-0.1,0l0-4.7L59.8,81
|
||||
c0,0,0,3.1-0.1,4.6c0.7,0,1.4,0,2,0c0.1-1.2,0.1-2.4,0.1-3.6c0.4-0.2,0.7-0.4,1.1-0.7c0,1.4,0,2.9,0,4.3c0.6,0,1.2,0,1.8-0.1
|
||||
c0.6-0.2,0.9-0.7,1.3-1.1c0,0.4,0,0.8-0.1,1.2c1.5,0,3,0,4.5,0c1.1,0,1.8-1.4,1.8-1.4l-0.1,1.4c0,0,2.6,0.1,3.9-0.1
|
||||
c0.8-0.2,1.3-1.2,1.3-1.2s-0.1,0.9-0.1,1.3c1.1,0,2.3,0.1,3.4-0.1c0.8-0.2,1.3-1,1.3-1.8c0-2,0-3.9,0-5.9
|
||||
C81.2,78.3,80.5,78.8,79.7,79.2z M70.1,83.3l-1,0c0,0,0-0.7,0-1c0-0.1,0.1-0.3,0.1-0.4c0.2-0.3,0.9-0.6,0.9-0.6L70.1,83.3z"/>
|
||||
<path fill="#003366" d="M48.3,88c0.5-0.6,1.2-1.1,1.7-1.7c0.6,0.6,1.1,1.2,1.7,1.7c-0.6,0.6-1.1,1.2-1.7,1.7
|
||||
C49.4,89.1,48.8,88.5,48.3,88L48.3,88z"/>
|
||||
<path fill="#003366" d="M51.7,88c0.5-0.6,1.2-1.1,1.7-1.7c0.6,0.6,1.1,1.2,1.7,1.7c-0.6,0.6-1.1,1.2-1.7,1.7
|
||||
C52.8,89.1,52.2,88.5,51.7,88L51.7,88z"/>
|
||||
<path fill="#003366" d="M55,88c0.5-0.6,1.2-1.1,1.7-1.7c0.6,0.6,1.1,1.2,1.7,1.7c-0.6,0.6-1.1,1.2-1.7,1.7
|
||||
C56.2,89.1,55.6,88.5,55,88L55,88z"/>
|
||||
<path fill="#003366" d="M56.8,89.7"/>
|
||||
<path fill="#003366" d="M56.8,86.2"/>
|
||||
<path fill="#003366" d="M71,88c0.6-0.6,1.1-1.2,1.7-1.7c0.5,0.6,1.2,1.1,1.6,1.7c-0.5,0.6-1.1,1.1-1.7,1.7
|
||||
C72.2,89.1,71.6,88.5,71,88L71,88z"/>
|
||||
<path fill="#003366" d="M74.4,87.9c0.6-0.6,1.2-1.2,1.8-1.7c0.5,0.6,1.1,1.1,1.7,1.7c-0.6,0.6-1.1,1.2-1.7,1.7
|
||||
C75.6,89.1,75,88.5,74.4,87.9L74.4,87.9z"/>
|
||||
<path fill="#003366" d="M78.4,87.9c0.6-0.6,1.1-1.1,1.7-1.7c0.6,0.6,1.2,1.1,1.7,1.7c-0.6,0.6-1.1,1.1-1.7,1.7
|
||||
C79.5,89.1,79,88.5,78.4,87.9L78.4,87.9z"/>
|
||||
<g>
|
||||
<path fill="#003366" d="M75,36c0,0.3,0,0.7,0,1v26.5H15.3V37.1c0-0.3,0-0.7,0-1H8v34h74V36H75z"/>
|
||||
<path fill="#003366" d="M15.4,35.1c1-15.5,14-27.8,29.8-27.8h0c15.8,0,28.7,12.3,29.8,27.8H82V0.3H8v34.7H15.4z"/>
|
||||
</g>
|
||||
<circle fill="#FFCC00" cx="45.2" cy="35.5" r="4.8"/>
|
||||
<g>
|
||||
<path fill="#FFCC00" d="M45.2,44.1c-4.7,0-8.6-3.8-8.6-8.6s3.8-8.6,8.6-8.6c4.7,0,8.6,3.8,8.6,8.6S50,44.1,45.2,44.1z M45.2,29.4
|
||||
c-3.4,0-6.2,2.8-6.2,6.2s2.8,6.2,6.2,6.2s6.2-2.8,6.2-6.2S48.6,29.4,45.2,29.4z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path fill="#FFCC00" d="M39.4,26c-1.5,0.9-2.7,2.2-3.6,3.6l-6.5-3.8c-1.6-0.9-2-3.1-0.8-4.6c0.8-1,1.7-1.9,2.7-2.7
|
||||
c1.4-1.2,3.6-0.8,4.6,0.8L39.4,26z"/>
|
||||
<path fill="#FFCC00" d="M35.4,30.2c-0.8,1.5-1.3,3.2-1.3,5h-7.6c-1.9,0-3.3-1.7-3-3.5c0.2-1.3,0.6-2.5,1-3.7
|
||||
c0.6-1.8,2.7-2.5,4.3-1.6L35.4,30.2z"/>
|
||||
<path fill="#FFCC00" d="M35.4,40.8l-6.5,3.8c-1.6,0.9-3.7,0.2-4.3-1.6c-0.4-1.2-0.8-2.4-1-3.7c-0.3-1.8,1.1-3.5,3-3.5h7.6
|
||||
C34.1,37.7,34.6,39.3,35.4,40.8z"/>
|
||||
<path fill="#FFCC00" d="M39.4,45l-3.8,6.5c-0.9,1.6-3.1,2-4.6,0.8c-1-0.8-1.9-1.7-2.7-2.7c-1.2-1.4-0.8-3.6,0.8-4.6l6.5-3.8
|
||||
C36.6,42.9,37.9,44.1,39.4,45z"/>
|
||||
<path fill="#FFCC00" d="M44.9,46.7v7.6c0,1.9-1.7,3.3-3.5,3c-1.3-0.2-2.5-0.6-3.7-1c-1.8-0.6-2.5-2.7-1.6-4.3l3.8-6.5
|
||||
C41.4,46.2,43.1,46.6,44.9,46.7z"/>
|
||||
<path fill="#FFCC00" d="M52.8,56.3c-1.2,0.4-2.4,0.8-3.7,1c-1.8,0.3-3.5-1.1-3.5-3v-7.6c1.8-0.1,3.5-0.5,5-1.3l3.8,6.5
|
||||
C55.3,53.5,54.5,55.6,52.8,56.3z"/>
|
||||
<path fill="#FFCC00" d="M62.1,49.7c-0.8,1-1.7,1.9-2.7,2.7c-1.4,1.2-3.6,0.8-4.6-0.8L51.1,45c1.5-0.9,2.7-2.2,3.6-3.6l6.5,3.8
|
||||
C62.9,46.1,63.3,48.3,62.1,49.7z"/>
|
||||
<path fill="#FFCC00" d="M66.9,39.4c-0.2,1.3-0.6,2.5-1,3.7c-0.6,1.8-2.7,2.5-4.3,1.6l-6.5-3.8c0.8-1.5,1.3-3.2,1.3-5H64
|
||||
C65.8,35.9,67.3,37.5,66.9,39.4z"/>
|
||||
<path fill="#FFCC00" d="M64,35.2h-7.6c-0.1-1.8-0.5-3.5-1.3-5l6.5-3.8c1.6-0.9,3.7-0.2,4.3,1.6c0.4,1.2,0.8,2.4,1,3.7
|
||||
C67.3,33.5,65.8,35.2,64,35.2z"/>
|
||||
<path fill="#FFCC00" d="M61.3,25.9l-6.5,3.8c-0.9-1.5-2.2-2.7-3.6-3.6l3.8-6.5c0.9-1.6,3.1-2,4.6-0.8c1,0.8,1.9,1.7,2.7,2.7
|
||||
C63.3,22.8,62.9,25,61.3,25.9z"/>
|
||||
<path fill="#FFCC00" d="M54.3,19.2l-3.8,6.5c-1.5-0.8-3.2-1.3-5-1.3v-7.6c0-1.9,1.7-3.3,3.5-3c1.3,0.2,2.5,0.6,3.7,1
|
||||
C54.5,15.4,55.3,17.5,54.3,19.2z"/>
|
||||
<path fill="#FFCC00" d="M44.9,16.8v7.6c-1.8,0.1-3.5,0.5-5,1.3l-3.8-6.5c-0.9-1.6-0.2-3.7,1.6-4.3c1.2-0.4,2.4-0.8,3.7-1
|
||||
C43.2,13.5,44.9,14.9,44.9,16.8z"/>
|
||||
</g>
|
||||
<path fill="#003366" d="M46.1,79.3l0,3.3l-2.2,0l0-4.6l-2.4,1.3l0,3.3h-2.2v0l0,0l0-4.6L37,79.2l0,3.3c0,0-1.4,0-2.1,0
|
||||
c0-2.6,0-7.9,0-7.9l-2.5,1.5v9.5c1.5,0,3,0,4.5,0c0.4,0,0.7,0,1.1-0.1c0.6-0.2,0.9-0.7,1.2-1.2c0,0.4-0.1,1.3-0.1,1.3
|
||||
s2.2,0.1,3.3-0.1c0.6-0.2,0.9-0.7,1.3-1.2c0,0.4-0.1,1.2-0.1,1.2s1.9,0,2.9,0c1,0,1.9-0.9,1.9-1.9c0-1.9,0-5.7,0-5.7L46.1,79.3z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.5 KiB |
BIN
public/bimeh-saman.png
Normal file
|
After Width: | Height: | Size: 4.5 KiB |
BIN
public/bimeh-tejarat-no.png
Normal file
|
After Width: | Height: | Size: 8.3 KiB |
BIN
public/doctor.png
Normal file
|
After Width: | Height: | Size: 441 KiB |
1
public/file.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg fill="none" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M14.5 13.5V5.41a1 1 0 0 0-.3-.7L9.8.29A1 1 0 0 0 9.08 0H1.5v13.5A2.5 2.5 0 0 0 4 16h8a2.5 2.5 0 0 0 2.5-2.5m-1.5 0v-7H8v-5H3v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1M9.5 5V2.12L12.38 5zM5.13 5h-.62v1.25h2.12V5zm-.62 3h7.12v1.25H4.5zm.62 3h-.62v1.25h7.12V11z" clip-rule="evenodd" fill="#666" fill-rule="evenodd"/></svg>
|
||||
|
After Width: | Height: | Size: 391 B |
BIN
public/fonts/sogand/SOGAND.ttf
Normal file
BIN
public/fonts/vazir/Vazirmatn-Black.woff2
Normal file
BIN
public/fonts/vazir/Vazirmatn-Bold.woff2
Normal file
BIN
public/fonts/vazir/Vazirmatn-ExtraBold.woff2
Normal file
BIN
public/fonts/vazir/Vazirmatn-ExtraLight.woff2
Normal file
BIN
public/fonts/vazir/Vazirmatn-Light.woff2
Normal file
BIN
public/fonts/vazir/Vazirmatn-Medium.woff2
Normal file
BIN
public/fonts/vazir/Vazirmatn-Regular.woff2
Normal file
BIN
public/fonts/vazir/Vazirmatn-SemiBold.woff2
Normal file
BIN
public/fonts/vazir/Vazirmatn-Thin.woff2
Normal file
1
public/globe.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><g clip-path="url(#a)"><path fill-rule="evenodd" clip-rule="evenodd" d="M10.27 14.1a6.5 6.5 0 0 0 3.67-3.45q-1.24.21-2.7.34-.31 1.83-.97 3.1M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m.48-1.52a7 7 0 0 1-.96 0H7.5a4 4 0 0 1-.84-1.32q-.38-.89-.63-2.08a40 40 0 0 0 3.92 0q-.25 1.2-.63 2.08a4 4 0 0 1-.84 1.31zm2.94-4.76q1.66-.15 2.95-.43a7 7 0 0 0 0-2.58q-1.3-.27-2.95-.43a18 18 0 0 1 0 3.44m-1.27-3.54a17 17 0 0 1 0 3.64 39 39 0 0 1-4.3 0 17 17 0 0 1 0-3.64 39 39 0 0 1 4.3 0m1.1-1.17q1.45.13 2.69.34a6.5 6.5 0 0 0-3.67-3.44q.65 1.26.98 3.1M8.48 1.5l.01.02q.41.37.84 1.31.38.89.63 2.08a40 40 0 0 0-3.92 0q.25-1.2.63-2.08a4 4 0 0 1 .85-1.32 7 7 0 0 1 .96 0m-2.75.4a6.5 6.5 0 0 0-3.67 3.44 29 29 0 0 1 2.7-.34q.31-1.83.97-3.1M4.58 6.28q-1.66.16-2.95.43a7 7 0 0 0 0 2.58q1.3.27 2.95.43a18 18 0 0 1 0-3.44m.17 4.71q-1.45-.12-2.69-.34a6.5 6.5 0 0 0 3.67 3.44q-.65-1.27-.98-3.1" fill="#666"/></g><defs><clipPath id="a"><path fill="#fff" d="M0 0h16v16H0z"/></clipPath></defs></svg>
|
||||
|
After Width: | Height: | Size: 1.0 KiB |
BIN
public/header-slider-1.webp
Normal file
|
After Width: | Height: | Size: 288 KiB |
BIN
public/main-logo-blue.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
public/main-logo.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
1
public/next.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 394 80"><path fill="#000" d="M262 0h68.5v12.7h-27.2v66.6h-13.6V12.7H262V0ZM149 0v12.7H94v20.4h44.3v12.6H94v21h55v12.6H80.5V0h68.7zm34.3 0h-17.8l63.8 79.4h17.9l-32-39.7 32-39.6h-17.9l-23 28.6-23-28.6zm18.3 56.7-9-11-27.1 33.7h17.8l18.3-22.7z"/><path fill="#000" d="M81 79.3 17 0H0v79.3h13.6V17l50.2 62.3H81Zm252.6-.4c-1 0-1.8-.4-2.5-1s-1.1-1.6-1.1-2.6.3-1.8 1-2.5 1.6-1 2.6-1 1.8.3 2.5 1a3.4 3.4 0 0 1 .6 4.3 3.7 3.7 0 0 1-3 1.8zm23.2-33.5h6v23.3c0 2.1-.4 4-1.3 5.5a9.1 9.1 0 0 1-3.8 3.5c-1.6.8-3.5 1.3-5.7 1.3-2 0-3.7-.4-5.3-1s-2.8-1.8-3.7-3.2c-.9-1.3-1.4-3-1.4-5h6c.1.8.3 1.6.7 2.2s1 1.2 1.6 1.5c.7.4 1.5.5 2.4.5 1 0 1.8-.2 2.4-.6a4 4 0 0 0 1.6-1.8c.3-.8.5-1.8.5-3V45.5zm30.9 9.1a4.4 4.4 0 0 0-2-3.3 7.5 7.5 0 0 0-4.3-1.1c-1.3 0-2.4.2-3.3.5-.9.4-1.6 1-2 1.6a3.5 3.5 0 0 0-.3 4c.3.5.7.9 1.3 1.2l1.8 1 2 .5 3.2.8c1.3.3 2.5.7 3.7 1.2a13 13 0 0 1 3.2 1.8 8.1 8.1 0 0 1 3 6.5c0 2-.5 3.7-1.5 5.1a10 10 0 0 1-4.4 3.5c-1.8.8-4.1 1.2-6.8 1.2-2.6 0-4.9-.4-6.8-1.2-2-.8-3.4-2-4.5-3.5a10 10 0 0 1-1.7-5.6h6a5 5 0 0 0 3.5 4.6c1 .4 2.2.6 3.4.6 1.3 0 2.5-.2 3.5-.6 1-.4 1.8-1 2.4-1.7a4 4 0 0 0 .8-2.4c0-.9-.2-1.6-.7-2.2a11 11 0 0 0-2.1-1.4l-3.2-1-3.8-1c-2.8-.7-5-1.7-6.6-3.2a7.2 7.2 0 0 1-2.4-5.7 8 8 0 0 1 1.7-5 10 10 0 0 1 4.3-3.5c2-.8 4-1.2 6.4-1.2 2.3 0 4.4.4 6.2 1.2 1.8.8 3.2 2 4.3 3.4 1 1.4 1.5 3 1.5 5h-5.8z"/></svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
BIN
public/select-doctor-reservation.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
public/shomal-logo-main.webp
Normal file
|
After Width: | Height: | Size: 35 KiB |
16
public/svg/ambulance.svg
Normal file
|
After Width: | Height: | Size: 54 KiB |
13
public/svg/angio.svg
Normal file
|
After Width: | Height: | Size: 61 KiB |
BIN
public/svg/beauty.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
public/svg/clinic-calander.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
public/svg/dental-clinic.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
public/svg/digestion.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
18
public/svg/endoscope.svg
Normal file
|
After Width: | Height: | Size: 47 KiB |
BIN
public/svg/ent.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
public/svg/general.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
public/svg/heart-cardio.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
6
public/svg/heart-surgery-room.svg
Normal file
|
After Width: | Height: | Size: 45 KiB |
14
public/svg/microscope.svg
Normal file
|
After Width: | Height: | Size: 42 KiB |
5
public/svg/mri.svg
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
public/svg/online-reservation.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
public/svg/online-response.png
Normal file
|
After Width: | Height: | Size: 8.7 KiB |
BIN
public/svg/ortopedi.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
public/svg/prenatal-care.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
9
public/svg/sonography.svg
Normal file
|
After Width: | Height: | Size: 49 KiB |
11
public/svg/surgery.svg
Normal file
|
After Width: | Height: | Size: 40 KiB |
1
public/vercel.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1155 1000"><path d="m577.3 0 577.4 1000H0z" fill="#fff"/></svg>
|
||||
|
After Width: | Height: | Size: 128 B |
1
public/window.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill-rule="evenodd" clip-rule="evenodd" d="M1.5 2.5h13v10a1 1 0 0 1-1 1h-11a1 1 0 0 1-1-1zM0 1h16v11.5a2.5 2.5 0 0 1-2.5 2.5h-11A2.5 2.5 0 0 1 0 12.5zm3.75 4.5a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5M7 4.75a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m1.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5" fill="#666"/></svg>
|
||||
|
After Width: | Height: | Size: 385 B |
109
src/app/[lang]/about/page.tsx
Normal file
@@ -0,0 +1,109 @@
|
||||
import React from "react";
|
||||
import {getDictionary} from "../dictionaries";
|
||||
import Dropdown from "@/ui/components/global/dropdown";
|
||||
import {site_languages} from "@/constants";
|
||||
import Link from "next/link";
|
||||
|
||||
export default async function Page({
|
||||
params,
|
||||
}: {
|
||||
params: Promise<{lang: "en" | "fa"}>;
|
||||
}) {
|
||||
const {lang} = await params;
|
||||
const dict = await getDictionary(lang); // en
|
||||
return (
|
||||
<>
|
||||
{/* <Dropdown options={site_languages} /> */}
|
||||
<div className="container mt-16 flex items-center">
|
||||
<ul className="flex items-center gap-x-2">
|
||||
<li>
|
||||
<Link href="/" className="font-semibold text-blue-primary">
|
||||
خانه
|
||||
</Link>
|
||||
</li>
|
||||
<span> / </span>
|
||||
<li>درباره ما</li>
|
||||
</ul>
|
||||
</div>
|
||||
<section className="my-24 container">
|
||||
<h3 className="text-3xl font-semibold text-blue-primary text-center">
|
||||
درباره بیمارستان شمال آمل
|
||||
</h3>
|
||||
<div className="grid grid-cols-2 items-start gap-x-5 mt-10">
|
||||
<div className="col-span-1">
|
||||
<div className="sticky top-4 custom-shadow">
|
||||
<video
|
||||
controls
|
||||
className="h-[400px] w-[700px] mx-auto rounded-lg "
|
||||
>
|
||||
<source src="./NICU.mp4" type="video/mp4" />
|
||||
</video>
|
||||
</div>
|
||||
</div>
|
||||
<div className="col-span-1 h-full border-[1px] border-neutral-200 rounded-lg p-6 custom-shadow">
|
||||
<p className="text-justify leading-7 text-neutral-700">
|
||||
بیمارستان تخصصی و فوقتخصصی شمال، در سال ۱۳۹۲ با هدف ارتقای سطح
|
||||
تندرستی و خدمات درمانی در شهرستان آمل و مناطق شمال کشور، تاسیس شد{" "}
|
||||
<br />
|
||||
این مرکز بهعنوان یکی از نخستین بیمارستانهای خصوصی مدرن استان
|
||||
مازندران، با بهرهگیری از ۱۵۰ تخت بستری و زیرساختهای استاندارد،
|
||||
فعالیت خود را آغاز کرد. در طول یک دهه فعالیت، بیمارستان شمال با
|
||||
توسعه مداوم بخشهای تخصصی و پاراکلینیکی، جذب تیمهای پزشکی مجرب، و
|
||||
تجهیز به فناوریهای نوین، توانسته است به یکی از مراکز شاخص درمانی
|
||||
منطقه تبدیل شود. امروز این بیمارستان با برخورداری از: اتاقهای عمل
|
||||
مجهز بخشهای مراقبت ویژه (ICU، CCU، NICU) اورژانس شبانهروزی
|
||||
کلینیکهای تخصصی و خدمات تصویربرداری و آزمایشگاهی پاسخگوی نیازهای
|
||||
روزافزون بیماران از آمل، شهرهای همجوار و حتی مسافران سلامت است.
|
||||
بیمارستان شمال با پایبندی به اصول کیفیت، کرامت انسانی،
|
||||
مسئولیتپذیری و نوآوری، چشمانداز خود را در مسیر تبدیل شدن به یکی
|
||||
از مراکز درمانی پیشرو در شمال کشور دنبال میکند.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className="grid grid-cols-12 gap-5 mt-5">
|
||||
<div className="col-span-5">
|
||||
<div className="custom-shadow p-10 rounded-lg">
|
||||
<form action="" className="space-y-4">
|
||||
<div className="space-y-2 flex flex-col">
|
||||
<label htmlFor="">نام شما</label>
|
||||
<input
|
||||
type="text"
|
||||
placeholder=""
|
||||
className="border-[1px] border-neutral-400 rounded-lg py-2 px-4"
|
||||
/>
|
||||
</div>
|
||||
<div className="space-y-2 flex flex-col">
|
||||
<label htmlFor="">ایمیل شما</label>
|
||||
<input
|
||||
type="text"
|
||||
placeholder=""
|
||||
className="border-[1px] border-neutral-400 rounded-lg py-2 px-4"
|
||||
/>
|
||||
</div>
|
||||
<div className="space-y-2 flex flex-col">
|
||||
<label htmlFor="">پیام شما</label>
|
||||
<textarea
|
||||
rows={4}
|
||||
placeholder=""
|
||||
className="border-[1px] border-neutral-400 rounded-lg py-2 px-4"
|
||||
></textarea>
|
||||
</div>
|
||||
<div className="space-y-2 flex flex-col">
|
||||
<button className="flex items-center justify-center py-4 rounded-lg text-center text-sm font-semibold bg-blue-primary text-white">
|
||||
ارسال
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div className="col-span-7">
|
||||
<div className="custom-shadow p-10 rounded-lg">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
{dict["top-menu"].about}
|
||||
</>
|
||||
);
|
||||
}
|
||||
9
src/app/[lang]/dictionaries.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
import "server-only";
|
||||
|
||||
const dictionaries = {
|
||||
en: () => import("./dictionaries/en.json").then((module) => module.default),
|
||||
fa: () => import("./dictionaries/fa.json").then((module) => module.default),
|
||||
};
|
||||
|
||||
export const getDictionary = async (locale: "en" | "fa") =>
|
||||
dictionaries[locale]();
|
||||
8
src/app/[lang]/dictionaries/en.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"products": {
|
||||
"cart": "Add to Cart"
|
||||
},
|
||||
"top-menu":{
|
||||
"about":"about us"
|
||||
}
|
||||
}
|
||||
8
src/app/[lang]/dictionaries/fa.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"products": {
|
||||
"cart": "افزودن به سبد خرید"
|
||||
},
|
||||
"top-menu":{
|
||||
"about":"درباره ما"
|
||||
}
|
||||
}
|
||||
595
src/app/[lang]/page.tsx
Normal file
@@ -0,0 +1,595 @@
|
||||
import ArrowLeftSvg from "@/ui/components/icons/ArrowLeftSvg";
|
||||
import TopMenu from "@/ui/components/top-menu/TopMenu";
|
||||
import HeaderSlider from "@/ui/header-slider/HeaderSlider";
|
||||
import Link from "next/link";
|
||||
import {getDictionary} from "./dictionaries";
|
||||
import InsurancesSlider from "@/ui/components/InsurancesSlider";
|
||||
import ChevronLeftSvg from "@/ui/components/icons/ChevronLeftSvg";
|
||||
import Image from "next/image";
|
||||
import data from "@/data/doctors.json";
|
||||
import faq from "@/data/faq.json";
|
||||
export default async function Home({
|
||||
params,
|
||||
}: {
|
||||
params: Promise<{lang: "en" | "fa"}>;
|
||||
}) {
|
||||
const {lang} = await params;
|
||||
const dict = await getDictionary(lang); // en
|
||||
return (
|
||||
<div>
|
||||
<TopMenu />
|
||||
<div className=" w-full relative">
|
||||
<HeaderSlider />
|
||||
</div>
|
||||
<section className="mt-16 container">
|
||||
<div className="space-y-4 flex flex-col justify-center items-center">
|
||||
<h3 className="font-extrabold !text-2xl text-blue-primary">
|
||||
خدمات الکترونیکی بیمارستان شمال
|
||||
</h3>
|
||||
<p className="text-sm text-text-subtext">
|
||||
بروز و سریع در ارائه همه خدمات ممکن به شما بیماران عزیز
|
||||
</p>
|
||||
</div>
|
||||
<div className="flex items-center justify-between gap-x-10 my-10">
|
||||
<Link
|
||||
href={"/reservation"}
|
||||
className="rounded-xl flex flex-col items-center justify-center border-[1px] border-neutral-200 p-5 flex-1 gap-y-5"
|
||||
>
|
||||
<span>
|
||||
<img
|
||||
src={"/select-doctor-reservation.png"}
|
||||
width={55}
|
||||
height={55}
|
||||
/>
|
||||
</span>
|
||||
<div className="flex flex-col justify-center items-center gap-y-5">
|
||||
<span className="font-bold text-xl">جوابدهی آنلاین</span>
|
||||
<span className="text-sm text-text-subtext">
|
||||
دریافت نتیجه آزمایش بصورت آنلاین
|
||||
</span>
|
||||
<div className="w-full flex justify-center items-center">
|
||||
<div className="rounded-2xl flex items-center justify-center gap-x-4 py-2 px-4">
|
||||
<span className="text-blue-primary">
|
||||
<ArrowLeftSvg size="24" />
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</Link>
|
||||
<Link
|
||||
href={"/reservation"}
|
||||
className="rounded-xl flex flex-col items-center justify-center border-[1px] border-neutral-200 p-5 flex-1 gap-y-5"
|
||||
>
|
||||
<span>
|
||||
<img
|
||||
src={"/select-doctor-reservation.png"}
|
||||
width={55}
|
||||
height={55}
|
||||
/>
|
||||
</span>
|
||||
<div className="flex flex-col justify-center items-center gap-y-5">
|
||||
<span className="font-bold text-xl">برنامه کلینیک های تخصصی</span>
|
||||
<span className="text-sm text-text-subtext">
|
||||
مشاهده برنامه های کلینیک های ما
|
||||
</span>
|
||||
<div className="w-full flex justify-center items-center">
|
||||
<div className="rounded-2xl flex items-center justify-center gap-x-4 py-2 px-4">
|
||||
<span className="text-blue-primary">
|
||||
<ArrowLeftSvg size="24" />
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</Link>
|
||||
<Link
|
||||
href={"/reservation"}
|
||||
className="rounded-xl flex flex-col items-center justify-center border-[1px] border-neutral-200 p-5 flex-1 gap-y-5"
|
||||
>
|
||||
<span>
|
||||
<img
|
||||
src={"/select-doctor-reservation.png"}
|
||||
width={55}
|
||||
height={55}
|
||||
/>
|
||||
</span>
|
||||
<div className="flex flex-col justify-center items-center gap-y-5">
|
||||
<span className="font-bold text-xl">پورتال پرسنلی</span>
|
||||
<span className="text-sm text-text-subtext">
|
||||
ورود به سیستم پرسنلی و استفاده از همه امکانات
|
||||
</span>
|
||||
<div className="w-full flex justify-center items-center">
|
||||
<div className="rounded-2xl flex items-center justify-center gap-x-4 py-2 px-4">
|
||||
<span className="text-blue-primary">
|
||||
<ArrowLeftSvg size="24" />
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</Link>
|
||||
<Link
|
||||
href={"/reservation"}
|
||||
className="rounded-xl flex flex-col items-center justify-center border-[1px] border-neutral-200 p-5 flex-1 gap-y-5"
|
||||
>
|
||||
<span>
|
||||
<img
|
||||
src={"/select-doctor-reservation.png"}
|
||||
width={55}
|
||||
height={55}
|
||||
/>
|
||||
</span>
|
||||
<div className="flex flex-col justify-center items-center gap-y-5">
|
||||
<span className="font-bold text-xl">نوبت گیری آنلاین</span>
|
||||
<span className="text-sm text-text-subtext">
|
||||
دریافت نوبت آنلاین
|
||||
</span>
|
||||
<div className="w-full flex justify-center items-center">
|
||||
<div className="rounded-2xl flex items-center justify-center gap-x-4 py-2 px-4">
|
||||
<span className="text-blue-primary">
|
||||
<ArrowLeftSvg size="24" />
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</Link>
|
||||
</div>
|
||||
{/* <div className="w-full flex justify-center items-center">
|
||||
<Link
|
||||
href="/reservation"
|
||||
className="rounded-2xl bg-blue-primary flex items-center justify-center gap-x-4 py-2 px-4"
|
||||
>
|
||||
<span className="font-medium text-white">دریافت نوبت آنلاین</span>
|
||||
<span className="text-white">
|
||||
<ArrowLeftSvg size="14" />
|
||||
</span>
|
||||
</Link>
|
||||
</div> */}
|
||||
</section>
|
||||
<section className="container mt-24">
|
||||
<div className="bg-blue-primary py-10 px-2 rounded-xl">
|
||||
<div className="flex items-center justify-center w-full relative">
|
||||
<h3 className="font-extrabold !text-2xl text-white text-center self-center">
|
||||
بیمه های طرف قرارداد
|
||||
</h3>
|
||||
<div className="flex items-center justify-center absolute left-4">
|
||||
<Link
|
||||
href={"/"}
|
||||
className=" text-white py-4 w-fit flex items-center gap-x-4"
|
||||
>
|
||||
<span className="text-sm font-semibold">مشاهده همه</span>
|
||||
<span>
|
||||
<ChevronLeftSvg size="14" />
|
||||
</span>
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
<div className="mt-10">
|
||||
<InsurancesSlider />
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
{/* <section className="mt-16 container">
|
||||
<div className="space-y-4 flex flex-col justify-center items-center">
|
||||
<h3 className="font-bold text-2xl text-blue-primary">
|
||||
نوبت گیری در سه مرحله!
|
||||
</h3>
|
||||
<p>
|
||||
در سریعترین حالت ممکن و در سه مرحله نوبت خود را بصورت آنلاین دریافت
|
||||
کنید.
|
||||
</p>
|
||||
</div>
|
||||
<div className="flex items-center justify-between gap-x-10 my-10">
|
||||
<div className="rounded-xl flex items-center justify-start gap-x-4 custom-shadow p-6 flex-1">
|
||||
<span>
|
||||
<img
|
||||
src={"/select-doctor-reservation.png"}
|
||||
width={55}
|
||||
height={55}
|
||||
/>
|
||||
</span>
|
||||
<div className="flex flex-col justify-start items-start gap-y-3">
|
||||
<span className="font-extrabold">انتخاب پزشک و تخصص</span>
|
||||
<span className="text-sm text-text-subtext">
|
||||
انتخاب تخصص، پزشک و مرکز درمانی مورد نظر.
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div className="rounded-xl flex items-center justify-start gap-x-4 custom-shadow p-6 flex-1">
|
||||
<span>
|
||||
<img
|
||||
src={"/select-doctor-reservation.png"}
|
||||
width={55}
|
||||
height={55}
|
||||
/>
|
||||
</span>
|
||||
<div className="flex flex-col justify-start items-start gap-y-3">
|
||||
<span className="font-extrabold">انتخاب پزشک و تخصص</span>
|
||||
<span className="text-sm text-text-subtext">
|
||||
انتخاب تخصص، پزشک و مرکز درمانی مورد نظر.
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div className="rounded-xl flex items-center justify-start gap-x-4 custom-shadow p-6 flex-1">
|
||||
<span>
|
||||
<img
|
||||
src={"/select-doctor-reservation.png"}
|
||||
width={55}
|
||||
height={55}
|
||||
alt=""
|
||||
/>
|
||||
</span>
|
||||
<div className="flex flex-col justify-start items-start gap-y-3">
|
||||
<span className="font-extrabold">انتخاب پزشک و تخصص</span>
|
||||
<span className="text-sm text-text-subtext">
|
||||
انتخاب تخصص، پزشک و مرکز درمانی مورد نظر.
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="w-full flex justify-center items-center">
|
||||
<Link
|
||||
href="/reservation"
|
||||
className="rounded-2xl bg-blue-primary flex items-center justify-center gap-x-4 py-2 px-4"
|
||||
>
|
||||
<span className="font-medium text-white">دریافت نوبت آنلاین</span>
|
||||
<span className="text-white">
|
||||
<ArrowLeftSvg size="14" />
|
||||
</span>
|
||||
</Link>
|
||||
</div>
|
||||
</section> */}
|
||||
{/* <span className="inline-block h-full min-h-[1px] w-[200px] bg-blue-primary mx-auto"></span> */}
|
||||
|
||||
<section className="mt-24 container">
|
||||
<div className="flex items-center justify-center w-full relative">
|
||||
<h3 className="font-extrabold !text-2xl text-blue-primary text-center self-center">
|
||||
پزشکان پرطرفدار
|
||||
</h3>
|
||||
<div className="flex items-center justify-center absolute left-4">
|
||||
<Link
|
||||
href={"/"}
|
||||
className=" text-blue-primary w-fit rounded-xl flex items-center gap-x-4"
|
||||
>
|
||||
<span className="text-sm font-semibold">مشاهده همه</span>
|
||||
<span>
|
||||
<ChevronLeftSvg size="14" />
|
||||
</span>
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex items-stretch h-[250px] lg:gap-y-5 gap-x-5 mt-10">
|
||||
{data.map((item) => (
|
||||
<div key={item.id} className="h-full rounded-xl overflow-hidden">
|
||||
<Link
|
||||
href={"/"}
|
||||
className="relative group shadow-lg transition-transform duration-300 hover:scale-[1.02]"
|
||||
>
|
||||
<div className="absolute top-0 w-full h-full z-10 text-white px-4 py-6 bg-black/40 flex items-end">
|
||||
<div className="space-y-1 flex flex-col">
|
||||
<span className="text-lg font-normal">دکتر</span>
|
||||
|
||||
<span className="text-lg font-extrabold">
|
||||
{item.fullname}
|
||||
</span>
|
||||
<span className="font-medium">{item.expertise}</span>
|
||||
</div>
|
||||
</div>
|
||||
<Image
|
||||
loading="lazy"
|
||||
src={"/doctor.png"}
|
||||
width={187}
|
||||
height={250}
|
||||
className="object-cover w-full h-[250px]"
|
||||
alt=""
|
||||
/>
|
||||
</Link>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</section>
|
||||
<section className="mt-24 container space-y-10">
|
||||
<div className="flex items-center justify-center w-full relative">
|
||||
<h3 className="font-extrabold !text-2xl text-blue-primary text-center self-center">
|
||||
اخبار و مقالات
|
||||
</h3>
|
||||
<div className="flex items-center justify-center absolute left-4">
|
||||
<Link
|
||||
href={"/"}
|
||||
className=" text-blue-primary py-4 w-fit flex items-center gap-x-4"
|
||||
>
|
||||
<span className="text-sm font-semibold">مشاهده همه</span>
|
||||
<span>
|
||||
<ChevronLeftSvg size="14" />
|
||||
</span>
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex items-stretch justify-center gap-x-5">
|
||||
<Link
|
||||
href={""}
|
||||
className="bg-blue-primary text-white min-w-[100px] font-semibold text-center px-10 py-4 rounded-full"
|
||||
>
|
||||
بلاگ
|
||||
</Link>
|
||||
<Link
|
||||
href={"/"}
|
||||
className="border-[1px] border-neutral-200 text-neutral-600 min-w-[100px] text-center px-10 py-4 rounded-full"
|
||||
>
|
||||
اخبار
|
||||
</Link>
|
||||
<Link
|
||||
href={"/"}
|
||||
className="border-[1px] border-neutral-200 text-neutral-600 min-w-[100px] text-center px-10 py-4 rounded-full"
|
||||
>
|
||||
رویداد
|
||||
</Link>
|
||||
<Link
|
||||
href={"/"}
|
||||
className="border-[1px] border-neutral-200 text-neutral-600 min-w-[100px] text-center px-10 py-4 rounded-full"
|
||||
>
|
||||
آموزش
|
||||
</Link>
|
||||
<Link
|
||||
href={"/"}
|
||||
className="border-[1px] border-neutral-200 text-neutral-600 min-w-[100px] text-center px-10 py-4 rounded-full"
|
||||
>
|
||||
عکس و ویدئو
|
||||
</Link>
|
||||
</div>
|
||||
<div className="grid lg:grid-cols-4 sm:grid-cols-2 grid-cols-1 gap-x-4 ">
|
||||
<div className="col-span-1 h-full border-[1px] border-neutral-200 rounded-b-lg">
|
||||
<div className="relative rounded-t-lg overflow-hidden h-[200px]">
|
||||
<Image
|
||||
loading="lazy"
|
||||
src={"/1daad534bbd4cd30c325dde4746d01bcc3752e98.jpg"}
|
||||
fill
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<div className="flex flex-col w-full ">
|
||||
<h3 className="font-medium text-sm py-4 px-2">
|
||||
کشف همزاد کرونا در چین !
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div className="col-span-1 h-full border-[1px] border-neutral-200 rounded-b-lg">
|
||||
<div className="relative rounded-t-lg overflow-hidden h-[200px]">
|
||||
<Image
|
||||
loading="lazy"
|
||||
src={"/1daad534bbd4cd30c325dde4746d01bcc3752e98.jpg"}
|
||||
fill
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<div className="flex flex-col w-full ">
|
||||
<h3 className="font-medium text-sm py-4 px-2">
|
||||
کشف همزاد کرونا در چین !
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div className="col-span-1 h-full border-[1px] border-neutral-200 rounded-b-lg">
|
||||
<div className="relative rounded-t-lg overflow-hidden h-[200px]">
|
||||
<Image
|
||||
loading="lazy"
|
||||
src={"/1daad534bbd4cd30c325dde4746d01bcc3752e98.jpg"}
|
||||
fill
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<div className="flex flex-col w-full">
|
||||
<h3 className="font-medium text-sm py-4 px-2">
|
||||
کشف همزاد کرونا در چین !
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div className="col-span-1 h-full border-[1px] border-neutral-200 rounded-b-lg">
|
||||
<div className="relative rounded-t-lg overflow-hidden h-[200px]">
|
||||
<Image
|
||||
loading="lazy"
|
||||
src={"/1daad534bbd4cd30c325dde4746d01bcc3752e98.jpg"}
|
||||
fill
|
||||
alt=""
|
||||
className="object-cover"
|
||||
/>
|
||||
</div>
|
||||
<div className="flex flex-col w-full ">
|
||||
<h3 className="font-medium text-sm py-4 px-2">
|
||||
کشف همزاد کرونا در چین !
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section className="container mt-24 mb-40">
|
||||
<div className="flex items-center justify-center w-full relative">
|
||||
<h3 className="font-extrabold !text-2xl text-blue-primary text-center ">
|
||||
سوالات متداول
|
||||
</h3>
|
||||
</div>
|
||||
<div className="grid grid-cols-2 gap-4 mt-16">
|
||||
{faq.map((item) => (
|
||||
<div
|
||||
key={item.id}
|
||||
className="col-span-1 bg-white rounded-lg p-4 border-[1px] border-neutral-200 flex items-center justify-between"
|
||||
>
|
||||
<div className="flex items-center justify-start gap-x-3">
|
||||
<span>
|
||||
<svg
|
||||
width="11"
|
||||
height="19"
|
||||
viewBox="0 0 11 19"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path
|
||||
d="M4.05 13C4.05 11.65 4.17083 10.6792 4.4125 10.0875C4.65417 9.49583 5.16667 8.85 5.95 8.15C6.63333 7.55 7.15417 7.02917 7.5125 6.5875C7.87083 6.14583 8.05 5.64167 8.05 5.075C8.05 4.39167 7.82083 3.825 7.3625 3.375C6.90417 2.925 6.26667 2.7 5.45 2.7C4.6 2.7 3.95417 2.95833 3.5125 3.475C3.07083 3.99167 2.75833 4.51667 2.575 5.05L0 3.95C0.35 2.88333 0.991667 1.95833 1.925 1.175C2.85833 0.391667 4.03333 0 5.45 0C7.2 0 8.54583 0.4875 9.4875 1.4625C10.4292 2.4375 10.9 3.60833 10.9 4.975C10.9 5.80833 10.7208 6.52083 10.3625 7.1125C10.0042 7.70417 9.44167 8.375 8.675 9.125C7.85833 9.90833 7.3625 10.5042 7.1875 10.9125C7.0125 11.3208 6.925 12.0167 6.925 13H4.05ZM5.45 19C4.9 19 4.42917 18.8042 4.0375 18.4125C3.64583 18.0208 3.45 17.55 3.45 17C3.45 16.45 3.64583 15.9792 4.0375 15.5875C4.42917 15.1958 4.9 15 5.45 15C6 15 6.47083 15.1958 6.8625 15.5875C7.25417 15.9792 7.45 16.45 7.45 17C7.45 17.55 7.25417 18.0208 6.8625 18.4125C6.47083 18.8042 6 19 5.45 19Z"
|
||||
fill="#043D82"
|
||||
/>
|
||||
</svg>
|
||||
</span>
|
||||
<span className="font-medium text-blue-primary">
|
||||
{item.question}
|
||||
</span>
|
||||
</div>
|
||||
<span className="-rotate-90 group-hover:rotate-90 transition-all duration-300 text-blue-primary">
|
||||
<ChevronLeftSvg size="10" />
|
||||
</span>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</section>
|
||||
<footer className="bg-blue-primary rounded-t-lg p-20 container ">
|
||||
<div className="grid lg:grid-cols-12 sm:grid-cols-2 grid-cols-1 w-full container gap-x-10">
|
||||
<div className="col-span-5 flex items-center justify-start gap-x-3">
|
||||
<div className="relative h-[140px] w-[140px]">
|
||||
<Image
|
||||
loading="lazy"
|
||||
src="/main-logo.png"
|
||||
fill
|
||||
alt="shomal hospital"
|
||||
style={{
|
||||
color: "transparent",
|
||||
fill: "red",
|
||||
objectFit: "contain",
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
<div className="space-y-5">
|
||||
<div className="flex items-center justify-start gap-x-1">
|
||||
<span>
|
||||
<svg
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path
|
||||
d="M11.9999 13.4304C13.723 13.4304 15.1199 12.0336 15.1199 10.3104C15.1199 8.5873 13.723 7.19043 11.9999 7.19043C10.2768 7.19043 8.87988 8.5873 8.87988 10.3104C8.87988 12.0336 10.2768 13.4304 11.9999 13.4304Z"
|
||||
stroke="white"
|
||||
strokeWidth="1.5"
|
||||
/>
|
||||
<path
|
||||
d="M3.6202 8.49C5.5902 -0.169998 18.4202 -0.159997 20.3802 8.5C21.5302 13.58 18.3702 17.88 15.6002 20.54C13.5902 22.48 10.4102 22.48 8.3902 20.54C5.6302 17.88 2.4702 13.57 3.6202 8.49Z"
|
||||
stroke="white"
|
||||
strokeWidth="1.5"
|
||||
/>
|
||||
</svg>
|
||||
</span>
|
||||
<span className="text-white text-sm">
|
||||
آدرس : آمل بلوار مدرس آفتاب 47 بیمارستان شمال
|
||||
</span>
|
||||
</div>
|
||||
<div className="flex items-center justify-start gap-x-1">
|
||||
<span>
|
||||
<svg
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path
|
||||
d="M21.97 18.33C21.97 18.69 21.89 19.06 21.72 19.42C21.55 19.78 21.33 20.12 21.04 20.44C20.55 20.98 20.01 21.37 19.4 21.62C18.8 21.87 18.15 22 17.45 22C16.43 22 15.34 21.76 14.19 21.27C13.04 20.78 11.89 20.12 10.75 19.29C9.6 18.45 8.51 17.52 7.47 16.49C6.44 15.45 5.51 14.36 4.68 13.22C3.86 12.08 3.2 10.94 2.72 9.81C2.24 8.67 2 7.58 2 6.54C2 5.86 2.12 5.21 2.36 4.61C2.6 4 2.98 3.44 3.51 2.94C4.15 2.31 4.85 2 5.59 2C5.87 2 6.15 2.06 6.4 2.18C6.66 2.3 6.89 2.48 7.07 2.74L9.39 6.01C9.57 6.26 9.7 6.49 9.79 6.71C9.88 6.92 9.93 7.13 9.93 7.32C9.93 7.56 9.86 7.8 9.72 8.03C9.59 8.26 9.4 8.5 9.16 8.74L8.4 9.53C8.29 9.64 8.24 9.77 8.24 9.93C8.24 10.01 8.25 10.08 8.27 10.16C8.3 10.24 8.33 10.3 8.35 10.36C8.53 10.69 8.84 11.12 9.28 11.64C9.73 12.16 10.21 12.69 10.73 13.22C11.27 13.75 11.79 14.24 12.32 14.69C12.84 15.13 13.27 15.43 13.61 15.61C13.66 15.63 13.72 15.66 13.79 15.69C13.87 15.72 13.95 15.73 14.04 15.73C14.21 15.73 14.34 15.67 14.45 15.56L15.21 14.81C15.46 14.56 15.7 14.37 15.93 14.25C16.16 14.11 16.39 14.04 16.64 14.04C16.83 14.04 17.03 14.08 17.25 14.17C17.47 14.26 17.7 14.39 17.95 14.56L21.26 16.91C21.52 17.09 21.7 17.3 21.81 17.55C21.91 17.8 21.97 18.05 21.97 18.33Z"
|
||||
stroke="white"
|
||||
strokeWidth="1.5"
|
||||
strokeMiterlimit="10"
|
||||
/>
|
||||
</svg>
|
||||
</span>
|
||||
<span className="text-white text-sm">تلفن پشتیبانی : 4492-0011 </span>
|
||||
</div>
|
||||
<div className="flex items-center justify-start gap-x-1">
|
||||
<span>
|
||||
<svg
|
||||
width="20"
|
||||
height="16"
|
||||
viewBox="0 0 20 16"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path
|
||||
d="M2 16C1.45 16 0.979167 15.8042 0.5875 15.4125C0.195833 15.0208 0 14.55 0 14V2C0 1.45 0.195833 0.979167 0.5875 0.5875C0.979167 0.195833 1.45 0 2 0H18C18.55 0 19.0208 0.195833 19.4125 0.5875C19.8042 0.979167 20 1.45 20 2V14C20 14.55 19.8042 15.0208 19.4125 15.4125C19.0208 15.8042 18.55 16 18 16H2ZM10 9L2 4V14H18V4L10 9ZM10 7L18 2H2L10 7ZM2 4V2V14V4Z"
|
||||
fill="#E8EAED"
|
||||
/>
|
||||
</svg>
|
||||
</span>
|
||||
<a href="mailto:info@shomalhospital.com" className="text-white text-sm">
|
||||
info@shomalhospital.com
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="col-span-4 grid grid-cols-12">
|
||||
<div className="col-span-6 gap-y-4">
|
||||
<h4 className="text-white">لینک های مفید</h4>
|
||||
<ul className="space-y-4 text-neutral-300 transition-colors duration-300">
|
||||
<li className="mt-5">
|
||||
<Link href="/" className="hover:text-white text-sm">
|
||||
پزشکان
|
||||
</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link href="/" className="hover:text-white text-sm">
|
||||
پزشکان
|
||||
</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link href="/" className="hover:text-white text-sm">
|
||||
پزشکان
|
||||
</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link href="/" className="hover:text-white text-sm">
|
||||
پزشکان
|
||||
</Link>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div className="col-span-6 gap-y-4">
|
||||
<h4 className="text-white">لینک های مفید</h4>
|
||||
<ul className="space-y-4 text-neutral-300 transition-colors duration-300">
|
||||
<li className="mt-5">
|
||||
<Link href="/" className="hover:text-white text-sm">
|
||||
پزشکان
|
||||
</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link href="/" className="hover:text-white text-sm">
|
||||
پزشکان
|
||||
</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link href="/" className="hover:text-white text-sm">
|
||||
پزشکان
|
||||
</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link href="/" className="hover:text-white text-sm">
|
||||
پزشکان
|
||||
</Link>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div className="col-span-3">
|
||||
<form>
|
||||
<div className="mb-4 text-white">
|
||||
<label htmlFor="">عضویت در خبرنامه</label>
|
||||
</div>
|
||||
<div className=" flex items-center gap-x-1">
|
||||
<input
|
||||
type="text"
|
||||
className="border-[1px] border-white rounded-lg p-3 min-w-xs text-sm font-normal text-white outline-0"
|
||||
placeholder="آدرس ایمیل خود را وارد کنید"
|
||||
/>
|
||||
<button className="bg-white rounded-lg text-sm h-[42px] px-4">
|
||||
ارسال
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
585
src/app/[lang]/testing/page.tsx
Normal file
@@ -0,0 +1,585 @@
|
||||
import LanguagesChanger from "@/ui/LanguageChanger";
|
||||
import PageSlider from "@/ui/PageSlider";
|
||||
import TopMenu from "@/ui/TopMenu";
|
||||
import {toPersianNumber} from "@/utils/functions";
|
||||
import Image from "next/image";
|
||||
import Link from "next/link";
|
||||
import React from "react";
|
||||
|
||||
export default async function Page({
|
||||
params,
|
||||
}: {
|
||||
params: Promise<{lang: "en" | "fa" | "ar"}>;
|
||||
}) {
|
||||
const {lang} = await params;
|
||||
|
||||
return (
|
||||
<div>
|
||||
<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">
|
||||
<span className="text-[#e6e6e6] group-hover:text-white">
|
||||
<svg
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path
|
||||
d="M4 20C3.45 20 2.97917 19.8042 2.5875 19.4125C2.19583 19.0208 2 18.55 2 18V6C2 5.45 2.19583 4.97917 2.5875 4.5875C2.97917 4.19583 3.45 4 4 4H20C20.55 4 21.0208 4.19583 21.4125 4.5875C21.8042 4.97917 22 5.45 22 6V18C22 18.55 21.8042 19.0208 21.4125 19.4125C21.0208 19.8042 20.55 20 20 20H4ZM12 13L4 8V18H20V8L12 13ZM12 11L20 6H4L12 11ZM4 8V6V18V8Z"
|
||||
fill="currentColor"
|
||||
/>
|
||||
</svg>
|
||||
</span>
|
||||
<span className="text-[#e6e6e6] group-hover:text-white text-sm font-medium">
|
||||
<a href={`mailto:info@shomalhospital.com`}>
|
||||
ارتباط با ما از طریق ایمیل
|
||||
</a>
|
||||
</span>
|
||||
</div>
|
||||
<div className="lg:flex hidden items-center justify-end gap-x-4 ">
|
||||
<a href="https://instagram.com/shomalhospital">
|
||||
<svg
|
||||
width="21"
|
||||
height="21"
|
||||
viewBox="0 0 25 25"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path
|
||||
d="M8.12467 2.08337H16.8747C20.208 2.08337 22.9163 4.79171 22.9163 8.12504V16.875C22.9163 18.4774 22.2798 20.0141 21.1468 21.1471C20.0137 22.2802 18.477 22.9167 16.8747 22.9167H8.12467C4.79134 22.9167 2.08301 20.2084 2.08301 16.875V8.12504C2.08301 6.52269 2.71954 4.98597 3.85257 3.85294C4.9856 2.71991 6.52232 2.08337 8.12467 2.08337ZM7.91634 4.16671C6.92178 4.16671 5.96795 4.5618 5.26469 5.26506C4.56143 5.96832 4.16634 6.92215 4.16634 7.91671V17.0834C4.16634 19.1563 5.84342 20.8334 7.91634 20.8334H17.083C18.0776 20.8334 19.0314 20.4383 19.7347 19.735C20.4379 19.0318 20.833 18.0779 20.833 17.0834V7.91671C20.833 5.84379 19.1559 4.16671 17.083 4.16671H7.91634ZM17.9684 5.72921C18.3138 5.72921 18.6449 5.86639 18.8891 6.11058C19.1333 6.35477 19.2705 6.68596 19.2705 7.03129C19.2705 7.37662 19.1333 7.70781 18.8891 7.952C18.6449 8.19619 18.3138 8.33337 17.9684 8.33337C17.6231 8.33337 17.2919 8.19619 17.0477 7.952C16.8035 7.70781 16.6663 7.37662 16.6663 7.03129C16.6663 6.68596 16.8035 6.35477 17.0477 6.11058C17.2919 5.86639 17.6231 5.72921 17.9684 5.72921ZM12.4997 7.29171C13.881 7.29171 15.2058 7.84044 16.1825 8.81719C17.1593 9.79394 17.708 11.1187 17.708 12.5C17.708 13.8814 17.1593 15.2061 16.1825 16.1829C15.2058 17.1596 13.881 17.7084 12.4997 17.7084C11.1183 17.7084 9.79358 17.1596 8.81683 16.1829C7.84007 15.2061 7.29134 13.8814 7.29134 12.5C7.29134 11.1187 7.84007 9.79394 8.81683 8.81719C9.79358 7.84044 11.1183 7.29171 12.4997 7.29171ZM12.4997 9.37504C11.6709 9.37504 10.876 9.70428 10.29 10.2903C9.70391 10.8764 9.37467 11.6712 9.37467 12.5C9.37467 13.3288 9.70391 14.1237 10.29 14.7097C10.876 15.2958 11.6709 15.625 12.4997 15.625C13.3285 15.625 14.1233 15.2958 14.7094 14.7097C15.2954 14.1237 15.6247 13.3288 15.6247 12.5C15.6247 11.6712 15.2954 10.8764 14.7094 10.2903C14.1233 9.70428 13.3285 9.37504 12.4997 9.37504Z"
|
||||
fill="white"
|
||||
/>
|
||||
</svg>
|
||||
</a>
|
||||
<span className="text-white"> | </span>
|
||||
|
||||
<LanguagesChanger lang={lang} />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<TopMenu lang={lang} />
|
||||
<PageSlider lang={lang} />
|
||||
|
||||
<section className="lg:mb-40 mb-10 lg:mt-10 mt-4 container ">
|
||||
<div className=" lg:py-16 p-2">
|
||||
<h3 className="lg:text-[2.5em] 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>
|
||||
|
||||
<div className="grid grid-cols-3 mt-20 gap-8">
|
||||
<div className="col-span-1 bg-[#F8F9FA] rounded-4xl px-4 py-8 flex flex-col justify-start items-center gap-y-4 text-secondary group hover:outline-2 cursor-pointer hover:outline-secondary/40">
|
||||
<span className="w-[100px] h-[100px] overflow-hidden object-cover">
|
||||
<img
|
||||
src={"/svg/online-response.png"}
|
||||
className="object-cover"
|
||||
alt="angio"
|
||||
/>
|
||||
</span>
|
||||
<span className="text-blue-primary text-2xl font-medium">
|
||||
جوابدهی آنلاین
|
||||
</span>
|
||||
<p className="text-[#333] text-sm">
|
||||
دریافت نتیجه آزمایش به صورت آنلاین
|
||||
</p>
|
||||
</div>
|
||||
<div className="col-span-1 bg-[#F8F9FA] rounded-4xl px-4 py-8 flex flex-col justify-start items-center gap-y-4 text-secondary">
|
||||
<span className="w-[100px] h-[100px] overflow-hidden object-cover">
|
||||
<img
|
||||
src={"/svg/clinic-calander.png"}
|
||||
className="object-cover"
|
||||
alt="angio"
|
||||
/>
|
||||
</span>
|
||||
<span className="text-blue-primary text-2xl font-medium">
|
||||
برنامه کلینیک های تخصصی
|
||||
</span>
|
||||
<p className="text-[#333] text-sm">
|
||||
مشاهده ساعت کاری پزشکان کلینیک
|
||||
</p>
|
||||
</div>
|
||||
{/* <div className="col-span-1 bg-[#F8F9FA] rounded-4xl px-4 py-8 flex flex-col justify-start items-center gap-y-4 text-secondary">
|
||||
<svg
|
||||
stroke="currentColor"
|
||||
fill="none"
|
||||
strokeWidth="1.5"
|
||||
viewBox="0 0 24 24"
|
||||
aria-hidden="true"
|
||||
height="66px"
|
||||
width="66px"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
d="M15 9h3.75M15 12h3.75M15 15h3.75M4.5 19.5h15a2.25 2.25 0 0 0 2.25-2.25V6.75A2.25 2.25 0 0 0 19.5 4.5h-15a2.25 2.25 0 0 0-2.25 2.25v10.5A2.25 2.25 0 0 0 4.5 19.5Zm6-10.125a1.875 1.875 0 1 1-3.75 0 1.875 1.875 0 0 1 3.75 0Zm1.294 6.336a6.721 6.721 0 0 1-3.17.789 6.721 6.721 0 0 1-3.168-.789 3.376 3.376 0 0 1 6.338 0Z"
|
||||
></path>
|
||||
</svg>
|
||||
<span className="text-blue-primary text-2xl font-medium">
|
||||
پرتال پرسنلی
|
||||
</span>
|
||||
<p className="text-[#333] text-sm">
|
||||
ورود به سیستم و استفاده از همه امکانات
|
||||
</p>
|
||||
</div> */}
|
||||
<div className="col-span-1 bg-[#F8F9FA] rounded-4xl px-4 py-8 flex flex-col justify-start items-center gap-y-4 text-secondary">
|
||||
<span className="w-[100px] h-[100px] overflow-hidden object-cover">
|
||||
<img
|
||||
src={"/svg/online-reservation.png"}
|
||||
className="object-cover"
|
||||
alt="angio"
|
||||
/>
|
||||
</span>
|
||||
<span className="text-blue-primary text-2xl font-medium">
|
||||
نوبت آنلاین
|
||||
</span>
|
||||
<p className="text-[#333] text-sm">دریافت نوبت به صورت آنلاین</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section className="lg:mb-40 mb-10 lg:mt-10 mt-4 container ">
|
||||
<div className="rounded-4xl lg:py-16 p-2 grid grid-cols-2 gap-x-10">
|
||||
<div className="col-span-1">
|
||||
<h3 className="text-2xl font-black mb-10">
|
||||
بیمارستان شمال : هستیم برای سلامتی شما ...
|
||||
</h3>
|
||||
<p className="leading-9 text-[#333] pl-10">
|
||||
بیمارستان تخصصی و فوقتخصصی شمال، در سال ۱۳۹۲ با هدف ارتقای سطح
|
||||
تندرستی و خدمات درمانی در شهرستان آمل و مناطق شمال کشور، تأسیس شد.
|
||||
این مرکز بهعنوان یکی از نخستین بیمارستانهای خصوصی مدرن استان
|
||||
مازندران، با بهرهگیری از ۱۵۰ تخت بستری و زیرساختهای استاندارد،
|
||||
فعالیت خود را آغاز کرد. در طول یک دهه فعالیت، بیمارستان شمال با
|
||||
توسعه مداوم بخشهای تخصصی و پاراکلینیکی، جذب تیمهای پزشکی مجرب، و
|
||||
تجهیز به فناوریهای نوین، توانسته است به یکی از مراکز شاخص درمانی
|
||||
منطقه تبدیل شود.
|
||||
</p>
|
||||
</div>
|
||||
<div className="col-span-1 grid grid-cols-4 grid-rows-2 gap-6">
|
||||
<div className="row-span-1 col-span-1 bg-[#F8F9FA] p-4 rounded-4xl flex flex-col justify-center items-center gap-y-4 text-secondary">
|
||||
<span className="w-[60px] h-[60px] overflow-hidden object-cover">
|
||||
<img
|
||||
src={"/svg/angio.svg"}
|
||||
className="object-cover"
|
||||
alt="angio"
|
||||
/>
|
||||
</span>
|
||||
<span className="text-blue-primary font-medium text-sm">
|
||||
آنژیوگرافی
|
||||
</span>
|
||||
</div>
|
||||
<div className="row-span-1 col-span-1 bg-[#F8F9FA] p-4 rounded-4xl flex flex-col justify-center items-center gap-y-4 text-secondary">
|
||||
<span className="w-[60px] h-[60px] overflow-hidden object-cover">
|
||||
<img
|
||||
src={"/svg/surgery.svg"}
|
||||
className="object-cover"
|
||||
alt="angio"
|
||||
/>
|
||||
</span>
|
||||
<span className="text-blue-primary font-medium text-sm">
|
||||
اتاق عمل جنرال
|
||||
</span>
|
||||
</div>
|
||||
<div className="row-span-1 col-span-1 bg-[#F8F9FA] p-4 rounded-4xl flex flex-col justify-center items-center gap-y-4 text-secondary">
|
||||
<span className="w-[60px] h-[60px] overflow-hidden object-cover">
|
||||
<img
|
||||
src={"/svg/endoscope.svg"}
|
||||
className="object-cover"
|
||||
alt="angio"
|
||||
/>
|
||||
</span>
|
||||
<span className="text-blue-primary font-medium text-sm">
|
||||
اسکوپی
|
||||
</span>
|
||||
</div>
|
||||
<div className="row-span-1 col-span-1 bg-[#F8F9FA] p-4 rounded-4xl flex flex-col justify-center items-center gap-y-4 text-secondary">
|
||||
<span className="w-[60px] h-[60px] overflow-hidden object-cover">
|
||||
<img
|
||||
src={"/svg/mri.svg"}
|
||||
className="object-cover"
|
||||
alt="angio"
|
||||
/>
|
||||
</span>
|
||||
<span className="text-blue-primary font-medium text-sm">
|
||||
مرکز تصویربرداری
|
||||
</span>
|
||||
</div>
|
||||
<div className="row-span-1 col-span-1 bg-[#F8F9FA] p-4 rounded-4xl flex flex-col justify-center items-center gap-y-4 text-black">
|
||||
<span className="w-[60px] h-[60px] overflow-hidden object-cover">
|
||||
<img
|
||||
src={"/svg/ambulance.svg"}
|
||||
className="object-cover"
|
||||
alt="angio"
|
||||
/>
|
||||
</span>
|
||||
<span className="text-blue-primary font-medium text-sm">
|
||||
اورژانس
|
||||
</span>
|
||||
</div>
|
||||
<div className="row-span-1 col-span-1 bg-[#F8F9FA] p-4 rounded-4xl flex flex-col justify-center items-center gap-y-4 text-secondary">
|
||||
<span className="w-[60px] h-[60px] overflow-hidden object-cover">
|
||||
<img
|
||||
src={"/svg/heart-surgery-room.svg"}
|
||||
className="object-cover"
|
||||
alt="angio"
|
||||
/>
|
||||
</span>
|
||||
<span className="text-blue-primary font-medium text-sm">
|
||||
اتاق عمل قلب
|
||||
</span>
|
||||
</div>
|
||||
<div className="row-span-1 col-span-1 bg-[#F8F9FA] p-4 rounded-4xl flex flex-col justify-center items-center gap-y-4 text-secondary">
|
||||
<span className="w-[60px] h-[60px] overflow-hidden object-cover">
|
||||
<img
|
||||
src={"/svg/microscope.svg"}
|
||||
className="object-cover"
|
||||
alt="angio"
|
||||
/>
|
||||
</span>
|
||||
<span className="text-blue-primary font-medium text-sm">
|
||||
آزمایشگاه و پاتولوژی
|
||||
</span>
|
||||
</div>
|
||||
<div className="row-span-1 col-span-1 bg-[#F8F9FA] p-4 rounded-4xl flex flex-col justify-center items-center gap-y-4 text-secondary">
|
||||
<span className="w-[60px] h-[60px] overflow-hidden object-cover">
|
||||
<img
|
||||
src={"/svg/sonography.svg"}
|
||||
className="object-cover"
|
||||
alt="angio"
|
||||
/>
|
||||
</span>
|
||||
|
||||
<span className="text-blue-primary font-medium text-sm">
|
||||
بلوک زایمان
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section className="lg:mb-40 mb-10 lg:mt-10 mt-4 container ">
|
||||
<div className="bg-[#F8F9FA] rounded-4xl lg:px-40 lg:py-16 p-2">
|
||||
<h3 className="mb-20 lg:text-[2.5em] 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>
|
||||
<div
|
||||
className={`${
|
||||
lang === "en" ? "text-left" : "text-right"
|
||||
} lg:text-[1.2rem] leading-relaxed text-[#454547]`}
|
||||
>
|
||||
ما خدمات تشخیصی و پاراکلینیکی را با استفاده از تجهیزات روز دنیا و
|
||||
تیم متخصصین مجرب با هدف خدمات دقیق، سریع و مطمئن به صورت 24 ساعته در
|
||||
فرآیند تشخیص و درمان ارائه می نمائیم. این خدمات شامل :
|
||||
<ul className="mt-10 list-disc list-inside leading-10">
|
||||
<li>سونوگرافی</li>
|
||||
<li>سی تی اسکن</li>
|
||||
<li>رادیولوژی</li>
|
||||
<li>ماموگرافی</li>
|
||||
<li>سی تی آنژیو</li>
|
||||
<li>آندوسکوپی</li>
|
||||
<li>کولونوسکوپی</li>
|
||||
<li>سنگ شکن</li>
|
||||
<li>توانبخشی</li>
|
||||
<li>OPG</li>
|
||||
<li> و ...</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section className="lg:mb-40 mb-10 lg:mt-10 mt-4 container ">
|
||||
<div className="lg:px-40 lg:py-16 p-2">
|
||||
<h3 className="mb-20 lg:text-[2.5em] 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>
|
||||
<div className="grid grid-cols-4 grid-rows-2 gap-8">
|
||||
<div className="row-span-1 col-span-1 bg-[#F8F9FA] transition-all p-4 rounded-4xl flex flex-col justify-center items-center gap-y-4 text-secondary group hover:shadow cursor-pointer hover:shadow-secondary/40">
|
||||
<span className="w-[100px] h-[100px] overflow-hidden object-cover">
|
||||
<img
|
||||
src={"/svg/heart-cardio.png"}
|
||||
className="object-cover"
|
||||
alt="angio"
|
||||
/>
|
||||
</span>
|
||||
<span className="text-blue-primary font-medium text-lg group-hover:text-secondary ">
|
||||
قلب و عروق
|
||||
</span>
|
||||
</div>
|
||||
<div className="row-span-1 col-span-1 bg-[#F8F9FA] p-4 rounded-4xl flex flex-col justify-center items-center gap-y-4 text-secondary group hover:shadow cursor-pointer hover:shadow-secondary/40">
|
||||
<span className="w-[100px] h-[100px] overflow-hidden object-cover">
|
||||
<img
|
||||
src={"/svg/prenatal-care.png"}
|
||||
className="object-cover"
|
||||
alt="angio"
|
||||
/>
|
||||
</span>
|
||||
<span className="text-blue-primary font-medium text-lg">
|
||||
بارداری
|
||||
</span>
|
||||
</div>
|
||||
<div className="row-span-1 col-span-1 bg-[#F8F9FA] p-4 rounded-4xl flex flex-col justify-center items-center gap-y-4 text-secondary group hover:shadow cursor-pointer hover:shadow-secondary/40">
|
||||
<span className="w-[100px] h-[100px] overflow-hidden object-cover">
|
||||
<img
|
||||
src={"/svg/dental-clinic.png"}
|
||||
className="object-cover"
|
||||
alt="angio"
|
||||
/>
|
||||
</span>
|
||||
<span className="text-blue-primary font-medium text-lg">
|
||||
دندانپزشکی
|
||||
</span>
|
||||
</div>
|
||||
<div className="row-span-1 col-span-1 bg-[#F8F9FA] p-4 rounded-4xl flex flex-col justify-center items-center gap-y-4 text-secondary group hover:shadow cursor-pointer hover:shadow-secondary/40">
|
||||
<span className="w-[100px] h-[100px] overflow-hidden object-cover">
|
||||
<img
|
||||
src={"/svg/ortopedi.png"}
|
||||
className="object-cover"
|
||||
alt="angio"
|
||||
/>
|
||||
</span>
|
||||
<span className="text-blue-primary font-medium text-lg">
|
||||
ارتوپدی
|
||||
</span>
|
||||
</div>
|
||||
<div className="row-span-1 col-span-1 bg-[#F8F9FA] p-4 rounded-4xl flex flex-col justify-center items-center gap-y-4 text-secondary group hover:shadow cursor-pointer hover:shadow-secondary/40">
|
||||
<span className="w-[100px] h-[100px] overflow-hidden object-cover">
|
||||
<img
|
||||
src={"/svg/digestion.png"}
|
||||
className="object-cover"
|
||||
alt="angio"
|
||||
/>
|
||||
</span>
|
||||
<span className="text-blue-primary font-medium text-lg">
|
||||
گوارش
|
||||
</span>
|
||||
</div>
|
||||
<div className="row-span-1 col-span-1 bg-[#F8F9FA] p-4 rounded-4xl flex flex-col justify-center items-center gap-y-4 text-secondary group hover:shadow cursor-pointer hover:shadow-secondary/40">
|
||||
<span className="w-[100px] h-[100px] overflow-hidden object-cover">
|
||||
<img
|
||||
src={"/svg/beauty.png"}
|
||||
className="object-cover"
|
||||
alt="angio"
|
||||
/>
|
||||
</span>
|
||||
<span className="text-blue-primary font-medium text-lg">
|
||||
زیبایی و جراحی پلاستیک
|
||||
</span>
|
||||
</div>
|
||||
<div className="row-span-1 col-span-1 bg-[#F8F9FA] p-4 rounded-4xl flex flex-col justify-center items-center gap-y-4 text-secondary group hover:shadow cursor-pointer hover:shadow-secondary/40">
|
||||
<span className="w-[100px] h-[100px] overflow-hidden object-cover">
|
||||
<img
|
||||
src={"/svg/ent.png"}
|
||||
className="object-cover"
|
||||
alt="angio"
|
||||
/>
|
||||
</span>
|
||||
<span className="text-blue-primary font-medium text-lg">
|
||||
گوش و حلق و بینی
|
||||
</span>
|
||||
</div>
|
||||
<div className="row-span-1 col-span-1 bg-[#F8F9FA] p-4 rounded-4xl flex flex-col justify-center items-center gap-y-4 text-secondary group hover:shadow cursor-pointer hover:shadow-secondary/40">
|
||||
<span className="w-[100px] h-[100px] overflow-hidden object-cover">
|
||||
<img
|
||||
src={"/svg/general.png"}
|
||||
className="object-cover"
|
||||
alt="angio"
|
||||
/>
|
||||
</span>
|
||||
<span className="text-blue-primary font-medium text-lg">
|
||||
داخلی
|
||||
</span>
|
||||
</div>
|
||||
<div className="row-span-1 col-span-4 flex flex-col justify-center items-center gap-y-4 text-secondary">
|
||||
<div className="flex items-center justify-center mt-10">
|
||||
<Link
|
||||
href="/reservation"
|
||||
className="!bg-secondary !text-white lg:!w-[250px] !w-full !h-[57px] !rounded-[15px] !text-[20px] !font-medium flex items-center justify-center"
|
||||
>
|
||||
مشاهده همه کلینیک ها
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section className="lg:mb-40 mb-10 lg:mt-10 mt-4 container ">
|
||||
<div className="bg-[#F8F9FA] rounded-4xl lg:px-40 lg:py-16 p-2">
|
||||
<h3 className="lg:text-[2.5em] 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>
|
||||
<div className="grid grid-cols-7 mt-20 gap-x-7">
|
||||
<div className="col-span-1 bg-white p-4 rounded-4xl flex items-center justify-center">
|
||||
<div className="w-[100px] h-[100px] relative">
|
||||
<Image src={"/bimeh-pasargad.png"} fill alt="بیمه پاسارگارد" />
|
||||
</div>
|
||||
</div>
|
||||
<div className="col-span-1 bg-white p-4 rounded-4xl flex items-center justify-center">
|
||||
<div className="w-[100px] h-[100px] relative">
|
||||
<Image src={"/bank-melat.png"} fill alt="بیمه پاسارگارد" />
|
||||
</div>
|
||||
</div>
|
||||
<div className="col-span-1 bg-white p-4 rounded-4xl flex items-center justify-center">
|
||||
<div className="w-[100px] h-[100px] relative">
|
||||
<Image src={"/bimeh-novin.png"} fill alt="بیمه پاسارگارد" />
|
||||
</div>
|
||||
</div>
|
||||
<div className="col-span-1 bg-white p-4 rounded-4xl flex items-center justify-center">
|
||||
<div className="w-[80px] h-[100px] relative">
|
||||
<Image src={"/bimeh-ma.png"} fill alt="بیمه پاسارگارد" />
|
||||
</div>
|
||||
</div>
|
||||
<div className="col-span-1 bg-white p-4 rounded-4xl flex items-center justify-center">
|
||||
<div className="w-[80px] h-[100px] relative">
|
||||
<Image src={"/bimeh-moallem.png"} fill alt="بیمه پاسارگارد" />
|
||||
</div>
|
||||
</div>
|
||||
<div className="col-span-1 bg-white p-4 rounded-4xl flex items-center justify-center">
|
||||
<div className="w-[80px] h-[100px] relative">
|
||||
<Image src={"/bimeh-saman.png"} fill alt="بیمه پاسارگارد" />
|
||||
</div>
|
||||
</div>
|
||||
<div className="col-span-1 bg-white p-4 rounded-4xl flex items-center justify-center">
|
||||
<div className="w-[80px] h-[100px] relative">
|
||||
<Image
|
||||
src={"/bimeh-tejarat-no.png"}
|
||||
fill
|
||||
alt="بیمه پاسارگارد"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="mt-20 flex items-center justify-center">
|
||||
<Link
|
||||
href="/reservation"
|
||||
className="!bg-secondary !text-white lg:!w-[250px] !w-full !h-[57px] !rounded-[15px] !text-[20px] !font-medium flex items-center justify-center"
|
||||
>
|
||||
مشاهده همه بیمه ها
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section className="lg:mb-40 mb-10 lg:mt-10 mt-4 container ">
|
||||
<div className="lg:py-16 p-2">
|
||||
<h3 className="mb-20 lg:text-[2.5em] 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>
|
||||
|
||||
<div className="grid grid-cols-4 h-[350px] gap-x-10">
|
||||
<div className="col-span-1 bg-[#f8f9fa] rounded-4xl overflow-hidden">
|
||||
<div className="relative h-[200px]">
|
||||
<Image
|
||||
src={"/1daad534bbd4cd30c325dde4746d01bcc3752e98.jpg"}
|
||||
alt=""
|
||||
fill
|
||||
objectFit="cover"
|
||||
/>
|
||||
</div>
|
||||
<div className="p-5 font-bold text-lg">
|
||||
مسابقه آشپزی سالم به مناسبت “هفته جهانی دیابت” در بیمارستان شمال
|
||||
</div>
|
||||
</div>
|
||||
<div className="col-span-1 bg-[#f8f9fa] rounded-4xl overflow-hidden">
|
||||
<div className="relative h-[200px]">
|
||||
<Image
|
||||
src={"/1daad534bbd4cd30c325dde4746d01bcc3752e98.jpg"}
|
||||
alt=""
|
||||
fill
|
||||
objectFit="cover"
|
||||
/>
|
||||
</div>
|
||||
<div className="p-5 font-bold text-lg">
|
||||
مسابقه آشپزی سالم به مناسبت “هفته جهانی دیابت” در بیمارستان شمال
|
||||
</div>
|
||||
</div>
|
||||
<div className="col-span-1 bg-[#f8f9fa] rounded-4xl overflow-hidden">
|
||||
<div className="relative h-[200px]">
|
||||
<Image
|
||||
src={"/1daad534bbd4cd30c325dde4746d01bcc3752e98.jpg"}
|
||||
alt=""
|
||||
fill
|
||||
objectFit="cover"
|
||||
/>
|
||||
</div>
|
||||
<div className="p-5 font-bold text-lg">
|
||||
مسابقه آشپزی سالم به مناسبت “هفته جهانی دیابت” در بیمارستان شمال
|
||||
</div>
|
||||
</div>
|
||||
<div className="col-span-1 bg-[#f8f9fa] rounded-4xl overflow-hidden">
|
||||
<div className="relative h-[200px]">
|
||||
<Image
|
||||
src={"/1daad534bbd4cd30c325dde4746d01bcc3752e98.jpg"}
|
||||
alt=""
|
||||
fill
|
||||
objectFit="cover"
|
||||
/>
|
||||
</div>
|
||||
<div className="p-5 font-bold text-lg">
|
||||
مسابقه آشپزی سالم به مناسبت “هفته جهانی دیابت” در بیمارستان شمال
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="mt-20 flex items-center justify-center">
|
||||
<Link
|
||||
href="/reservation"
|
||||
className="!bg-secondary !text-white lg:!w-[250px] !w-full !h-[57px] !rounded-[15px] !text-[20px] !font-medium flex items-center justify-center"
|
||||
>
|
||||
مشاهده همه اخبار
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section className="lg:mb-40 mb-10 lg:mt-10 mt-4 container ">
|
||||
<div className="grid grid-cols-12 h-[400px] gap-x-10">
|
||||
<div className="col-span-7 rounded-4xl bg-[#f8f9fa] lg:px-10 lg:py-16 p-2 h-full flex flex-col items-start justify-start gap-y-10">
|
||||
<h3 className="text-3xl font-bold">بیمارستان شمال آمل</h3>
|
||||
<p className="text-xl text-[#666]">
|
||||
مازندران ، آمل ، بلوار مدرس ، خیابان آفتاب 47 ، بیمارستان شمال آمل
|
||||
</p>
|
||||
<div className="flex items-center justify-start gap-x-6 text-[#333]">
|
||||
<svg
|
||||
stroke="currentColor"
|
||||
fill="currentColor"
|
||||
strokeWidth="0"
|
||||
viewBox="0 0 256 256"
|
||||
height="40px"
|
||||
width="40px"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path d="M144.27,45.93a8,8,0,0,1,9.8-5.66,86.22,86.22,0,0,1,61.66,61.66,8,8,0,0,1-5.66,9.8A8.23,8.23,0,0,1,208,112a8,8,0,0,1-7.73-5.94,70.35,70.35,0,0,0-50.33-50.33A8,8,0,0,1,144.27,45.93Zm-2.33,41.8c13.79,3.68,22.65,12.54,26.33,26.33A8,8,0,0,0,176,120a8.23,8.23,0,0,0,2.07-.27,8,8,0,0,0,5.66-9.8c-5.12-19.16-18.5-32.54-37.66-37.66a8,8,0,1,0-4.13,15.46Zm81.94,95.35A56.26,56.26,0,0,1,168,232C88.6,232,24,167.4,24,88A56.26,56.26,0,0,1,72.92,32.12a16,16,0,0,1,16.62,9.52l21.12,47.15,0,.12A16,16,0,0,1,109.39,104c-.18.27-.37.52-.57.77L88,129.45c7.49,15.22,23.41,31,38.83,38.51l24.34-20.71a8.12,8.12,0,0,1,.75-.56,16,16,0,0,1,15.17-1.4l.13.06,47.11,21.11A16,16,0,0,1,223.88,183.08Zm-15.88-2s-.07,0-.11,0h0l-47-21.05-24.35,20.71a8.44,8.44,0,0,1-.74.56,16,16,0,0,1-15.75,1.14c-18.73-9.05-37.4-27.58-46.46-46.11a16,16,0,0,1,1-15.7,6.13,6.13,0,0,1,.57-.77L96,95.15l-21-47a.61.61,0,0,1,0-.12A40.2,40.2,0,0,0,40,88,128.14,128.14,0,0,0,168,216,40.21,40.21,0,0,0,208,181.07Z"></path>
|
||||
</svg>
|
||||
<span dir="ltr" className="text-2xl">
|
||||
{toPersianNumber("011-4492")}
|
||||
</span>
|
||||
</div>
|
||||
<p className="text-xl text-[#666]">
|
||||
روزها و ساعات پذیرش: همه روزه از ساعت 08:00 الی 24:00
|
||||
</p>
|
||||
</div>
|
||||
<div className="col-span-5">
|
||||
<div className="relative w-full pb-[56.25%] rounded-4xl overflow-hidden h-full">
|
||||
<iframe
|
||||
src="https://www.google.com/maps/embed?pb=!1m14!1m8!1m3!1d6419.524849772638!2d52.347594!3d36.439127!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x3f8fbd6849bf386b%3A0x26cbc9441b00f373!2sShomal%20Hospital!5e0!3m2!1sen!2sus!4v1762836982418!5m2!1sen!2sus"
|
||||
// width="100%"
|
||||
style={{border: "0"}}
|
||||
allowFullScreen={false}
|
||||
loading="lazy"
|
||||
referrerPolicy="no-referrer-when-downgrade"
|
||||
className="absolute top-0 left-0 w-full h-full border-0"
|
||||
></iframe>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<footer className="lg:mt-10 mt-4 container bg-blue-primary ">
|
||||
<div className="lg:py-16 p-2"></div>
|
||||
</footer>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
BIN
src/app/favicon.ico
Normal file
|
After Width: | Height: | Size: 25 KiB |
108
src/app/globals.css
Normal file
@@ -0,0 +1,108 @@
|
||||
@import "tailwindcss";
|
||||
|
||||
@theme {
|
||||
--color-blue-primary: rgba(4, 61, 130, 1);
|
||||
--color-secondary: rgba(0, 192, 169, 1);
|
||||
--color-orange-primary: rgba(248, 138, 40, 1);
|
||||
--color-blue-secondary: rgba(95, 164, 248, 1);
|
||||
--color-title-primary: rgba(43, 43, 43, 1);
|
||||
--color-text-body: rgba(99, 99, 99, 1);
|
||||
--color-text-subtext: rgba(109, 109, 109, 1);
|
||||
|
||||
--color-subtitle-primary: rgba(128, 128, 128, 1);
|
||||
--color-subtitle-secondary: rgba(116, 128, 145, 1);
|
||||
--color-desc: rgba(89, 89, 89, 1);
|
||||
}
|
||||
|
||||
:root {
|
||||
--background: #ffffff;
|
||||
--foreground: #171717;
|
||||
}
|
||||
|
||||
@theme inline {
|
||||
--color-background: var(--background);
|
||||
--color-foreground: var(--foreground);
|
||||
--font-sans: var(--font-geist-sans);
|
||||
--font-mono: var(--font-geist-mono);
|
||||
}
|
||||
|
||||
@utility container {
|
||||
margin-inline: auto;
|
||||
padding-inline: 1rem;
|
||||
|
||||
@media (min-width: 768px) {
|
||||
padding-inline: 2rem;
|
||||
}
|
||||
|
||||
@media (min-width: 1024px) {
|
||||
padding-inline: 4rem;
|
||||
}
|
||||
}
|
||||
/*
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root {
|
||||
--background: #0a0a0a;
|
||||
--foreground: #ededed;
|
||||
}
|
||||
} */
|
||||
|
||||
body {
|
||||
/* background: var(--background); */
|
||||
/* color: var(--foreground); */
|
||||
font-family: VazirMatn, Arial, Helvetica, sans-serif;
|
||||
scroll-behavior: smooth;
|
||||
}
|
||||
@utility container {
|
||||
padding-inline: 60px;
|
||||
margin-inline: auto;
|
||||
}
|
||||
|
||||
/* swiper customization */
|
||||
|
||||
.swiper-pagination-bullets {
|
||||
background-color: rgba(255, 255, 255, 0.8);
|
||||
width: fit-content !important;
|
||||
margin: 0 auto !important;
|
||||
border-radius: 10px;
|
||||
padding: 4px;
|
||||
position: absolute;
|
||||
display: flex;
|
||||
border: 1px solid rgba(255, 255, 255, 0.9);
|
||||
backdrop-filter: blur(24px);
|
||||
-webkit-backdrop-filter: blur(24px);
|
||||
left: 50% !important; /* Move to the center along X-axis */
|
||||
transform: translate(-50%, -50%) !important;
|
||||
/* box-shadow: 1px 1px 1px 1px rgba(255, 255, 255, 0.7) !important; */
|
||||
}
|
||||
.swiper-button-next,
|
||||
.swiper-button-prev {
|
||||
background-color: rgba(255, 255, 255, 0.8) !important;
|
||||
border-radius: 50% !important;
|
||||
border: 1px solid rgba(255, 255, 255, 0.9) !important;
|
||||
backdrop-filter: blur(24px) !important;
|
||||
-webkit-backdrop-filter: blur(24px) !important;
|
||||
/* box-shadow: 1px 1px 1px 1px rgba(255, 255, 255, 0.8) !important; */
|
||||
}
|
||||
.swiper-button-next .swiper-navigation-icon,
|
||||
.swiper-button-prev .swiper-navigation-icon {
|
||||
width: 25px !important;
|
||||
height: 25px !important;
|
||||
color: var(--color-blue-primary) !important;
|
||||
}
|
||||
.swiper-pagination-bullets .swiper-pagination-bullet {
|
||||
background-color: black !important;
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
transition: all !important;
|
||||
transition-duration: 4s;
|
||||
}
|
||||
.swiper-pagination-bullets .swiper-pagination-bullet-active {
|
||||
background-color: var(--color-blue-primary) !important;
|
||||
width: 30px !important;
|
||||
border-radius: 12px !important;
|
||||
height: 10px !important;
|
||||
}
|
||||
|
||||
.custom-shadow {
|
||||
box-shadow: 0px 0px 30px 0px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
33
src/app/layout.tsx
Normal file
@@ -0,0 +1,33 @@
|
||||
import type {Metadata} from "next";
|
||||
import "./globals.css";
|
||||
import {FontVazir} from "@/config/font.config";
|
||||
import TopMenu from "@/ui/components/top-menu/TopMenu";
|
||||
export async function generateStaticParams() {
|
||||
return [{lang: "en"}, {lang: "fa"}];
|
||||
}
|
||||
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "Create Next App",
|
||||
description: "Generated by create next app",
|
||||
};
|
||||
|
||||
export default async function RootLayout({
|
||||
children,
|
||||
params,
|
||||
}: Readonly<{
|
||||
children: React.ReactNode;
|
||||
params: Promise<{lang: "en" | "fa"}>;
|
||||
}>) {
|
||||
return (
|
||||
<html lang={(await params).lang} dir="rtl">
|
||||
<body
|
||||
className={`${FontVazir.variable} antialiased`}
|
||||
style={{fontFamily: FontVazir.style.fontFamily}}
|
||||
>
|
||||
|
||||
{children}
|
||||
</body>
|
||||
</html>
|
||||
);
|
||||
}
|
||||
48
src/config/font.config.ts
Normal file
@@ -0,0 +1,48 @@
|
||||
import localFont from "next/font/local";
|
||||
|
||||
export const FontVazir = localFont({
|
||||
src: [
|
||||
{
|
||||
path: "../../public/fonts/vazir/Vazirmatn-Thin.woff2",
|
||||
weight: "100",
|
||||
style: "normal",
|
||||
},
|
||||
{
|
||||
path: "../../public/fonts/vazir/Vazirmatn-ExtraLight.woff2",
|
||||
weight: "200",
|
||||
style: "normal",
|
||||
},
|
||||
{
|
||||
path: "../../public/fonts/vazir/Vazirmatn-Light.woff2",
|
||||
weight: "300",
|
||||
style: "normal",
|
||||
},
|
||||
{
|
||||
path: "../../public/fonts/vazir/Vazirmatn-Regular.woff2",
|
||||
weight: "400",
|
||||
style: "normal",
|
||||
},
|
||||
{
|
||||
path: "../../public/fonts/vazir/Vazirmatn-Medium.woff2",
|
||||
weight: "500",
|
||||
style: "normal",
|
||||
},
|
||||
{
|
||||
path: "../../public/fonts/vazir/Vazirmatn-SemiBold.woff2",
|
||||
weight: "600",
|
||||
style: "normal",
|
||||
},
|
||||
{
|
||||
path: "../../public/fonts/vazir/Vazirmatn-Bold.woff2",
|
||||
weight: "700",
|
||||
style: "normal",
|
||||
},
|
||||
{
|
||||
path: "../../public/fonts/vazir/Vazirmatn-ExtraBold.woff2",
|
||||
weight: "800",
|
||||
style: "normal",
|
||||
},
|
||||
],
|
||||
variable: "--font-vazir", // اگر خواستی متغیر CSS بسازی برای Tailwind یا CSS مدول
|
||||
display: "swap", // بهترین گزینه برای نمایش فونت
|
||||
});
|
||||
14
src/constants/index.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
export const site_languages = [
|
||||
{
|
||||
label: "English",
|
||||
value: "en",
|
||||
},
|
||||
{
|
||||
label: "فارسی",
|
||||
value: "fa",
|
||||
},
|
||||
{
|
||||
label: "Arabic",
|
||||
value: "ar",
|
||||
},
|
||||
];
|
||||
278
src/constants/menu/menu.const.ts
Normal file
@@ -0,0 +1,278 @@
|
||||
export const DefaultMenuLinks: MenuItemsTypes[] = [
|
||||
{
|
||||
id: 1,
|
||||
label: {
|
||||
fa: "خانه",
|
||||
en: "Home",
|
||||
ar: "الأطباء",
|
||||
},
|
||||
href: "/",
|
||||
sub: [],
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
label: {
|
||||
fa: "درباره ما",
|
||||
en: "About Us",
|
||||
ar: "معلومات عنا",
|
||||
},
|
||||
href: "/",
|
||||
sub: [
|
||||
{
|
||||
id: 1,
|
||||
label: {
|
||||
fa: "معرفی بیمارستان",
|
||||
en: "Medical Services",
|
||||
ar: "الخدمات الطبية",
|
||||
},
|
||||
href: "/medical-services",
|
||||
sub: [],
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
label: {
|
||||
fa: "پیام ریاست بیمارستان",
|
||||
en: "Tourism & Transfer Services",
|
||||
ar: "خدمات النقل والسياحة",
|
||||
},
|
||||
href: "/transfer-services",
|
||||
sub: [],
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
label: {
|
||||
fa: "تیم ما",
|
||||
en: "Tourism & Transfer Services",
|
||||
ar: "خدمات النقل والسياحة",
|
||||
},
|
||||
href: "/transfer-services",
|
||||
sub: [],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
label: {
|
||||
fa: "پزشکان",
|
||||
en: "Doctors",
|
||||
ar: "الأطباء",
|
||||
},
|
||||
href: "/doctors",
|
||||
sub: [],
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
label: {
|
||||
fa: "بخش ها و خدمات",
|
||||
en: "Pricing",
|
||||
ar: "الأسعار",
|
||||
},
|
||||
href: "/pricing",
|
||||
sub: [
|
||||
{
|
||||
id: 1,
|
||||
label: {
|
||||
fa: "معرفی واحد های درمانی",
|
||||
en: "Medical Services",
|
||||
ar: "الخدمات الطبية",
|
||||
},
|
||||
href: "/medical-services",
|
||||
sub: [],
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
label: {
|
||||
fa: "معرفی پاراکلینیک ها",
|
||||
en: "Tourism & Transfer Services",
|
||||
ar: "خدمات النقل والسياحة",
|
||||
},
|
||||
href: "/transfer-services",
|
||||
sub: [],
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
label: {
|
||||
fa: "معرفی خدمات درمانی",
|
||||
en: "Tourism & Transfer Services",
|
||||
ar: "خدمات النقل والسياحة",
|
||||
},
|
||||
href: "/transfer-services",
|
||||
sub: [],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
id: 5,
|
||||
label: {
|
||||
fa: "راهنمای بیماران",
|
||||
en: "Our Services",
|
||||
ar: "خدماتنا",
|
||||
},
|
||||
href: "#",
|
||||
sub: [
|
||||
{
|
||||
id: 1,
|
||||
label: {
|
||||
fa: "راهنمای طبقات",
|
||||
en: "Medical Services",
|
||||
ar: "الخدمات الطبية",
|
||||
},
|
||||
href: "/medical-services",
|
||||
sub: [],
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
label: {
|
||||
fa: "منشور حقوق بیمار",
|
||||
en: "Tourism & Transfer Services",
|
||||
ar: "خدمات النقل والسياحة",
|
||||
},
|
||||
href: "/transfer-services",
|
||||
sub: [],
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
label: {
|
||||
fa: "راهنمای ملاقات",
|
||||
en: "Tourism & Transfer Services",
|
||||
ar: "خدمات النقل والسياحة",
|
||||
},
|
||||
href: "/transfer-services",
|
||||
sub: [],
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
label: {
|
||||
fa: "راهنمای دریافت گواهی ولادت",
|
||||
en: "Tourism & Transfer Services",
|
||||
ar: "خدمات النقل والسياحة",
|
||||
},
|
||||
href: "/transfer-services",
|
||||
sub: [],
|
||||
},
|
||||
{
|
||||
id: 5,
|
||||
label: {
|
||||
fa: "راهنمای فرآیند گواهی فوت",
|
||||
en: "Tourism & Transfer Services",
|
||||
ar: "خدمات النقل والسياحة",
|
||||
},
|
||||
href: "/transfer-services",
|
||||
sub: [],
|
||||
},
|
||||
{
|
||||
id: 6,
|
||||
label: {
|
||||
fa: "راهنمای جامع بیمار و همراه",
|
||||
en: "Tourism & Transfer Services",
|
||||
ar: "خدمات النقل والسياحة",
|
||||
},
|
||||
href: "/transfer-services",
|
||||
sub: [],
|
||||
},
|
||||
{
|
||||
id: 7,
|
||||
label: {
|
||||
fa: "بیمه های طرف قرارداد",
|
||||
en: "Tourism & Transfer Services",
|
||||
ar: "خدمات النقل والسياحة",
|
||||
},
|
||||
href: "/transfer-services",
|
||||
sub: [],
|
||||
},
|
||||
{
|
||||
id: 8,
|
||||
label: {
|
||||
fa: "راهنمای پذیرش و ترخیص",
|
||||
en: "Tourism & Transfer Services",
|
||||
ar: "خدمات النقل والسياحة",
|
||||
},
|
||||
href: "/transfer-services",
|
||||
sub: [],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
id: 6,
|
||||
label: {
|
||||
fa: "دپارتمان آموزش",
|
||||
en: "Patient Rights Charter",
|
||||
ar: "ميثاق حقوق المريض",
|
||||
},
|
||||
href: "/patient-rights-charter",
|
||||
sub: [
|
||||
{
|
||||
id: 1,
|
||||
label: {
|
||||
fa: "مقالات آموزشی",
|
||||
en: "Tourism & Transfer Services",
|
||||
ar: "خدمات النقل والسياحة",
|
||||
},
|
||||
href: "/transfer-services",
|
||||
sub: [],
|
||||
},
|
||||
|
||||
{
|
||||
id: 2,
|
||||
label: {
|
||||
fa: "پمفلت های آموزشی بیماری ها",
|
||||
en: "Tourism & Transfer Services",
|
||||
ar: "خدمات النقل والسياحة",
|
||||
},
|
||||
href: "/transfer-services",
|
||||
sub: [],
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
label: {
|
||||
fa: "آموزش مادر و نوزاد",
|
||||
en: "Tourism & Transfer Services",
|
||||
ar: "خدمات النقل والسياحة",
|
||||
},
|
||||
href: "/transfer-services",
|
||||
sub: [],
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
label: {
|
||||
fa: "اخبار",
|
||||
en: "Tourism & Transfer Services",
|
||||
ar: "خدمات النقل والسياحة",
|
||||
},
|
||||
href: "/transfer-services",
|
||||
sub: [],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
id: 7,
|
||||
label: {
|
||||
fa: "پرتال پرسنلی",
|
||||
en: "Contact Us",
|
||||
ar: "اتصل بنا",
|
||||
},
|
||||
href: "/contact-us",
|
||||
sub: [],
|
||||
},
|
||||
{
|
||||
id: 8,
|
||||
label: {
|
||||
fa: "بیماران بین الملل",
|
||||
en: "Contact Us",
|
||||
ar: "اتصل بنا",
|
||||
},
|
||||
href: "/contact-us",
|
||||
sub: [],
|
||||
},
|
||||
|
||||
{
|
||||
id: 9,
|
||||
label: {
|
||||
fa: "تماس با ما",
|
||||
en: "Contact Us",
|
||||
ar: "اتصل بنا",
|
||||
},
|
||||
href: "/contact-us",
|
||||
sub: [],
|
||||
},
|
||||
];
|
||||
12
src/data/doctors.json
Normal file
@@ -0,0 +1,12 @@
|
||||
[
|
||||
{
|
||||
"id": 1,
|
||||
"fullname": "اصغر محمدی",
|
||||
"expertise": "متخصص قلب"
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"fullname": "علی احمدی",
|
||||
"expertise": "متخصص گوش و حلق و بینی"
|
||||
}
|
||||
]
|
||||
12
src/data/faq.json
Normal file
@@ -0,0 +1,12 @@
|
||||
[
|
||||
{
|
||||
"id": 1,
|
||||
"question": "بیمه های طرف قرارداد بیمارستان و درمانگاه کدامند ؟",
|
||||
"answer": "لیست بیمه های طرف قرارداد را میتوانید در لینک زیر مشاهده نمائید:\n\nhttps://shomalhospital.ir/departments/accepted-insurance/"
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"question": "بیمه تکمیلی دارم ، بیمه من چند درصد از هزینه هایم را پرداخت می کند؟",
|
||||
"answer": "لیست بیمه های طرف قرارداد را میتوانید در لینک زیر مشاهده نمائید:\n\nhttps://shomalhospital.ir/departments/accepted-insurance/"
|
||||
}
|
||||
]
|
||||
32
src/middleware.js
Normal file
@@ -0,0 +1,32 @@
|
||||
import {NextResponse} from "next/server";
|
||||
|
||||
const locales = ["en", "fa","ar"];
|
||||
|
||||
export function middleware(request) {
|
||||
const {pathname} = request.nextUrl;
|
||||
|
||||
if (
|
||||
pathname.startsWith("/_next") ||
|
||||
pathname.startsWith("/favicon.ico") ||
|
||||
pathname.startsWith("/robots.txt") ||
|
||||
pathname.match(/^\/.*\.(png|jpg|jpeg|gif|svg|webp|ico)$/)
|
||||
) {
|
||||
return NextResponse.next();
|
||||
}
|
||||
|
||||
const pathnameHasLocale = locales.some(
|
||||
(locale) => pathname.startsWith(`/${locale}/`) || pathname === `/${locale}`
|
||||
);
|
||||
if (pathnameHasLocale) return NextResponse.next();
|
||||
|
||||
const locale = "fa";
|
||||
const url = request.nextUrl.clone();
|
||||
url.pathname = `/${locale}${pathname}`;
|
||||
return NextResponse.redirect(url);
|
||||
}
|
||||
|
||||
// export const config = {
|
||||
// matcher: [
|
||||
// "/((?!_next|favicon.ico|robots.txt|.*\\.(png|jpg|jpeg|gif|svg|webp|ico)).*)",
|
||||
// ],
|
||||
// };
|
||||
8
src/types/global/menu.type.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
interface MenuItemsTypes {
|
||||
href: string;
|
||||
label: {
|
||||
[a:string]:string
|
||||
};
|
||||
id: number;
|
||||
sub: MenuItemsTypes[] | [];
|
||||
}
|
||||
6
src/types/icons/icons.type.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
export interface IconsProps {
|
||||
color?: string;
|
||||
size?: string;
|
||||
width?: string;
|
||||
height?: string;
|
||||
}
|
||||
65
src/ui/LanguageChanger.tsx
Normal file
@@ -0,0 +1,65 @@
|
||||
"use client";
|
||||
import {usePathname, useRouter} from "next/navigation";
|
||||
import React from "react";
|
||||
|
||||
export default function LanguagesChanger({lang}: {lang: "fa" | "en" | "ar"}) {
|
||||
const pathname = usePathname();
|
||||
const router = useRouter();
|
||||
const removeLangPrefix = (path: string) => {
|
||||
const regex = /^\/(fa|en|ar)(\/|$)/;
|
||||
return path.replace(regex, "/");
|
||||
};
|
||||
|
||||
const handleChangeLanguage = (lang: "fa" | "en" | "ar") => {
|
||||
const cleanPath = removeLangPrefix(pathname); // مسیر بدون prefix
|
||||
const newPath = `/${lang}${cleanPath}`;
|
||||
router.push(newPath);
|
||||
};
|
||||
return (
|
||||
<>
|
||||
<div className="md:text-white text-xs flex flex-wrap items-center md:justify-end justify-center gap-x-4 border-[1px] md:border-white md:px-4 py-1.5 rounded-full md:mt-0 mt-4">
|
||||
<span>
|
||||
<button
|
||||
type="button"
|
||||
onClick={() => handleChangeLanguage("en")}
|
||||
className="hover:text-secondary cursor-pointer"
|
||||
>
|
||||
EN
|
||||
</button>
|
||||
</span>
|
||||
<span> | </span>
|
||||
<span>
|
||||
<button
|
||||
type="button"
|
||||
onClick={() => handleChangeLanguage("fa")}
|
||||
className="hover:text-secondary cursor-pointer"
|
||||
>
|
||||
FA
|
||||
</button>
|
||||
</span>
|
||||
<span> | </span>
|
||||
<span>
|
||||
<button
|
||||
type="button"
|
||||
onClick={() => handleChangeLanguage("ar")}
|
||||
className="hover:text-secondary cursor-pointer"
|
||||
>
|
||||
AR
|
||||
</button>
|
||||
</span>
|
||||
<svg
|
||||
width="15"
|
||||
height="15"
|
||||
viewBox="0 0 25 25"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path
|
||||
d="M12.5 25C10.7917 25 9.17708 24.6719 7.65625 24.0156C6.13542 23.3594 4.80729 22.4635 3.67188 21.3281C2.53646 20.1927 1.64063 18.8646 0.984375 17.3438C0.328125 15.8229 0 14.2083 0 12.5C0 10.7708 0.328125 9.15104 0.984375 7.64063C1.64063 6.13021 2.53646 4.80729 3.67188 3.67188C4.80729 2.53646 6.13542 1.64063 7.65625 0.984375C9.17708 0.328125 10.7917 0 12.5 0C14.2292 0 15.849 0.328125 17.3594 0.984375C18.8698 1.64063 20.1927 2.53646 21.3281 3.67188C22.4635 4.80729 23.3594 6.13021 24.0156 7.64063C24.6719 9.15104 25 10.7708 25 12.5C25 14.2083 24.6719 15.8229 24.0156 17.3438C23.3594 18.8646 22.4635 20.1927 21.3281 21.3281C20.1927 22.4635 18.8698 23.3594 17.3594 24.0156C15.849 24.6719 14.2292 25 12.5 25ZM12.5 22.4375C13.0417 21.6875 13.5104 20.9063 13.9063 20.0938C14.3021 19.2813 14.625 18.4167 14.875 17.5H10.125C10.375 18.4167 10.6979 19.2813 11.0938 20.0938C11.4896 20.9063 11.9583 21.6875 12.5 22.4375ZM9.25 21.9375C8.875 21.25 8.54688 20.5365 8.26563 19.7969C7.98438 19.0573 7.75 18.2917 7.5625 17.5H3.875C4.47917 18.5417 5.23438 19.4479 6.14063 20.2188C7.04688 20.9896 8.08333 21.5625 9.25 21.9375ZM15.75 21.9375C16.9167 21.5625 17.9531 20.9896 18.8594 20.2188C19.7656 19.4479 20.5208 18.5417 21.125 17.5H17.4375C17.25 18.2917 17.0156 19.0573 16.7344 19.7969C16.4531 20.5365 16.125 21.25 15.75 21.9375ZM2.8125 15H7.0625C7 14.5833 6.95313 14.1719 6.92188 13.7656C6.89063 13.3594 6.875 12.9375 6.875 12.5C6.875 12.0625 6.89063 11.6406 6.92188 11.2344C6.95313 10.8281 7 10.4167 7.0625 10H2.8125C2.70833 10.4167 2.63021 10.8281 2.57813 11.2344C2.52604 11.6406 2.5 12.0625 2.5 12.5C2.5 12.9375 2.52604 13.3594 2.57813 13.7656C2.63021 14.1719 2.70833 14.5833 2.8125 15ZM9.5625 15H15.4375C15.5 14.5833 15.5469 14.1719 15.5781 13.7656C15.6094 13.3594 15.625 12.9375 15.625 12.5C15.625 12.0625 15.6094 11.6406 15.5781 11.2344C15.5469 10.8281 15.5 10.4167 15.4375 10H9.5625C9.5 10.4167 9.45313 10.8281 9.42188 11.2344C9.39063 11.6406 9.375 12.0625 9.375 12.5C9.375 12.9375 9.39063 13.3594 9.42188 13.7656C9.45313 14.1719 9.5 14.5833 9.5625 15ZM17.9375 15H22.1875C22.2917 14.5833 22.3698 14.1719 22.4219 13.7656C22.474 13.3594 22.5 12.9375 22.5 12.5C22.5 12.0625 22.474 11.6406 22.4219 11.2344C22.3698 10.8281 22.2917 10.4167 22.1875 10H17.9375C18 10.4167 18.0469 10.8281 18.0781 11.2344C18.1094 11.6406 18.125 12.0625 18.125 12.5C18.125 12.9375 18.1094 13.3594 18.0781 13.7656C18.0469 14.1719 18 14.5833 17.9375 15ZM17.4375 7.5H21.125C20.5208 6.45833 19.7656 5.55208 18.8594 4.78125C17.9531 4.01042 16.9167 3.4375 15.75 3.0625C16.125 3.75 16.4531 4.46354 16.7344 5.20313C17.0156 5.94271 17.25 6.70833 17.4375 7.5ZM10.125 7.5H14.875C14.625 6.58333 14.3021 5.71875 13.9063 4.90625C13.5104 4.09375 13.0417 3.3125 12.5 2.5625C11.9583 3.3125 11.4896 4.09375 11.0938 4.90625C10.6979 5.71875 10.375 6.58333 10.125 7.5ZM3.875 7.5H7.5625C7.75 6.70833 7.98438 5.94271 8.26563 5.20313C8.54688 4.46354 8.875 3.75 9.25 3.0625C8.08333 3.4375 7.04688 4.01042 6.14063 4.78125C5.23438 5.55208 4.47917 6.45833 3.875 7.5Z"
|
||||
fill="#E8EAED"
|
||||
/>
|
||||
</svg>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
}
|
||||
62
src/ui/Menu.tsx
Normal file
@@ -0,0 +1,62 @@
|
||||
import React from "react";
|
||||
import ChevronLeftSvg from "./components/icons/ChevronLeftSvg";
|
||||
import Link from "next/link";
|
||||
|
||||
interface MenuProps {
|
||||
lang: string;
|
||||
direction?: "horizontal" | "vertical";
|
||||
items: MenuItemsTypes[];
|
||||
}
|
||||
export default function Menu({
|
||||
lang,
|
||||
direction = "horizontal",
|
||||
items,
|
||||
}: MenuProps) {
|
||||
return (
|
||||
<nav className="flex items-center h-full justify-start">
|
||||
<ul
|
||||
className={`h-full text-primary flex lg:text-base relative items-center text-blue-primary ${
|
||||
direction === "horizontal" ? "flex-row gap-x-6" : "flex-col gap-y-4"
|
||||
}`}
|
||||
>
|
||||
{items.map((link) => (
|
||||
<li
|
||||
key={link.id}
|
||||
className="group cursor-pointer hover:text-blue-secondary flex items-center text-menu-colors relative !h-full after:hidden hover:after:inline-block after:w-full after:h-1 after:bg-blue-secondary after:absolute after:bottom-0 after:left-0 after:rounded-t-xl"
|
||||
>
|
||||
<span className="flex items-center gap-x-2 !h-full ">
|
||||
<Link href={""} className={`font-medium text-sm transition-all `}>
|
||||
{link.label[lang]}
|
||||
</Link>
|
||||
|
||||
{link.sub.length > 0 ? (
|
||||
<span className="-rotate-90 group-hover:rotate-90 transition-all duration-300">
|
||||
<ChevronLeftSvg size="10" />
|
||||
</span>
|
||||
) : (
|
||||
""
|
||||
)}
|
||||
</span>
|
||||
{link.sub.length > 0 && (
|
||||
<ul className="hidden group-hover:block absolute top-full z-20 bg-white w-64 shadow-inner space-y-5 p-3 rounded-b-xl">
|
||||
{link.sub.map((submenu) => (
|
||||
<li
|
||||
key={submenu.id}
|
||||
className="w-full text-blue-primary hover:font-medium p-1 px-3"
|
||||
>
|
||||
<Link
|
||||
href={""}
|
||||
className="text-sm font-medium text-black hover:text-blue-secondary transition-all"
|
||||
>
|
||||
{submenu.label[lang]}
|
||||
</Link>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
)}
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</nav>
|
||||
);
|
||||
}
|
||||
68
src/ui/PageSlider.tsx
Normal file
@@ -0,0 +1,68 @@
|
||||
"use client";
|
||||
import Image from "next/image";
|
||||
import Link from "next/link";
|
||||
import React from "react";
|
||||
import {Autoplay, Navigation, Pagination} from "swiper/modules";
|
||||
import {Swiper, SwiperSlide} from "swiper/react";
|
||||
import "swiper/swiper.css";
|
||||
export default function PageSlider({lang}: {lang: string}) {
|
||||
return (
|
||||
<>
|
||||
<Swiper
|
||||
loop={true}
|
||||
autoplay={{
|
||||
delay: 2500,
|
||||
disableOnInteraction: false,
|
||||
}}
|
||||
navigation={false}
|
||||
modules={[Pagination, Navigation, Autoplay]}
|
||||
className="lg:h-[75vh] h-[460px] relative"
|
||||
>
|
||||
{/* <div
|
||||
className={`container absolute z-10 top-0 w-full h-full flex items-end ${
|
||||
lang === "en" ? "bg-linear-to-r" : "bg-linear-to-l"
|
||||
} from-white/70 to-transparent`}
|
||||
>
|
||||
<div className="py-20 space-y-2">
|
||||
<h1 className="text-[40px] text-blue-primary font-semibold"></h1>
|
||||
<p className="text-blue-primary lg:text-3xl text-lg font-medium"></p>
|
||||
<p className="text-blue-primary lg:text-xl text-md font-medium"></p>
|
||||
</div>
|
||||
</div> */}
|
||||
<div className="container absolute z-10 bottom-0 bg-black/40 w-full h-full " >
|
||||
<div className="p-20 absolute bottom-0">
|
||||
<p className="text-4xl text-white mb-6 font-extrabold">هستیم برای سلامتی شما ...</p>
|
||||
<Link
|
||||
href="/reservation"
|
||||
className="!bg-secondary !text-white lg:!w-[346px] !w-full !h-[57px] !rounded-[15px] !text-[24px] !font-medium flex items-center justify-center"
|
||||
>
|
||||
دریافت نوبت آنلاین
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
<SwiperSlide className="h-full w-full relative">
|
||||
<Image
|
||||
loading="lazy"
|
||||
src={"/1daad534bbd4cd30c325dde4746d01bcc3752e98.jpg"}
|
||||
fill
|
||||
style={{
|
||||
color: "transparent",
|
||||
objectFit: "cover",
|
||||
objectPosition: "center",
|
||||
}}
|
||||
alt=""
|
||||
/>
|
||||
</SwiperSlide>
|
||||
{/* <SwiperSlide>
|
||||
<Image
|
||||
loading="lazy"
|
||||
src={"/header-slider-1.webp"}
|
||||
fill
|
||||
style={{color: "transparent", objectFit: "cover"}}
|
||||
alt=""
|
||||
/>
|
||||
</SwiperSlide> */}
|
||||
</Swiper>
|
||||
</>
|
||||
);
|
||||
}
|
||||
115
src/ui/TopMenu.tsx
Normal file
@@ -0,0 +1,115 @@
|
||||
"use client";
|
||||
import React, {useEffect, useState} from "react";
|
||||
import {DefaultMenuLinks} from "@/constants/menu/menu.const";
|
||||
import Link from "next/link";
|
||||
import Image from "next/image";
|
||||
import Menu from "./Menu";
|
||||
import ReservationButton from "./components/menu/ReservationButton";
|
||||
import {toPersianNumber} from "@/utils/functions";
|
||||
|
||||
export default function TopMenu({lang}: {lang: string}) {
|
||||
const [isSticky, setIsSticky] = useState(false);
|
||||
|
||||
useEffect(() => {
|
||||
if (window.innerWidth < 1024) return;
|
||||
|
||||
const handleScroll = () => {
|
||||
if (window.scrollY > 50) {
|
||||
setIsSticky(true);
|
||||
} else {
|
||||
setIsSticky(false);
|
||||
}
|
||||
};
|
||||
|
||||
window.addEventListener("scroll", handleScroll);
|
||||
return () => window.removeEventListener("scroll", handleScroll);
|
||||
}, []);
|
||||
return (
|
||||
<div className="w-full shadow">
|
||||
<div
|
||||
className={`w-full z-30 transition-all duration-300 md:px-10 px-4 flex lg:justify-around justify-between items-center
|
||||
${
|
||||
isSticky
|
||||
? "h-[80px] lg:fixed top-0 custom-shadow backdrop-blur-3xl bg-white/90"
|
||||
: "lg:h-[120px] h-[60px] bg-white relative"
|
||||
}`}
|
||||
// className="bg-white container sticky top-0 z-30"
|
||||
>
|
||||
{/* <div className="top-0 absolute h-[40px] bg-radial bg-secondary/30 backdrop-blur-2xl w-full">
|
||||
|
||||
</div> */}
|
||||
<div className="lg:w-[150px] flex gap-x-3 transition-all duration-300 items-center ">
|
||||
{/* <Link href={"/"} className="flex items-center gap-x-2">
|
||||
<div
|
||||
className={`relative ${
|
||||
isSticky
|
||||
? " h-[70px] w-[70px]"
|
||||
: "lg:h-[90px] h-[50px] lg:w-[97px] w-[40px]"
|
||||
}`}
|
||||
>
|
||||
<Image
|
||||
loading="lazy"
|
||||
src="/shomalhospital-ipd-logo.png"
|
||||
fill
|
||||
alt="shomal hospital"
|
||||
style={{color: "transparent", fill: "red", objectFit: "fill"}}
|
||||
/>
|
||||
</div>
|
||||
</Link> */}
|
||||
<Link href={"/"} className="flex items-center gap-x-2">
|
||||
<div
|
||||
className={`relative ${
|
||||
isSticky
|
||||
? " h-[70px] w-[70px]"
|
||||
: "lg:h-[90px] h-[50px] lg:w-[97px] w-[40px]"
|
||||
}`}
|
||||
>
|
||||
<Image
|
||||
loading="lazy"
|
||||
src={
|
||||
lang === "en" ? "/main-logo-blue.png" : "/main-logo-blue.png"
|
||||
}
|
||||
fill
|
||||
alt="shomal hospital"
|
||||
style={{color: "transparent", fill: "red", objectFit: "fill"}}
|
||||
/>
|
||||
</div>
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
{/* <MobileMenu lang={lang} /> */}
|
||||
<div className="lg:grid hidden grid-cols-12 gap-x-1 w-full h-full items-center">
|
||||
<div className="col-span-9 flex items-center justify-start w-full h-full">
|
||||
<Menu lang={lang} direction="horizontal" items={DefaultMenuLinks} />
|
||||
</div>
|
||||
<div className="col-span-3 flex items-center justify-end gap-x-5">
|
||||
<ReservationButton isSticky={isSticky} />
|
||||
<Link
|
||||
href={"/contact-us#request_accept"}
|
||||
dir="ltr"
|
||||
className={`bg-blue-primary text-white rounded-full ${
|
||||
isSticky ? "py-3 px-4" : "py-3 px-6"
|
||||
} text-xl font-semibold shadow-lg flex flex-col justify-center items-center gap-y-1 whitespace-nowrap shadow-neutral-300 hover:shadow-none transition-all duration-200`}
|
||||
>
|
||||
<div className="flex items-center gap-x-3">
|
||||
<svg
|
||||
stroke="currentColor"
|
||||
fill="currentColor"
|
||||
strokeWidth="0"
|
||||
viewBox="0 0 256 256"
|
||||
height="30px"
|
||||
width="30px"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path d="M144.27,45.93a8,8,0,0,1,9.8-5.66,86.22,86.22,0,0,1,61.66,61.66,8,8,0,0,1-5.66,9.8A8.23,8.23,0,0,1,208,112a8,8,0,0,1-7.73-5.94,70.35,70.35,0,0,0-50.33-50.33A8,8,0,0,1,144.27,45.93Zm-2.33,41.8c13.79,3.68,22.65,12.54,26.33,26.33A8,8,0,0,0,176,120a8.23,8.23,0,0,0,2.07-.27,8,8,0,0,0,5.66-9.8c-5.12-19.16-18.5-32.54-37.66-37.66a8,8,0,1,0-4.13,15.46Zm81.94,95.35A56.26,56.26,0,0,1,168,232C88.6,232,24,167.4,24,88A56.26,56.26,0,0,1,72.92,32.12a16,16,0,0,1,16.62,9.52l21.12,47.15,0,.12A16,16,0,0,1,109.39,104c-.18.27-.37.52-.57.77L88,129.45c7.49,15.22,23.41,31,38.83,38.51l24.34-20.71a8.12,8.12,0,0,1,.75-.56,16,16,0,0,1,15.17-1.4l.13.06,47.11,21.11A16,16,0,0,1,223.88,183.08Zm-15.88-2s-.07,0-.11,0h0l-47-21.05-24.35,20.71a8.44,8.44,0,0,1-.74.56,16,16,0,0,1-15.75,1.14c-18.73-9.05-37.4-27.58-46.46-46.11a16,16,0,0,1,1-15.7,6.13,6.13,0,0,1,.57-.77L96,95.15l-21-47a.61.61,0,0,1,0-.12A40.2,40.2,0,0,0,40,88,128.14,128.14,0,0,0,168,216,40.21,40.21,0,0,0,208,181.07Z"></path>
|
||||
</svg>
|
||||
{toPersianNumber("011-4492")}
|
||||
</div>
|
||||
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
184
src/ui/components/InsurancesSlider.tsx
Normal file
@@ -0,0 +1,184 @@
|
||||
"use client";
|
||||
import Image from "next/image";
|
||||
import Link from "next/link";
|
||||
import React from "react";
|
||||
import {Autoplay, Navigation} from "swiper/modules";
|
||||
import {Swiper, SwiperSlide} from "swiper/react";
|
||||
import "swiper/css";
|
||||
import "swiper/css/navigation";
|
||||
export default function InsurancesSlider() {
|
||||
return (
|
||||
<>
|
||||
<Swiper
|
||||
loop={true}
|
||||
rewind={true}
|
||||
autoplay={{
|
||||
delay: 2500,
|
||||
disableOnInteraction: false,
|
||||
}}
|
||||
navigation={false}
|
||||
slidesPerView={8}
|
||||
centeredSlides={true}
|
||||
centeredSlidesBounds={true}
|
||||
centerInsufficientSlides={true}
|
||||
spaceBetween={40}
|
||||
modules={[Navigation, Autoplay]}
|
||||
onSlideChange={() => console.log("slide change")}
|
||||
onSwiper={(swiper) => console.log(swiper)}
|
||||
className="h-[120px]"
|
||||
>
|
||||
<SwiperSlide className="h-full !w-[120px] rounded-xl overflow-hidden ">
|
||||
<Link href={"/"} className="h-full w-full ">
|
||||
<div className="relative h-full w-full">
|
||||
<Image
|
||||
loading="lazy"
|
||||
src={"/bank-melat.png"}
|
||||
fill
|
||||
style={{color: "transparent", objectFit: "fill"}}
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
</Link>
|
||||
</SwiperSlide>
|
||||
<SwiperSlide className="h-full !w-[120px] rounded-xl overflow-hidden">
|
||||
<Link href={"/"} className="h-full w-full ">
|
||||
<div className="relative h-full w-full">
|
||||
<Image
|
||||
loading="lazy"
|
||||
src={"/bimeh-ma.png"}
|
||||
fill
|
||||
style={{color: "transparent", objectFit: "fill"}}
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
</Link>
|
||||
</SwiperSlide>
|
||||
<SwiperSlide className="h-full !w-[120px] rounded-xl overflow-hidden">
|
||||
<Link href={"/"} className="h-full w-full ">
|
||||
<div className="relative h-full w-full">
|
||||
<Image
|
||||
loading="lazy"
|
||||
src={"/bimeh-moallem.png"}
|
||||
fill
|
||||
style={{color: "transparent", objectFit: "fill"}}
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
</Link>
|
||||
</SwiperSlide>
|
||||
<SwiperSlide className="h-full !w-[120px] rounded-xl overflow-hidden">
|
||||
<Link href={"/"} className="h-full w-full ">
|
||||
<div className="relative h-full w-full">
|
||||
<Image
|
||||
loading="lazy"
|
||||
src={"/bimeh-novin.png"}
|
||||
fill
|
||||
style={{color: "transparent", objectFit: "fill"}}
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
</Link>
|
||||
</SwiperSlide>
|
||||
<SwiperSlide className="h-full !w-[120px] rounded-xl overflow-hidden">
|
||||
<Link href={"/"} className="h-full w-full ">
|
||||
<div className="relative h-full w-full">
|
||||
<Image
|
||||
loading="lazy"
|
||||
src={"/bimeh-pasargad.png"}
|
||||
fill
|
||||
style={{color: "transparent", objectFit: "fill"}}
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
</Link>
|
||||
</SwiperSlide>
|
||||
<SwiperSlide className="h-full !w-[120px] rounded-xl overflow-hidden">
|
||||
<Link href={"/"} className="h-full w-full ">
|
||||
<div className="relative h-full w-full">
|
||||
<Image
|
||||
loading="lazy"
|
||||
src={"/bimeh-saman.png"}
|
||||
fill
|
||||
style={{color: "transparent", objectFit: "fill"}}
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
</Link>
|
||||
</SwiperSlide>
|
||||
<SwiperSlide className="h-full !w-[120px] rounded-xl overflow-hidden">
|
||||
<Link href={"/"} className="h-full w-full ">
|
||||
<div className="relative h-full w-full">
|
||||
<Image
|
||||
loading="lazy"
|
||||
src={"/bimeh-tejarat-no.png"}
|
||||
fill
|
||||
style={{color: "transparent", objectFit: "fill"}}
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
</Link>
|
||||
</SwiperSlide>
|
||||
{/* <SwiperSlide className="h-full w-full rounded-xl overflow-hidden">
|
||||
<Link href={"/"} className="h-full w-full ">
|
||||
<div className="relative h-full w-full">
|
||||
<Image loading="lazy"
|
||||
src={"/bank-melat.png"}
|
||||
fill
|
||||
style={{color: "transparent", objectFit: "fill"}}
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
</Link>
|
||||
</SwiperSlide>
|
||||
<SwiperSlide className="h-full w-full rounded-xl overflow-hidden">
|
||||
<Link href={"/"} className="h-full w-full ">
|
||||
<div className="relative h-full w-full">
|
||||
<Image loading="lazy"
|
||||
src={"/bank-melat.png"}
|
||||
fill
|
||||
style={{color: "transparent", objectFit: "fill"}}
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
</Link>
|
||||
</SwiperSlide>
|
||||
<SwiperSlide className="h-full w-full rounded-xl overflow-hidden">
|
||||
<Link href={"/"} className="h-full w-full ">
|
||||
<div className="relative h-full w-full">
|
||||
<Image loading="lazy"
|
||||
src={"/bank-melat.png"}
|
||||
fill
|
||||
style={{color: "transparent", objectFit: "fill"}}
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
</Link>
|
||||
</SwiperSlide>
|
||||
<SwiperSlide className="h-full w-full rounded-xl overflow-hidden">
|
||||
<Link href={"/"} className="h-full w-full ">
|
||||
<div className="relative h-full w-full">
|
||||
<Image loading="lazy"
|
||||
src={"/bank-melat.png"}
|
||||
fill
|
||||
style={{color: "transparent", objectFit: "fill"}}
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
</Link>
|
||||
</SwiperSlide>
|
||||
<SwiperSlide className="h-full w-full rounded-xl overflow-hidden">
|
||||
<Link href={"/"} className="h-full w-full ">
|
||||
<div className="relative h-full w-full">
|
||||
<Image loading="lazy"
|
||||
src={"/bank-melat.png"}
|
||||
fill
|
||||
style={{color: "transparent", objectFit: "fill"}}
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
</Link>
|
||||
</SwiperSlide> */}
|
||||
</Swiper>
|
||||
</>
|
||||
);
|
||||
}
|
||||
10
src/ui/components/global/Button.tsx
Normal file
@@ -0,0 +1,10 @@
|
||||
import React from "react";
|
||||
interface ButtonProps {
|
||||
label: string;
|
||||
onClick: (e: React.MouseEvent<HTMLButtonElement>) => void;
|
||||
}
|
||||
export default function Button({label,onClick}: ButtonProps) {
|
||||
return (
|
||||
<button onClick={onClick} className="font-medium text-white bg-blue-primary rounded-xl flex items-center gap-x-4 px-2 py-1">{label}</button>
|
||||
);
|
||||
}
|
||||
14
src/ui/components/global/CustomLink.tsx
Normal file
@@ -0,0 +1,14 @@
|
||||
import Link from "next/link";
|
||||
import React from "react";
|
||||
interface CustomLinkProps {
|
||||
href: string;
|
||||
label: string;
|
||||
className?: string;
|
||||
}
|
||||
export default function CustomLink({href, label, className}: CustomLinkProps) {
|
||||
return (
|
||||
<Link href={href} className={className }>
|
||||
{label}
|
||||
</Link>
|
||||
);
|
||||
}
|
||||
82
src/ui/components/global/dropdown.tsx
Normal file
@@ -0,0 +1,82 @@
|
||||
"use client";
|
||||
import React, {SetStateAction, useState} from "react";
|
||||
import ChevronLeftSvg from "../icons/ChevronLeftSvg";
|
||||
import {usePathname, useRouter, useSearchParams} from "next/navigation";
|
||||
import {site_languages} from "@/constants";
|
||||
|
||||
interface DropdownProps {
|
||||
defaultValue?: {label: string; value: string};
|
||||
setOutput?: (t: string) => React.Dispatch<SetStateAction<string>>;
|
||||
options: {label: string; value: string}[];
|
||||
}
|
||||
|
||||
export default function Dropdown({
|
||||
defaultValue,
|
||||
setOutput,
|
||||
options,
|
||||
}: DropdownProps) {
|
||||
const [isOpen, setIsOpen] = useState(false);
|
||||
const [selected, setSelected] = useState<{label: string; value: string}>(
|
||||
defaultValue ?? options[0]
|
||||
);
|
||||
const router = useRouter();
|
||||
const pathname = usePathname();
|
||||
const searchParams = useSearchParams();
|
||||
|
||||
const handleChange = (entry: string) => {
|
||||
const target = options.find((option) => option.label === entry) || {
|
||||
label: "",
|
||||
value: "",
|
||||
};
|
||||
setSelected(target);
|
||||
|
||||
const segments = pathname.split("/").filter(Boolean);
|
||||
if (
|
||||
segments.length > 0 &&
|
||||
site_languages.map((language) => language.label).includes(segments[0])
|
||||
) {
|
||||
segments.shift();
|
||||
}
|
||||
|
||||
const newPath = `/${target.value}/${segments.join("/")}`;
|
||||
const search = searchParams.toString();
|
||||
router.push(newPath + (search ? `?${search}` : ""));
|
||||
};
|
||||
return (
|
||||
<button
|
||||
onClick={(e) => {
|
||||
e.stopPropagation();
|
||||
setIsOpen((t) => !t);
|
||||
}}
|
||||
className={` ${
|
||||
isOpen ? "rounded-t-xl" : "rounded-xl"
|
||||
} flex items-center gap-x-3 p-3 relative font-medium`}
|
||||
>
|
||||
<span className="text-white">{selected.label}</span>
|
||||
<span
|
||||
className={`transition-all text-white ${
|
||||
isOpen ? "rotate-90" : "-rotate-90"
|
||||
}`}
|
||||
>
|
||||
<ChevronLeftSvg size="10" />
|
||||
</span>
|
||||
<div
|
||||
className={`absolute top-full bg-blue-primary rounded-b-xl text-[#e6e6e6] p-3 z-20 w-full right-0 ${
|
||||
isOpen ? "block" : "hidden"
|
||||
}`}
|
||||
>
|
||||
<ul className="space-y-4">
|
||||
{options?.map((option) => (
|
||||
<li
|
||||
key={option.value}
|
||||
onClick={(e) => handleChange(e.currentTarget.innerHTML)}
|
||||
className="hover:text-white hover:cursor-pointer"
|
||||
>
|
||||
{option.label}
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
</button>
|
||||
);
|
||||
}
|
||||
26
src/ui/components/icons/ArrowLeftSvg.tsx
Normal file
@@ -0,0 +1,26 @@
|
||||
import {IconsProps} from "@/types/icons/icons.type";
|
||||
import React from "react";
|
||||
|
||||
export default function ArrowLeftSvg({
|
||||
size,
|
||||
width = "17",
|
||||
height = "17",
|
||||
color = "currentColor",
|
||||
}: IconsProps) {
|
||||
return (
|
||||
<>
|
||||
<svg
|
||||
width={size ?? width}
|
||||
height={size ?? height}
|
||||
viewBox="0 0 17 17"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path
|
||||
d="M4.325 9.5H16.5V7.5H4.325L9.925 1.9L8.5 0.5L0.5 8.5L8.5 16.5L9.925 15.1L4.325 9.5Z"
|
||||
fill={color}
|
||||
/>
|
||||
</svg>
|
||||
</>
|
||||
);
|
||||
}
|
||||
26
src/ui/components/icons/ChevronLeftSvg.tsx
Normal file
@@ -0,0 +1,26 @@
|
||||
import {IconsProps} from "@/types/icons/icons.type";
|
||||
import React from "react";
|
||||
|
||||
export default function ChevronLeftSvg({
|
||||
size,
|
||||
width = "13",
|
||||
height = "21",
|
||||
color = "currentColor",
|
||||
}: IconsProps) {
|
||||
return (
|
||||
<>
|
||||
<svg
|
||||
width={size ?? width}
|
||||
height={size ?? height}
|
||||
viewBox="0 0 13 21"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path
|
||||
d="M11.0403 21L13 19.1363L3.91932 10.5L13 1.86375L11.0403 1.71319e-07L2.82529e-06 10.5L11.0403 21Z"
|
||||
fill={color}
|
||||
/>
|
||||
</svg>
|
||||
</>
|
||||
);
|
||||
}
|
||||
26
src/ui/components/icons/ChevronRightSvg.tsx
Normal file
@@ -0,0 +1,26 @@
|
||||
import {IconsProps} from "@/types/icons/icons.type";
|
||||
import React from "react";
|
||||
|
||||
export default function ChevronRightSvg({
|
||||
size,
|
||||
width = "13",
|
||||
height = "21",
|
||||
color = "currentColor",
|
||||
}: IconsProps) {
|
||||
return (
|
||||
<>
|
||||
<svg
|
||||
width={size ?? width}
|
||||
height={size ?? height}
|
||||
viewBox="0 0 13 21"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path
|
||||
d="M1.95966 -1.73603e-06L1.67294e-06 1.86375L9.08068 10.5L1.62934e-07 19.1362L1.95966 21L13 10.5L1.95966 -1.73603e-06Z"
|
||||
fill={color}
|
||||
/>
|
||||
</svg>
|
||||
</>
|
||||
);
|
||||
}
|
||||
9
src/ui/components/icons/SelectDoctor.tsx
Normal file
@@ -0,0 +1,9 @@
|
||||
import React from 'react'
|
||||
|
||||
export default function SelectDoctor() {
|
||||
return (
|
||||
<>
|
||||
|
||||
</>
|
||||
)
|
||||
}
|
||||
26
src/ui/components/icons/TelephoneSvg.tsx
Normal file
@@ -0,0 +1,26 @@
|
||||
import {IconsProps} from "@/types/icons/icons.type";
|
||||
import React from "react";
|
||||
|
||||
export default function TelephoneSvg({
|
||||
size = "24",
|
||||
width,
|
||||
height,
|
||||
color = "currentColor",
|
||||
}: IconsProps) {
|
||||
return (
|
||||
<>
|
||||
<svg
|
||||
width={size ?? width}
|
||||
height={size ?? height}
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path
|
||||
d="M19.95 21C20.25 21 20.5 20.9 20.7 20.7C20.9 20.5 21 20.25 21 19.95V15.9C21 15.6833 20.925 15.4875 20.775 15.3125C20.625 15.1375 20.4333 15.0167 20.2 14.95L16.75 14.25C16.5167 14.2167 16.2792 14.2375 16.0375 14.3125C15.7958 14.3875 15.6 14.5 15.45 14.65L13.1 17C12.4667 16.6333 11.8667 16.2292 11.3 15.7875C10.7333 15.3458 10.1917 14.8667 9.675 14.35C9.125 13.8167 8.62083 13.2625 8.1625 12.6875C7.70417 12.1125 7.30833 11.5167 6.975 10.9L9.4 8.45C9.53333 8.31667 9.625 8.15833 9.675 7.975C9.725 7.79167 9.73333 7.56667 9.7 7.3L9.05 3.8C9.01667 3.58333 8.90833 3.39583 8.725 3.2375C8.54167 3.07917 8.33333 3 8.1 3H4.05C3.75 3 3.5 3.1 3.3 3.3C3.1 3.5 3 3.75 3 4.05C3 6.13333 3.45417 8.19167 4.3625 10.225C5.27083 12.2583 6.55833 14.1083 8.225 15.775C9.89167 17.4417 11.7417 18.7292 13.775 19.6375C15.8083 20.5458 17.8667 21 19.95 21ZM6.05 9C5.76667 8.35 5.55 7.69167 5.4 7.025C5.25 6.35833 5.13333 5.68333 5.05 5H7.25L7.7 7.35L6.05 9ZM15 17.9L16.65 16.25L19 16.75V18.95C18.3167 18.9 17.6417 18.7833 16.975 18.6C16.3083 18.4167 15.65 18.1833 15 17.9Z"
|
||||
fill={color}
|
||||
/>
|
||||
</svg>
|
||||
</>
|
||||
);
|
||||
}
|
||||
50
src/ui/components/menu/Menu.tsx
Normal file
@@ -0,0 +1,50 @@
|
||||
import React from "react";
|
||||
import CustomLink from "../global/CustomLink";
|
||||
import ChevronLeftSvg from "../icons/ChevronLeftSvg";
|
||||
|
||||
const hovered_menu =
|
||||
"after:inline-block after:w-full after:h-1 after:bg-white after:absolute after:bottom-0 after:left-0 after:rounded-t-xl";
|
||||
|
||||
interface MenuProps {
|
||||
direction?: "horizontal" | "vertical";
|
||||
items: MenuItemsTypes[];
|
||||
}
|
||||
export default function Menu({direction = "horizontal", items}: MenuProps) {
|
||||
return (
|
||||
<nav className="flex items-center">
|
||||
<ul
|
||||
className={` text-primary flex text-xs lg:text-base relative items-center text-white ${
|
||||
direction === "horizontal" ? "flex-row gap-x-6" : "flex-col gap-y-4"
|
||||
}`}
|
||||
>
|
||||
{items.map((link) => (
|
||||
<li
|
||||
key={link.id}
|
||||
className="group py-[40px] text-menu-colors relative h-full after:hidden hover:after:inline-block after:w-full after:h-1 after:bg-blue-primary after:absolute after:bottom-0 after:left-0 after:rounded-t-xl"
|
||||
>
|
||||
<span className="flex items-center gap-x-2">
|
||||
<CustomLink href={link.href} label={link.label} className="text-sm font-medium text-[#e6e6e6] hover:text-white transition-all" />
|
||||
|
||||
{link.sub.length > 0 ? (
|
||||
<span className="-rotate-90 group-hover:rotate-90 transition-all duration-300">
|
||||
<ChevronLeftSvg size="10" />
|
||||
</span>
|
||||
) : (
|
||||
""
|
||||
)}
|
||||
</span>
|
||||
{link.sub.length > 0 && (
|
||||
<ul className="hidden group-hover:block absolute top-full z-20 bg-blue-primary w-64 shadow-inner space-y-5 p-3 rounded-b-xl">
|
||||
{link.sub.map((submenu) => (
|
||||
<li key={submenu.id} className="w-full text-blue-primary hover:font-medium p-1 px-3">
|
||||
<CustomLink href={submenu.href} label={submenu.label} className="text-sm font-medium text-[#e6e6e6] hover:text-white transition-all" />
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
)}
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</nav>
|
||||
);
|
||||
}
|
||||
37
src/ui/components/menu/ReservationButton.tsx
Normal file
@@ -0,0 +1,37 @@
|
||||
"use client";
|
||||
import Link from "next/link";
|
||||
import React, {useEffect, useState} from "react";
|
||||
|
||||
export default function ReservationButton({isSticky}: {isSticky: boolean}) {
|
||||
const [show, setShow] = useState(false);
|
||||
useEffect(() => {
|
||||
const handleScroll = () => {
|
||||
if (window.scrollY > 1000) {
|
||||
setShow(true);
|
||||
} else {
|
||||
setShow(false);
|
||||
}
|
||||
};
|
||||
window.addEventListener("scroll", handleScroll);
|
||||
|
||||
return () => window.removeEventListener("scroll", handleScroll);
|
||||
}, []);
|
||||
return (
|
||||
<>
|
||||
{show && (
|
||||
<Link
|
||||
href={"/contact-us#request_accept"}
|
||||
dir="ltr"
|
||||
className={`bg-secondary text-white rounded-full ${
|
||||
isSticky ? "py-4 px-4" : "py-4 px-6"
|
||||
} font-extrabold shadow-lg flex items-center whitespace-nowrap shadow-neutral-300 hover:shadow-none transition-all duration-200`}
|
||||
>
|
||||
|
||||
دریافت
|
||||
نوبت آنلاین
|
||||
|
||||
</Link>
|
||||
)}
|
||||
</>
|
||||
);
|
||||
}
|
||||
53
src/ui/components/top-menu/TopMenu.tsx
Normal file
@@ -0,0 +1,53 @@
|
||||
import React from "react";
|
||||
import Menu from "../menu/Menu";
|
||||
import {DefaultMenuLinks} from "@/constants/menu/menu.const";
|
||||
import Link from "next/link";
|
||||
import Image from "next/image";
|
||||
import TelephoneSvg from "../icons/TelephoneSvg";
|
||||
import CustomLink from "../global/CustomLink";
|
||||
import Dropdown from "../global/dropdown";
|
||||
import {toPersianNumber} from "@/utils/functions";
|
||||
import {site_languages} from "@/constants";
|
||||
|
||||
export default function TopMenu() {
|
||||
return (
|
||||
<div className="bg-blue-primary container flex items-center justify-between border-b-[#eee]">
|
||||
<div className="flex gap-x-10 transition-all duration-300 justify-between items-center">
|
||||
<Link href={"/"} className="flex items-center gap-x-2">
|
||||
<div className="relative h-[70px] w-[87px]">
|
||||
<Image
|
||||
loading="lazy"
|
||||
src="/main-logo.png"
|
||||
fill
|
||||
alt="shomal hospital"
|
||||
style={{color: "transparent", fill: "red", objectFit: "contain"}}
|
||||
/>
|
||||
</div>
|
||||
</Link>
|
||||
<span className="inline-block h-full min-h-[80px] w-[1px] bg-white"></span>
|
||||
<Menu direction="horizontal" items={DefaultMenuLinks} />
|
||||
</div>
|
||||
<div className="flex items-center gap-x-1">
|
||||
<a
|
||||
href="tel:0114492"
|
||||
className="text-white relative group flex items-end hover:bg-blue-primary p-3 hover:text-white transition-all rounded-xl"
|
||||
>
|
||||
<span className="hidden group-hover:block absolute left-3 h-[24px] w-[24px] animate-ping rounded-xl bg-white opacity-35"></span>
|
||||
|
||||
<span className="font-bold text-xl">
|
||||
{toPersianNumber("011-4492")}
|
||||
</span>
|
||||
<span className="group-hover:animate-pulse">
|
||||
<TelephoneSvg size="28" />
|
||||
</span>
|
||||
</a>
|
||||
<Dropdown options={site_languages} />
|
||||
<CustomLink
|
||||
href="/dashboard"
|
||||
label="ورود به حساب"
|
||||
className="bg-white text-blue-primary rounded-xl py-3 px-6 text-sm font-semibold"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
73
src/ui/header-slider/HeaderSlider.tsx
Normal file
@@ -0,0 +1,73 @@
|
||||
"use client";
|
||||
import React from "react";
|
||||
import {Swiper, SwiperSlide} from "swiper/react";
|
||||
import "swiper/css";
|
||||
import "swiper/css/pagination";
|
||||
import "swiper/css/navigation";
|
||||
|
||||
import {Autoplay, Navigation, Pagination} from "swiper/modules";
|
||||
import Image from "next/image";
|
||||
import CustomLink from "../components/global/CustomLink";
|
||||
|
||||
export default function HeaderSlider() {
|
||||
return (
|
||||
<Swiper
|
||||
loop={true}
|
||||
autoplay={{
|
||||
delay: 2500,
|
||||
disableOnInteraction: false,
|
||||
}}
|
||||
navigation={false}
|
||||
modules={[Pagination, Navigation, Autoplay]}
|
||||
onSlideChange={() => console.log("slide change")}
|
||||
onSwiper={(swiper) => console.log(swiper)}
|
||||
className="lg:h-[83vh] h-[460px]"
|
||||
>
|
||||
<div className="container absolute z-10 bottom-0">
|
||||
<div className="p-20">
|
||||
<CustomLink
|
||||
label="دریافت نوبت آنلاین"
|
||||
href="/reservation"
|
||||
className="bg-blue-secondary text-white flex items-center font-medium w-fit px-20 py-4 rounded-xl"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<SwiperSlide className="h-full w-full relative">
|
||||
<Image
|
||||
loading="lazy"
|
||||
src={"/header-slider-1.webp"}
|
||||
fill
|
||||
style={{color: "transparent", objectFit: "cover"}}
|
||||
alt=""
|
||||
/>
|
||||
</SwiperSlide>
|
||||
<SwiperSlide>
|
||||
<Image
|
||||
loading="lazy"
|
||||
src={"/header-slider-1.webp"}
|
||||
fill
|
||||
style={{color: "transparent", objectFit: "cover"}}
|
||||
alt=""
|
||||
/>
|
||||
</SwiperSlide>
|
||||
<SwiperSlide>
|
||||
<Image
|
||||
loading="lazy"
|
||||
src={"/header-slider-1.webp"}
|
||||
fill
|
||||
style={{color: "transparent", objectFit: "cover"}}
|
||||
alt=""
|
||||
/>
|
||||
</SwiperSlide>
|
||||
<SwiperSlide>
|
||||
<Image
|
||||
loading="lazy"
|
||||
src={"/header-slider-1.webp"}
|
||||
fill
|
||||
style={{color: "transparent", objectFit: "cover"}}
|
||||
alt=""
|
||||
/>
|
||||
</SwiperSlide>
|
||||
</Swiper>
|
||||
);
|
||||
}
|
||||
8
src/utils/functions.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
export function toPersianNumber(num: string) {
|
||||
const persianDigits = ["۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹"];
|
||||
return num
|
||||
.toString()
|
||||
.split("")
|
||||
.map((d) => persianDigits[+d] || d)
|
||||
.join("");
|
||||
}
|
||||
27
tsconfig.json
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"target": "ES2017",
|
||||
"lib": ["dom", "dom.iterable", "esnext"],
|
||||
"allowJs": true,
|
||||
"skipLibCheck": true,
|
||||
"strict": true,
|
||||
"noEmit": true,
|
||||
"esModuleInterop": true,
|
||||
"module": "esnext",
|
||||
"moduleResolution": "bundler",
|
||||
"resolveJsonModule": true,
|
||||
"isolatedModules": true,
|
||||
"jsx": "preserve",
|
||||
"incremental": true,
|
||||
"plugins": [
|
||||
{
|
||||
"name": "next"
|
||||
}
|
||||
],
|
||||
"paths": {
|
||||
"@/*": ["./src/*"]
|
||||
}
|
||||
},
|
||||
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", "src/middleware.js"],
|
||||
"exclude": ["node_modules"]
|
||||
}
|
||||