diff --git a/landing/README.md b/landing/README.md new file mode 100644 index 0000000..2aecb61 --- /dev/null +++ b/landing/README.md @@ -0,0 +1,217 @@ +# Mataba (مطبا) — Static Website (HTML5 + CSS3 + Vanilla JS) + +Standalone static extraction of `sabaHealth-develop` (Next.js 16 + React 19 + Tailwind), visually reproduced and fully rebranded to **Mataba / مطبا** with production domain **https://mataba.ir**. + +Stack: **HTML5 + CSS3 + vanilla JS** — no Next.js, React, JSX, TypeScript, or JS app server required. Standalone static hosting. + +--- + +## 1) Structure (as implemented) + +``` +mataba-static/ +├── index.html # Homepage — 11 sections in original order +├── about/index.html # About Us (placeholder, flagged) +├── contact/index.html # Contact Us (flagged, client validation only) +├── css/ +│ ├── styles.css # Port of globals.css + component styles (tokens, hero, cards, etc) +│ ├── responsive.css # Breakpoints 1100px / 900px + reduced-motion +│ └── utilities.css # .visually-hidden, .ltr, .center +├── js/main.js # Vanilla JS: menu, modal, carousel, validation, scroll +├── assets/ +│ ├── images/ # Copied verbatim from sabaHealth-develop/public/images +│ │ ├── firsSecBg.png, star.png, dast.png, personalsection.png, card.svg, circle.png, ... +│ │ └── samplePage/1-4.png +│ └── fonts/ # Modam-*.ttf (6) + Peyda (1) — 4 weights declared in CSS +├── robots.txt +├── sitemap.xml # 3 canonical URLs +├── manifest.webmanifest +├── docs/component-migration-map.md +└── README.md (this file) +``` + +Original Next.js app remains untouched at `../sabaHealth-develop`. + +--- + +## 2) Run locally (verified) + +```powershell +cd C:\Users\hemn\Desktop\mataba-static +python3 -m http.server 8080 +# or: py -m http.server 8080 +# or: npx serve . -l 8080 +``` + +Local URL used for QA: **http://localhost:8080/** (also `/about/`, `/contact/`, `/sitemap.xml`, `/robots.txt`, `/css/styles.css`, `/js/main.js`). + +Verification (PowerShell, 2026-09-20): `200` on `/`, `/about/`, `/contact/`, `sitemap.xml`, `robots.txt`, `styles.css`, `main.js`; assets `firsSecBg.png`, `dast.png`, `star.png`, `personalsection.png`, `Modam-Bold.ttf` all `200`. + +--- + +## 3) Production deployment (static hosting) + +Any static host works (Nginx, Apache, Cloudflare Pages, Vercel Static, Netlify, S3+CloudFront). Example Nginx: + +```nginx +server { + server_name mataba.ir www.mataba.ir; + root /var/www/mataba-static; + index index.html; + location / { try_files $uri $uri/ $uri/index.html =404; } + location ~* \.(css|js|png|jpg|svg|ttf|webmanifest)$ { + expires 30d; add_header Cache-Control "public, immutable"; + } +} +``` + +Steps: +1. Copy `mataba-static/` contents to host root. +2. Point `https://mataba.ir` to that root; enforce HTTPS and `www → apex` redirect. +3. Verify `https://mataba.ir/sitemap.xml` and `https://mataba.ir/robots.txt` are reachable (robots references `https://mataba.ir/sitemap.xml`). +4. Submit sitemap in Google Search Console; verify canonical tags (`https://mataba.ir/`, `/about/`, `/contact/`). +5. Enable gzip/brotli, HTTP/2, and image caching. +6. No build step required. + +Do NOT require `next start` or Node runtime. + +--- + +## 4) Reused assets (verbatim copy from `sabaHealth-develop/public`) + +Images: `card.svg`, `circle.png`, `contactUs.png`, `contactusPhone.png`, `dast.png`, `dcm1.jpg`, `dcm2.jpg`, `dcm3.jpg`, `facilitiesBg.svg`, `firsSecBg.png`, `FooterLogo.png`, `instagraam.png`, `navLogo.png`, `person.jpg`, `person2.jpg`, `person3.jpg`, `personalsection.png`, `star.png`, `telegram.png`, `treStepBg.svg`, `whatsap.png`, `samplePage/1.png` … `4.png`. +Fonts: `Modam-Regular.ttf`, `Modam-Bold.ttf`, `Modam-ExtraBold.ttf`, `Modam-ExtraLight.ttf`, `Modam-Light.ttf`, `Modam-Medium.ttf`, `Peyda-Regular[@mimvid].ttf` (only 4 declared, matching `globals.css`). +Note: `images/3.png` referenced by original `AboutUsImage` does not exist in repo → fallback to `person.jpg` documented. + +--- + +## 5) Recreated components (no framework copy-paste) + +- Shell: `RootLayout` + `globals.css` → `index.html` (RTL `lang="fa" dir="rtl"`, Modam `@font-face`, tokens `--green #9EB185`, `--green-2 #9DB281`, `--dark #425428`, `--deep #014224`, `--lime #99CB35`, etc, gradient underlines `.btmBorder/.treeStep/.searchAfter/.facilityAfter/.SampleAfter/.DoctorCmH`). +- `Navbar` (90% bar, hamburger 3 bars `#5B6E42/#9EB185`, drawer `left:61%`, backdrop `bg-black/70`), `navLinks` (remapped `/samples /packages /blogs` → anchors `#samples #packages`; `/aboutus /contactus` → `/about/ /contact/`), `NavButtons` (search → `#search`, ورود/ثبت‌نام → modal), `HambergurMenue` → `js/main.js#toggleMenu`. +- Homepage: `FirstSection` + `GreenTemplateFirstSec` + `TextContentGreenBox` + `StarTemplateGreenBox` + `BoxesGreenBox` + `ElementsUnderGreenTm` + `FirstSectionBox` + `FirstSectionHand` + `FirstSectionDrPhotos` → `.hero` + `.hero-under` (glass boxes, star `star.png`, hand `dast.png`, avatars). +- `SearchSection` + `TreeStep` + `SearchSections` → `#search` (pill `toDown`, `treStepBg.svg`, 3 steps, search form + 6 domain pills). +- `Samples` → `#samples` (4 cards `card.svg` + stars + `samplePage/1-4.png` + overlay). +- `Facilities` → `#facilities` (`facilitiesBg.svg`, 6 white squares, `circle.png` deco). +- `PeronalBrandPhot` → `.brand-cta` (`personalsection.png` + gradient `#b8c4a6→#425428`). +- `PackagesAndPrices` + `ServicesDetail` + `BasePlan` → `#packages` (green panel 10 items + 3× BasePlan, flagged prices). +- `ContactUs` + `ContactUsForm` + `ContactUsText` + `DoctorsCm`/`DoctorsCmTitle`/`DoctorsCmSlider` → `#contact` + `#voices` (vanilla carousel replaces Swiper, autoplay 3s, pause on hover). +- `Footer`, `AboutUsImage/page.tsx`, `ContactUsForm` (organism) → `about/index.html`, `contact/index.html` (kept dotted frame, avatar cluster, contact rows, dark form). +- Atoms: `Button` variants → `.btn*`, `Icon` (25 SVGs) → inline SVGs, `NavLink` → `a.nav-link.active`. +- Context/modal: `layoutContext` + `Modal/provider+sign-in+confirm` → `js/main.js` modal with `^09\d{9}$` validation. + +All CSS/JS hand-written; Tailwind flattened; Swiper replaced with vanilla `scrollBy`. + +--- + +## 6) Branding changes (Saba Health → Mataba) + +- HTML ``, `meta description`, `og:*`, `twitter:*`, `canonical`, `JSON-LD` (`Organization`/`WebSite`/`WebPage`/`Service`) now use `مطبا / Mataba` and `https://mataba.ir`. +- Visible UI: header brand aria-label, hero kicker/H1, footer paragraph & copyright `تمامی حقوق مادی و معنوی این وب‌سایت متعلق به «مطبا» است`, footer nav, about/contact headings. +- `sabahealth.ir` retained ONLY in `contact/index.html` as explicitly flagged outdated email with note `(دامنه قدیمی؛ نیازمند آدرس رسمی مطبا)` — not invented, not canonical, documented for owner replacement. Docs mention `Saba Health` only for migration provenance. +- `navLogo.png`/`FooterLogo.png` kept as temporary visual treatment; replacement needed (documented). +- No global filename/path rename that would break assets. + +Brand audit (`grep -r "صبا| Saba|sabahealth"`): 0 public-facing occurrences except the single flagged email + docs/README provenance lines. + +--- + +## 7) SEO — technical + +- Semantics: `header`/`nav`/`main`/`section`/`footer`, one `H1` per page, `H2`/`H3` hierarchy, text content not image-only. +- RTL: `<html lang="fa" dir="rtl">`, Modam typography, `class="ltr" dir="ltr"` for phone/email/domains. +- Metadata per page: unique `title`/`description`, `canonical https://mataba.ir/...`, `robots index,follow`, `og:title/description/url/image(locale fa_IR, site_name مطبا)`, `twitter:card summary_large_image`. +- `robots.txt`: Allow `/`, `/assets/`, `/css/`, `/js/`; `Disallow /docs/`; `Sitemap: https://mataba.ir/sitemap.xml`. +- `sitemap.xml`: 3 canonical indexable URLs only (`/`, `/about/`, `/contact/`), no dev/404/duplicate URLs. +- JSON-LD: `@graph` with `Organization` (`@id https://mataba.ir/#org`, logo `https://mataba.ir/assets/images/navLogo.png`), `WebSite`, `WebPage`, `Service` (areaServed IR, inLanguage fa) — no invented ratings/reviews/prices/awards/addresses/credentials. +- Images: descriptive `alt` for meaningful images (sample cards, person.jpg), `alt=""` for decorative, `width`/`height` reserved, lazy-loading except hero, `preload` for `Modam-Bold.ttf`. +- Internal linking: descriptive Persian anchor text, HTML links (not JS-only), no broken links (anchors `#home #facilities #samples #packages #contact #search`, pages `about/ contact/`). + +--- + +## 8) SEO — content (Persian, natural, no stuffing) + +Titles/`H1`/`H2`, intro, service descriptions, alt text, meta include naturally: `طراحی سایت پزشکان`, `طراحی سایت پزشکی`, `وب‌سایت اختصاصی پزشک`, `برند شخصی پزشک`, `نوبت‌دهی آنلاین`, `پنل مدیریت مطب`, `طراحی سایت دندانپزشکی` (samples: دندانپزشکی/پزشک عمومی/پزشک زیبایی/جراح), etc, sourced from actual content — no fabricated superlatives. + +--- + +## 9) Content requiring verification (DO NOT publish as fact without owner approval) + +- Stats: `+۱,۲۰۰ سایت پزشکان`, `٪۹۸ رضایت`, `۷-۱۰ دقیقه تحویل`, `تحویل کمتر از ۵ روز`, `۱۰ سال سابقه`, `+۸۰۰ همکاری/بررسی‌کنندگان` — from `greeBoxDetail`/`FirstSectionDrPhotos`/`StarTemplateGreenBox`. Flagged inline with `TODO`/`note`. +- Prices/packages: `۱۱۳,۵۴۶,۰۰۰ /ماهانه` ×3 `پلن پایه شامل ۹ گزینه` + 10 service items — flagged. +- Testimonials: `DoctorComments` (7 items, duplicates, one `test`) → shown as 3 distinct cards, flagged `نظرات زیر تکراری است`. +- About: original `aboutus/page.tsx` was Lorem Ipsum — replaced with documented placeholder, no fabricated history. +- Contact: `08733212565`, `www.sabahealth.ir` (old domain), `استان کردستان... مرکز رشد` , `آقای آرش صادقی` — from `contactUs` constant, flagged `نیازمند تایید`. +- Brand images: `navLogo.png`/`FooterLogo.png` temporary. + +--- + +## 10) Backend integrations still required + +- **Login/OTP**: phone `^09\d{9}$` validates client-side; `loginForm` shows demo notice `پیامکی ارسال نمی‌شود. یکپارچه‌سازی بک‌اند لازم است.` — no endpoint. Original `features/auth/login.schema.ts` regex preserved. +- **Lead/contact forms**: `leadForm`/`leadFormPage`/`contactFormPage` validate (required name, mobile regex, textarea), then show `ارسال نهایی نیازمند اتصال بک‌اند است و هنوز ثبت نشده.` — no `POST` endpoint invented. +- **Domain search**: `domainForm` + `.domain` pills demo only: `به ثبت‌کننده دامنه متصل نیست.` +- **Social links** (`#`): need real Instagram/Telegram/WhatsApp URLs. +- **Analytics/search console**: add GA4/GSC verification after launch. + +Do not claim delivery/success where no backend exists. + +--- + +## 11) Performance & accessibility + +- Efficient CSS/JS (single `styles.css` 16KB, `main.js` 6KB, no deps), optimized images, `width`/`height` reserved,.lazy except hero, `font-display:swap`, no third-party scripts, CLS avoided. +- Keyboard: hamburger toggles `aria-expanded`, drawer closes on `Escape`/backdrop/nav click, modal closes on `Escape`/backdrop/`X`, visible `:focus-visible` outline `3px solid #014224`, skip links. +- `prefers-reduced-motion:reduce` disables smooth scroll/transitions. +- Forms: `label.visually-hidden`, `type="tel" inputmode="numeric"`, `type="email"`, `aria-invalid`, `role="alert"/"status"`. + +--- + +## 12) Responsive verified + +Breakpoints `1100px`/`900px`: header drawer (`left:61%` when open), hero wraps (`hero-star` hidden mobile, `hero-hand-mobile` shown, stats row), `mini-cards` row, `hand` hidden mobile, `search-box/domains` 92%, `sample-card` 23%→30% mobile, `fac` 13%→28%, `brand-cta` 400px→170px, `packages` stacks (only `.featured` visible mobile), `contact` column, `track .tcard` 32%→88% mobile, `page-hero`/`contact-page` column. `min-width 320px` prevents overflow; `wrap max-width 1500px` matches original. + +--- + +## 13) Final QA report (2026-09-20, local) + +- Homepage loads: `200`, CSS/JS/images/fonts `200`. +- Nav links: `#home #samples #packages #facilities #search #contact` valid anchors; `about/` `contact/` valid pages; no dead `/samples /packages /blogs`. +- Mobile menu: opens/closes via hamburger, backdrop, nav link, `Escape`. +- Forms: empty/invalid → `ferr` Persian error; valid → `fok` demo notice (no fake success). +- Domain: empty → error; with value → demo notice; pill clicks append TLD. +- Carousel: `tPrev/tNext` scroll, autoplay 3s, hover pauses. +- Modal: `data-open-login` opens, `data-close-login`/backdrop/`Escape` closes, regex `^09\d{9}$`. +- Headings: 1× `H1` per page, no skipped levels. +- Metadata: unique titles/descriptions/canonicals, `og`/`twitter`/`JSON-LD` valid JSON, no invented fields. +- `sitemap.xml` valid (3 URLs), `robots.txt` valid, does not block assets, `manifest.webmanifest` valid (`dir rtl lang fa theme #9EB185`). +- No `next`/`react`/`jsx` runtime deps; `node -c js/main.js` pass. +- `grep` brand audit: no public `Saba` except flagged email (documented). +- Horizontal overflow: none observed (`wrap` 90-95%, flex-wrap, no fixed viewport-breaking widths). +- Next.js source intact (`sabaHealth-develop/app/layout.tsx` LastWrite 2026-05-05). + +Limitations: no browser automation screenshot in this environment; visual fidelity verified via code-mapped tokens/sections and `curl` asset checks — owner should re-verify pixel alignment in Chrome DevTools (Desktop 1440px, Tablet 768px, Mobile 360px). + +--- + +## 14) Acceptance criteria + +- [x] Static Mataba site implemented, visually faithful to Saba Health source. +- [x] HTML5/CSS3/vanilla JS only; Next.js/React not required to run. +- [x] Persian RTL + Modam preserved; responsive. +- [x] Mataba branding consistent; outdated public references removed/flagged. +- [x] Homepage + About + Contact work; navigation valid; no 404 thin pages. +- [x] Technical SEO foundations (semantics, RTL, metadata, canonical, sitemap, robots, JSON-LD, alt/dimensions, linking). +- [x] Important content as HTML text, not image-only. +- [x] No unsupported business claims published as fact; unverified flagged. +- [x] Run locally and tested; issues fixed/documented. +- [x] Original Next.js app intact; `docs/component-migration-map.md` present. + +--- + +## 15) Next steps for owner + +1. Confirm/Replace: stats, prices, testimonials, about copy, contact phone/email/address/management, social URLs, brand logos (`navLogo.png`/`FooterLogo.png`). +2. Provide backend endpoints for lead/contact/login/domain, then wire `fetch` in `js/main.js` (replace demo notices). +3. Replace `sabahealth.ir` email with `mataba.ir` official, update `sitemap.xml` `lastmod` after content freeze. +4. Add `404.html` if custom 404 desired; verify `og:image` dimensions 1200×630 for social sharing. diff --git a/landing/about/index.html b/landing/about/index.html new file mode 100644 index 0000000..21e8de6 --- /dev/null +++ b/landing/about/index.html @@ -0,0 +1,50 @@ +<!DOCTYPE html> +<html lang="fa" dir="rtl"> +<head> +<meta charset="UTF-8"> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<title>درباره مطبا | پلتفرم طراحی سایت پزشکی + + + + + + + + + + + + + + + +
+ +
+ +
+
+ تیم مطبا (تصویر موقت از نسخه قبلی) +
+
+

+۸۰۰ بررسی‌کنندگان (آمار نسخه قبلی، نیازمند تایید)

+
+
+
+

درباره ما

+

مطبا پلتفرمی برای ساده‌تر کردن حضور آنلاین پزشکان است؛ از طراحی لوگو تا ساخت کامل وب‌سایت اختصاصی پزشک.

+

مشاهده نمونه‌کارها ارتباط با ما

+
+
+ +
+ + + diff --git a/landing/assets/fonts/Modam-Bold.ttf b/landing/assets/fonts/Modam-Bold.ttf new file mode 100644 index 0000000..e99fb3b Binary files /dev/null and b/landing/assets/fonts/Modam-Bold.ttf differ diff --git a/landing/assets/fonts/Modam-ExtraBold.ttf b/landing/assets/fonts/Modam-ExtraBold.ttf new file mode 100644 index 0000000..5bfb9e3 Binary files /dev/null and b/landing/assets/fonts/Modam-ExtraBold.ttf differ diff --git a/landing/assets/fonts/Modam-ExtraLight.ttf b/landing/assets/fonts/Modam-ExtraLight.ttf new file mode 100644 index 0000000..18e0d4d Binary files /dev/null and b/landing/assets/fonts/Modam-ExtraLight.ttf differ diff --git a/landing/assets/fonts/Modam-Light.ttf b/landing/assets/fonts/Modam-Light.ttf new file mode 100644 index 0000000..12db60c Binary files /dev/null and b/landing/assets/fonts/Modam-Light.ttf differ diff --git a/landing/assets/fonts/Modam-Medium.ttf b/landing/assets/fonts/Modam-Medium.ttf new file mode 100644 index 0000000..1fe4eae Binary files /dev/null and b/landing/assets/fonts/Modam-Medium.ttf differ diff --git a/landing/assets/fonts/Modam-Regular.ttf b/landing/assets/fonts/Modam-Regular.ttf new file mode 100644 index 0000000..e47947e Binary files /dev/null and b/landing/assets/fonts/Modam-Regular.ttf differ diff --git a/landing/assets/fonts/Peyda-Regular[@mimvid].ttf b/landing/assets/fonts/Peyda-Regular[@mimvid].ttf new file mode 100644 index 0000000..4f3765e Binary files /dev/null and b/landing/assets/fonts/Peyda-Regular[@mimvid].ttf differ diff --git a/landing/assets/images/FooterLogo.png b/landing/assets/images/FooterLogo.png new file mode 100644 index 0000000..2fd9349 Binary files /dev/null and b/landing/assets/images/FooterLogo.png differ diff --git a/landing/assets/images/card.svg b/landing/assets/images/card.svg new file mode 100644 index 0000000..ac7fe00 --- /dev/null +++ b/landing/assets/images/card.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/landing/assets/images/circle.png b/landing/assets/images/circle.png new file mode 100644 index 0000000..fc7b880 Binary files /dev/null and b/landing/assets/images/circle.png differ diff --git a/landing/assets/images/contactUs.png b/landing/assets/images/contactUs.png new file mode 100644 index 0000000..e3b73d1 Binary files /dev/null and b/landing/assets/images/contactUs.png differ diff --git a/landing/assets/images/contactusPhone.png b/landing/assets/images/contactusPhone.png new file mode 100644 index 0000000..27bb9d3 Binary files /dev/null and b/landing/assets/images/contactusPhone.png differ diff --git a/landing/assets/images/dast.png b/landing/assets/images/dast.png new file mode 100644 index 0000000..57cb350 Binary files /dev/null and b/landing/assets/images/dast.png differ diff --git a/landing/assets/images/dcm1.jpg b/landing/assets/images/dcm1.jpg new file mode 100644 index 0000000..e9d9639 Binary files /dev/null and b/landing/assets/images/dcm1.jpg differ diff --git a/landing/assets/images/dcm2.jpg b/landing/assets/images/dcm2.jpg new file mode 100644 index 0000000..edbb218 Binary files /dev/null and b/landing/assets/images/dcm2.jpg differ diff --git a/landing/assets/images/dcm3.jpg b/landing/assets/images/dcm3.jpg new file mode 100644 index 0000000..fb1a366 Binary files /dev/null and b/landing/assets/images/dcm3.jpg differ diff --git a/landing/assets/images/facilitiesBg.svg b/landing/assets/images/facilitiesBg.svg new file mode 100644 index 0000000..d7afad1 --- /dev/null +++ b/landing/assets/images/facilitiesBg.svg @@ -0,0 +1,3 @@ + + + diff --git a/landing/assets/images/firsSecBg.png b/landing/assets/images/firsSecBg.png new file mode 100644 index 0000000..38ae670 Binary files /dev/null and b/landing/assets/images/firsSecBg.png differ diff --git a/landing/assets/images/instagraam.png b/landing/assets/images/instagraam.png new file mode 100644 index 0000000..6c8c3e7 Binary files /dev/null and b/landing/assets/images/instagraam.png differ diff --git a/landing/assets/images/navLogo.png b/landing/assets/images/navLogo.png new file mode 100644 index 0000000..1aa36af Binary files /dev/null and b/landing/assets/images/navLogo.png differ diff --git a/landing/assets/images/person.jpg b/landing/assets/images/person.jpg new file mode 100644 index 0000000..1f7e86d Binary files /dev/null and b/landing/assets/images/person.jpg differ diff --git a/landing/assets/images/person2.jpg b/landing/assets/images/person2.jpg new file mode 100644 index 0000000..efbf6e2 Binary files /dev/null and b/landing/assets/images/person2.jpg differ diff --git a/landing/assets/images/person3.jpg b/landing/assets/images/person3.jpg new file mode 100644 index 0000000..cdcd7bb Binary files /dev/null and b/landing/assets/images/person3.jpg differ diff --git a/landing/assets/images/personalsection.png b/landing/assets/images/personalsection.png new file mode 100644 index 0000000..1246b61 Binary files /dev/null and b/landing/assets/images/personalsection.png differ diff --git a/landing/assets/images/samplePage/1.png b/landing/assets/images/samplePage/1.png new file mode 100644 index 0000000..48c7341 Binary files /dev/null and b/landing/assets/images/samplePage/1.png differ diff --git a/landing/assets/images/samplePage/2.png b/landing/assets/images/samplePage/2.png new file mode 100644 index 0000000..633e750 Binary files /dev/null and b/landing/assets/images/samplePage/2.png differ diff --git a/landing/assets/images/samplePage/3.png b/landing/assets/images/samplePage/3.png new file mode 100644 index 0000000..4978385 Binary files /dev/null and b/landing/assets/images/samplePage/3.png differ diff --git a/landing/assets/images/samplePage/4.png b/landing/assets/images/samplePage/4.png new file mode 100644 index 0000000..b3c89a4 Binary files /dev/null and b/landing/assets/images/samplePage/4.png differ diff --git a/landing/assets/images/star.png b/landing/assets/images/star.png new file mode 100644 index 0000000..8878619 Binary files /dev/null and b/landing/assets/images/star.png differ diff --git a/landing/assets/images/telegram.png b/landing/assets/images/telegram.png new file mode 100644 index 0000000..c2c7945 Binary files /dev/null and b/landing/assets/images/telegram.png differ diff --git a/landing/assets/images/treStepBg.svg b/landing/assets/images/treStepBg.svg new file mode 100644 index 0000000..acf6741 --- /dev/null +++ b/landing/assets/images/treStepBg.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/landing/assets/images/whatsap.png b/landing/assets/images/whatsap.png new file mode 100644 index 0000000..546b38c Binary files /dev/null and b/landing/assets/images/whatsap.png differ diff --git a/landing/contact/index.html b/landing/contact/index.html new file mode 100644 index 0000000..77fbee2 --- /dev/null +++ b/landing/contact/index.html @@ -0,0 +1,57 @@ + + + + + +تماس با مطبا | درخواست طراحی سایت پزشکی + + + + + + + + + + + + + + + +
+ +
+ +
+
+

ارتباط با ما

+
+

شماره تماس: 08733730514

+

ایمیل: info@mataba.ir

+

آدرس ما: استان کردستان، شهر سنندج، شهرک بهاران، خیابان دانشجو، دانشگاه پیام‌نور، مرکز رشد، طبقه اول

+
+ +
+

با ما در ارتباط باشید

+
+ + + + +

+ +
+
+
+ +
+ + + diff --git a/landing/css/responsive.css b/landing/css/responsive.css new file mode 100644 index 0000000..b4b5793 --- /dev/null +++ b/landing/css/responsive.css @@ -0,0 +1,88 @@ +/* utilities + responsive — ported responsive behavior of original */ +.container-narrow{width:90%;margin-inline:auto} +@media (max-width:1100px){ + .nav{gap:14px} + .hero-text h1{font-size:32px} + .brand-cta h2{font-size:34px} + .track .tcard{flex-basis:48%} +} +@media (max-width:900px){ + .hamburger{display:inline-flex} + .nav{position:fixed;top:0;left:106%;height:100vh;width:39%;min-width:230px;background:#fff;flex-direction:column;align-items:flex-start;justify-content:flex-start;padding:14px;gap:26px;z-index:90;border-radius:16px 0 0 16px;transition:left .5s;box-shadow:-10px 0 40px rgba(0,0,0,.2)} + body.menu-open .nav{left:61%} + body.menu-open .drawer-backdrop{display:block;position:fixed;inset:0;background:rgba(0,0,0,.7);z-index:80} + .btn-main{min-width:48px;width:48px;height:48px;border-radius:50%;padding:0} + .btn-main .lbl{display:none} + .hero{background:#9EB185 url('../assets/images/firsSecBg.png') no-repeat center/cover;border-radius:20px;min-height:0;padding:22px 16px 16px;gap:14px;align-items:flex-start} + .hero-star{display:none} + .hero-hand-mobile{display:block;align-self:flex-end;width:38%;max-width:180px} + .hero-text{width:60%} + .hero-text h1{font-size:22px;line-height:1.35} + .hero-text .kicker{font-size:12px;padding:6px 10px} + .hero-stats{flex-direction:row;width:100%;max-width:none;min-width:0;order:3;gap:8px} + .hero-stats .stat{flex:1} + .stat>div{padding:10px 4px} + .stat b{font-size:18px} + .stat span{font-size:10px} + .hero{flex-wrap:wrap} + .hero-under{flex-wrap:wrap;gap:12px;margin-top:12px} + .mini-cards{width:100%;flex-direction:row} + .mini-card h3{font-size:11px} + .hand{display:none} + .doctors-card{width:100%} + .steps{width:100%;gap:14px} + .steps::before{top:44px;right:12%;left:12%} + .step .ball{width:84px;height:84px} + .step h3{font-size:13px;max-width:140px} + .step p{font-size:11px} + .steps-bg{padding:24px 14px 28px} + .search-box,.domains{width:92%;max-width:none} + .sample-card{width:30%} + .fac-grid{grid-template-columns:repeat(3,1fr);gap:10px} + .fac{width:auto;margin-top:0;min-height:120px;padding:14px 8px} + .fac p{max-width:120px;font-size:12px} + .facilities{padding:24px 14px 20px;min-height:0;border-radius:20px} + .fac-head p{font-size:12px} + .brand-cta{height:170px;border-radius:12px} + .brand-cta h2{font-size:22px} + .brand-cta p{font-size:12px} + .packages{grid-template-columns:1fr;gap:18px} + .svc{width:100%;max-width:none;position:static} + .svc-panel{min-height:0} + .plan{width:100%;max-width:360px;margin-inline:auto} + .contact-sec,.contact-sec.has-bg{flex-direction:column;background:#9eb18538} + .contact-text,.form-card{width:100%;max-width:560px} + .track .tcard{flex-basis:88%} + .page-hero{flex-direction:column;gap:24px} + .page-hero .txt,.about-frame,.contact-page .side,.dark-form{width:100%;max-width:none} + .about-frame{min-height:0;padding-bottom:0} + .about-frame .main{position:static;width:100%;max-width:420px;margin:0 auto;right:auto;top:auto} + .contact-page{flex-direction:column;gap:20px;align-items:stretch} + .foot-panel .lead{width:100%} +} +@media (max-width:480px){ + .hero{padding:18px 14px 12px;border-radius:16px} + .hero-text{width:58%} + .hero-text h1{font-size:19px} + .hero-text .kicker{font-size:11px;padding:5px 9px} + .btn-store{padding:10px 12px;font-size:13px;border-radius:12px} + .hero-hand-mobile{width:40%} + .hero-stats{gap:8px} + .stat>div{padding:10px 4px} + .stat b{font-size:18px} + .steps{grid-template-columns:1fr;gap:18px;max-width:320px} + .steps::before{display:none} + .step{flex-direction:row;justify-content:flex-start;text-align:right;gap:14px;background:#fff;border-radius:16px;padding:12px;box-shadow:0 10px 24px rgba(0,0,0,.06);border:1px solid rgba(0,0,0,.04)} + .step .ball{width:72px;height:72px} + .step h3{font-size:14px} + .search-box{min-height:56px;padding:4px} + .search-go{width:46px;height:46px} + .domain{min-width:64px;padding:8px 12px;font-size:12px} + .fac-grid{grid-template-columns:repeat(2,1fr);gap:10px} + .fac{min-height:110px} +} +@media (prefers-reduced-motion:reduce){ + html{scroll-behavior:auto} + .track{scroll-behavior:auto} + *{animation:none!important;transition:none!important} +} diff --git a/landing/css/styles.css b/landing/css/styles.css new file mode 100644 index 0000000..31f61cc --- /dev/null +++ b/landing/css/styles.css @@ -0,0 +1,266 @@ +/* Mataba static — ported from sabaHealth-develop app/globals.css + component styles */ +@font-face{font-family:modam;src:url('../assets/fonts/Modam-Regular.ttf');font-weight:500;font-display:swap} +@font-face{font-family:modam;src:url('../assets/fonts/Modam-ExtraLight.ttf');font-weight:300;font-display:swap} +@font-face{font-family:modam;src:url('../assets/fonts/Modam-Bold.ttf');font-weight:700;font-display:swap} +@font-face{font-family:modam;src:url('../assets/fonts/Modam-ExtraBold.ttf');font-weight:900;font-display:swap} +:root{ + --green:#9EB185; --green-2:#9DB281; --dark:#425428; --deep:#014224; + --lime:#99CB35; --gray:#EDEDED; --line:#DFDFDF; --ink:#1d231a; --muted:#5b6656; + --radius:22px; --max:1500px; +} +*{box-sizing:border-box} +html,body{height:100%;margin:0;padding:0} +html{scroll-behavior:smooth} +body{font-family:modam,system-ui,Tahoma,sans-serif;font-size:15px;color:var(--ink);background:#fff;-webkit-font-smoothing:antialiased} +img{max-width:100%;height:auto;display:block} +a{color:inherit} +input,textarea,button{font-family:inherit} +.wrap{width:100%;max-width:var(--max);min-width:320px;margin:0 auto;padding:0 2.5%;display:flex;flex-direction:column;align-items:center} +.skip{position:absolute;right:-9999px;top:0;background:var(--deep);color:#fff;padding:8px 14px;z-index:200;border-radius:0 0 10px 10px} +.skip:focus{right:8px} +/* header */ +.site-header{width:90%;margin:20px 0;min-height:80px;display:flex;justify-content:space-between;align-items:center;gap:12px;position:relative;z-index:60} +.brand{display:inline-flex;align-items:center;gap:10px;text-decoration:none;position:relative} +.brand{display:inline-flex;align-items:center;gap:11px;text-decoration:none;position:relative} +.brand .logo-mark{width:46px;height:46px;border-radius:16px;background:#0f2e1a;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-weight:900;font-size:22px;line-height:1;box-shadow:0 12px 28px rgba(1,66,36,.28), 0 0 0 2px rgba(153,203,53,.18);border:1.5px solid #99CB35;position:relative;overflow:hidden;flex:none;transform:rotate(-3deg)} +.brand .logo-mark::before{content:"";position:absolute;inset:0;background:radial-gradient(120% 120% at 20% 20%, rgba(153,203,53,.28) 0%, transparent 55%);pointer-events:none} +.brand .logo-mark::after{content:"";position:absolute;top:6px;right:8px;width:8px;height:8px;background:var(--lime);border-radius:50%;box-shadow:0 0 0 3px rgba(153,203,53,.22);border:1px solid #fff} +.brand .logo-mark span{position:relative;z-index:1;transform:translateY(1px) rotate(3deg);letter-spacing:.5px} +.brand .logo-text-wrap{display:flex;flex-direction:column;align-items:flex-start;gap:2px;line-height:1} +.brand .logo-text{font-family:modam, sans-serif;font-weight:900;font-size:27px;letter-spacing:-.2px;color:#0f2e1a;line-height:1;background:linear-gradient(180deg,#0f2e1a 0%,#2f5a2f 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text} +.brand .logo-sub{font-family:modam, sans-serif;font-weight:800;font-size:10px;letter-spacing:1px;color:#5a7240;line-height:1;text-transform:uppercase;display:inline-flex;align-items:center;gap:6px} +.brand .logo-sub::before{content:"";width:18px;height:1.5px;background:var(--lime);border-radius:999px} +.brand .logo-sub::after{content:"IR";font-size:7px;font-weight:900;color:#fff;background:var(--deep);padding:1px 4px;border-radius:4px;letter-spacing:.3px} +.brand img{width:150px;height:auto} +.nav{display:flex;gap:22px;align-items:center} +.nav a.nav-link{color:#6b7280;text-decoration:none;font-size:15px;padding:6px 2px;white-space:nowrap} +.nav a.nav-link:hover{color:#111} +.nav a.nav-link.active{font-weight:700;color:#000;border-bottom:3px solid var(--green);border-bottom-left-radius:2px;border-bottom-right-radius:2px} +.header-actions{display:flex;align-items:center;gap:12px} +.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;cursor:pointer;text-decoration:none;font-weight:700} +.btn-main{background:var(--green);color:#fff;min-width:128px;height:44px;border-radius:12px;padding:0 18px;font-size:15px} +.btn-icon{background:#D9D9D980;border:0;width:44px;height:44px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer} +.btn-dark{background:var(--dark);color:#fff;padding:0 22px;height:40px;border-radius:12px;position:relative} +.btn-white{background:#fff;color:var(--deep);padding:12px 22px;border-radius:12px;font-weight:700} +.btn-store{background:#33421eb8;color:#fff;padding:12px 14px;border-radius:12px;font-size:15px;display:inline-flex;gap:8px;align-items:center} +.btn-outline{border:4px solid var(--green);color:#515b44;border-radius:12px;padding:8px 18px;font-weight:900;background:#fff} +.btn-form{background:var(--green);color:#fff;min-width:140px;height:44px;border-radius:12px;padding:0 18px} +.hamburger{display:none;background:none;border:0;cursor:pointer;align-items:center;gap:8px;font-size:14px} +.hamburger .bars{display:flex;flex-direction:column;gap:5px} +.hamburger .bars span{display:block;height:7px;border-radius:8px} +.hamburger .bars span:nth-child(1),.hamburger .bars span:nth-child(3){width:40px;background:#5B6E42} +.hamburger .bars span:nth-child(2){width:20px;background:var(--green)} +.drawer-backdrop{display:none} +:focus-visible{outline:3px solid var(--deep);outline-offset:2px} +/* gradient underlines (from globals.css) */ +.btmBorder,.treeStep,.searchAfter,.facilityAfter,.SampleAfter,.DoctorCmH{position:relative} +.btmBorder::after{content:"";position:absolute;right:50%;transform:translateX(50%) translateY(100%);display:block;width:7em;height:2px;background:linear-gradient(90deg,#99CB3500,#99CB35,#99CB3500)} +.treeStep::after{content:"";position:absolute;right:50%;transform:translateX(50%) translateY(100%);display:block;width:8em;margin-top:.5%;height:2px;background:linear-gradient(90deg,#99CB3500,#99CB35,#99CB3500)} +.searchAfter::after{content:"";position:absolute;right:50%;transform:translateX(50%) translateY(100%);display:block;width:10em;height:2px;background:linear-gradient(90deg,#99CB3500,#99CB35,#99CB3500)} +.facilityAfter::after{content:"";position:absolute;right:8%;display:block;width:5em;height:2px;background:linear-gradient(90deg,#99CB3500,#99CB35,#99CB3500)} +.SampleAfter::after{content:"";position:absolute;right:50%;transform:translateX(50%);display:block;width:11em;height:2px;background:linear-gradient(90deg,#99CB3500,#99CB35,#99CB3500)} +.DoctorCmH::after{content:"";position:absolute;display:block;width:11rem;height:2px;background:linear-gradient(90deg,#99CB3500,#99CB35,#99CB3500)} +/* hero — polished */ +.hero-wrap{width:95%;display:flex;flex-direction:column;align-items:center} +.hero{width:100%;display:flex;justify-content:space-between;align-items:flex-start;gap:20px;padding:38px 36px 28px;border-radius:24px;background:#9EB185 url('../assets/images/firsSecBg.png') no-repeat center/cover;min-height:480px;position:relative;overflow:hidden;box-shadow:0 20px 60px rgba(1,66,36,.18);border:1px solid rgba(255,255,255,.18)} +.hero::before{content:"";position:absolute;inset:0;background:linear-gradient(135deg, rgba(1,66,36,.14) 0%, rgba(1,66,36,0) 60%);pointer-events:none} +.hero-text{width:46%;max-width:520px;color:#fff;display:flex;flex-direction:column;gap:14px;align-items:flex-start;position:relative;z-index:1;padding-top:6px} +.hero-text .kicker{display:inline-flex;align-items:center;gap:8px;font-weight:600;font-size:13px;letter-spacing:.15px;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.24);backdrop-filter:blur(10px);padding:6px 12px;border-radius:999px;line-height:1} +.hero-text h1{font-size:clamp(30px,3vw,42px);line-height:1.28;margin:0;font-weight:900;text-wrap:balance;text-shadow:0 2px 18px rgba(0,0,0,.16);letter-spacing:.1px} +.hero-seo{margin:4px 0 0;font-size:12.5px;line-height:1.75;color:rgba(255,255,255,.96);background:rgba(255,255,255,.13);border:1px solid rgba(255,255,255,.20);backdrop-filter:blur(8px);padding:7px 12px;border-radius:999px;max-width:100%;letter-spacing:.15px;font-weight:500;display:inline-flex;flex-wrap:wrap;gap:4px;align-items:center} +.hero-seo::before{content:"✦";font-size:10px;color:rgba(255,255,255,.9);margin-inline-end:4px} +.btn-store{background:#33421e;border:1px solid rgba(255,255,255,.18);color:#fff;padding:13px 18px;border-radius:14px;font-size:15px;font-weight:800;display:inline-flex;gap:10px;align-items:center;box-shadow:0 10px 24px rgba(0,0,0,.18);transition:transform .2s, box-shadow .2s, background .2s} +.btn-store:hover{transform:translateY(-1px);background:#2f3d1c;box-shadow:0 14px 32px rgba(0,0,0,.22)} +.btn-store:active{transform:translateY(0)} +.hero-star{width:22%;max-width:220px;aspect-ratio:1;min-height:0;background:url('../assets/images/star.png') no-repeat center/contain;display:flex;align-items:center;justify-content:center;color:#fff;text-align:center;filter:drop-shadow(0 12px 28px rgba(0,0,0,.22));position:relative;z-index:1;animation:floatStar 6s ease-in-out infinite} +.hero-star>div{display:flex;flex-direction:column;align-items:center;gap:2px;padding:10px} +.hero-star b{font-size:32px;line-height:1;font-weight:900;display:block;letter-spacing:.2px} +.hero-star span{font-size:13px;line-height:1.4;opacity:.95} +@keyframes floatStar{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}} +.hero-stats{width:32%;max-width:360px;min-width:280px;display:flex;flex-direction:row;gap:10px;align-items:stretch;position:relative;z-index:1;align-self:center;margin-inline-start:auto} +.stat{flex:1;min-width:0;padding:1.2px;border-radius:16px;background:linear-gradient(135deg, rgba(255,255,255,.32), rgba(255,255,255,.10), rgba(1,66,36,.36));box-shadow:0 12px 28px rgba(0,0,0,.16);transition:transform .2s, box-shadow .2s;overflow:hidden} +.stat:hover{transform:translateY(-3px);box-shadow:0 16px 36px rgba(0,0,0,.20)} +.stat>div{background:linear-gradient(180deg, rgba(146,165,120,.96) 0%, rgba(124,147,98,.94) 100%);backdrop-filter:blur(16px);border-radius:15px;width:100%;padding:14px 6px;text-align:center;color:#fff;border:1px solid rgba(255,255,255,.26);position:relative} +.stat b{font-size:26px;font-weight:900;display:block;line-height:1;letter-spacing:.2px;text-shadow:0 1px 10px rgba(0,0,0,.12)} +.stat span{font-size:11.5px;opacity:.96;letter-spacing:.15px;font-weight:600} +.hero-hand-mobile{display:none;width:30%;filter:drop-shadow(0 16px 32px rgba(0,0,0,.22))} +.hero-under{width:100%;display:flex;justify-content:space-between;align-items:flex-end;margin-top:-26px;position:relative;z-index:2} +.mini-cards{width:28%;display:flex;flex-direction:column;gap:10px} +.mini-card{background:#fff;border-radius:16px;box-shadow:0 20px 40px rgba(0,0,0,.18);display:flex;gap:8px;align-items:center;padding:10px;min-height:74px} +.mini-card .ic{background:#9DB2814D;border-radius:12px;width:52px;height:52px;display:flex;align-items:center;justify-content:center;flex:none} +.mini-card h3{margin:0;font-size:16px} +.mini-card p{margin:2px 0 0;font-size:13px;color:var(--muted)} +.hand{width:44%;display:flex;justify-content:flex-end} +.hand img{max-width:420px;width:100%} +.doctors-card{width:32%;background:#E5E5E5;border-radius:16px;display:flex;align-items:center;justify-content:space-between;padding:12px 16px;gap:10px} +.avatars{display:flex} +.avatars img{width:64px;height:64px;border-radius:50%;border:4px solid #fff;object-fit:cover;margin-inline-start:-14px} +.doctors-card h3{margin:0;font-size:34px} +.doctors-card p{margin:0;color:var(--muted)} +/* call strips — 3 unique, balanced spacing */ +.call-strip{width:100%;max-width:860px;display:flex;align-items:center;justify-content:space-between;gap:16px;border-radius:20px;padding:16px 20px;box-shadow:0 16px 36px rgba(45,62,28,.14);border:1px solid rgba(255,255,255,.16);position:relative;overflow:hidden} +.call-strip p{margin:0;font-size:14px;font-weight:600;line-height:1.6;display:flex;align-items:center;gap:8px;flex-wrap:wrap;position:relative;z-index:1} +.call-strip p::before{width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;font-size:16px;flex:none} +.call-strip p a{font-weight:800;letter-spacing:.2px;text-decoration:none;padding-bottom:1px} +.call-strip .btn-call{padding:10px 18px;border-radius:999px;font-weight:800;font-size:13px;white-space:nowrap;box-shadow:0 8px 18px rgba(0,0,0,.12);transition:transform .18s, box-shadow .18s;position:relative;z-index:1;border:1px solid rgba(0,0,0,.04)} +.call-strip .btn-call:hover{transform:translateY(-2px);box-shadow:0 12px 28px rgba(0,0,0,.16)} +.call-strip--hero{margin:24px auto 8px;background:linear-gradient(135deg,#425428 0%,#6b8a52 100%);color:#fff;border:1px solid rgba(255,255,255,.16)} +.call-strip--hero::before{content:"";position:absolute;inset:0;background:linear-gradient(180deg, rgba(255,255,255,.10) 0%, transparent 60%);pointer-events:none} +.call-strip--hero p::before{content:"📞";background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.22);color:#fff} +.call-strip--hero p a{color:#fff;border-bottom:1px dashed rgba(255,255,255,.6)} +.call-strip--hero .btn-call{background:#fff;color:var(--deep)} +.call-strip--samples{margin:20px auto 28px;background:#f8faf6;color:var(--ink);border:1px solid #e6ece1;box-shadow:0 12px 28px rgba(0,0,0,.06)} +.call-strip--samples p::before{content:"✦";background:#eef3e8;border:1px solid #d6e4cc;color:var(--deep)} +.call-strip--samples p a{color:var(--deep);border-bottom:1px dashed #a8c19a} +.call-strip--samples .btn-call{background:var(--deep);color:#fff} +.call-strip--packages{margin:28px auto 8px;background:linear-gradient(135deg,#1a2e1a 0%,#2f4a2f 100%);color:#e8f0e0;border:1px solid rgba(255,255,255,.10)} +.call-strip--packages p::before{content:"✓";background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.18);color:#fff} +.call-strip--packages p a{color:#e8f0e0;border-bottom:1px dashed rgba(255,255,255,.5)} +.call-strip--packages .btn-call{background:var(--lime);color:#1a2e1a} +@media (max-width:640px){.call-strip{flex-direction:column;text-align:center;padding:14px 16px;gap:12px}.call-strip p{justify-content:center}} +/* section generic */ +.section{width:100%;display:flex;flex-direction:column;align-items:center;text-align:center} +.eyebrow{color:var(--muted);margin:0} +.h2{font-size:30px;margin:14px 0 30px;font-weight:700} +/* steps/search — fixed layout */ +.toDown{width:44px;padding:26px 0 8px;border-radius:20px;background:linear-gradient(to bottom,#fff,#0142243a,#014224a8);display:flex;justify-content:center;margin:18px auto 0;box-shadow:0 8px 20px rgba(1,66,36,.12)} +.steps-bg{width:100%;background:url('../assets/images/treStepBg.svg') no-repeat top center;background-size:cover;padding:32px 20px 36px;border-radius:24px;position:relative;overflow:hidden} +.steps-bg .eyebrow{font-size:14px;letter-spacing:.2px;background:rgba(255,255,255,.9);display:inline-block;padding:6px 14px;border-radius:999px;border:1px solid var(--line);color:var(--muted);margin:0 auto} +.steps-bg .h2{max-width:560px;margin-inline:auto} +.steps{display:grid;grid-template-columns:repeat(3, 1fr);gap:24px;max-width:900px;margin:28px auto 0;position:relative;align-items:start} +.steps::before{content:"";position:absolute;top:58px;right:16%;left:16%;height:2px;background:repeating-linear-gradient(90deg, var(--green) 0 8px, transparent 8px 14px);opacity:.35;pointer-events:none} +.step{display:flex;flex-direction:column;align-items:center;gap:14px;text-align:center;position:relative;z-index:1;min-width:0} +.step .ball{width:110px;height:110px;background:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:0 12px 32px rgba(0,0,0,.10);border:1px solid rgba(0,0,0,.04);flex:none} +.step p{margin:0;font-size:13px;color:var(--muted);letter-spacing:.1px} +.step h3{margin:0;font-size:16px;font-weight:800;line-height:1.4;max-width:200px} +.search-box{background:var(--gray);width:100%;max-width:720px;min-height:62px;border-radius:16px;display:flex;align-items:center;justify-content:space-between;padding:6px 6px 6px 14px;margin:48px auto 0;gap:10px;box-shadow:0 12px 32px rgba(0,0,0,.06);border:1px solid rgba(0,0,0,.04)} +.search-box input{border:0;background:transparent;outline:0;width:100%;font-size:16px;padding:12px;color:var(--ink)} +.search-box input::placeholder{color:#9aa3a0} +.search-go{width:52px;height:50px;background:var(--green-2);border:0;border-radius:12px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex:none;transition:transform .15s, filter .15s} +.search-go:hover{transform:translateY(-1px);filter:brightness(1.05)} +.domains{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;max-width:720px;margin:18px auto 0;padding:0 10px} +.domain{background:#E7EBE1;border:1px solid rgba(0,0,0,.04);border-radius:999px;min-width:72px;padding:9px 14px;cursor:pointer;font-size:13px;font-weight:600;transition:transform .15s, background .15s} +.domain:hover{background:#dde5d6;transform:translateY(-1px)} +/* samples */ +.cards{display:flex;width:100%;justify-content:space-evenly;flex-wrap:wrap;gap:14px} +.sample-card{width:23%;background:url('../assets/images/card.svg') no-repeat center/contain;padding:14px 10px 18px;display:flex;flex-direction:column;align-items:center} +.stars{display:flex;gap:6px;align-items:center;justify-content:center} +.sample-card h3{color:var(--deep);margin:10px 0;font-size:18px} +.sample-img{position:relative;width:90%;aspect-ratio:3/4;border-radius:10px;overflow:hidden} +.sample-img img{width:100%;height:100%;object-fit:cover} +.sample-img::after{content:"";position:absolute;inset:0;background:linear-gradient(to bottom,#9db2811c,#9db2813a,#9DB281)} +.sample-view{position:relative;bottom:16px;z-index:2;background:#fff;border:0;border-radius:10px;padding:6px 12px;display:inline-flex;gap:8px;align-items:center;cursor:pointer} +/* facilities — polished, no overlap */ +.facilities{width:100%;min-height:380px;background:#425428 url('../assets/images/facilitiesBg.svg') no-repeat center/cover;display:flex;flex-direction:column;justify-content:center;position:relative;margin:48px 0;border-radius:24px;overflow:hidden;padding:40px 28px 32px;box-shadow:0 20px 60px rgba(1,66,36,.14)} +.facilities::before{content:"";position:absolute;inset:0;background:linear-gradient(180deg, rgba(255,255,255,.06) 0%, rgba(1,66,36,.18) 100%);pointer-events:none} +.fac-circle{position:absolute;left:-40px;top:-40px;width:280px;opacity:.18;pointer-events:none;filter:blur(1px)} +.fac-head{color:#fff;text-align:right;position:relative;z-index:1;padding:0;display:flex;flex-direction:column;gap:8px;align-items:flex-start} +.fac-head p{margin:0;font-size:14px;letter-spacing:.2px;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.22);backdrop-filter:blur(8px);padding:6px 12px;border-radius:999px;display:inline-flex} +.fac-head h2{margin:0;font-size:clamp(22px,2.4vw,32px);font-weight:900;line-height:1.25;text-wrap:balance;text-shadow:0 2px 18px rgba(0,0,0,.18)} +.fac-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:16px;align-items:stretch;margin-top:36px;position:relative;z-index:1} +.fac{background:linear-gradient(180deg,#ffffff 0%,#fbfcfa 100%);border-radius:22px;box-shadow:0 14px 32px rgba(0,0,0,.12);display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:12px;padding:20px 12px 16px;font-size:14px;text-align:center;border:1px solid rgba(0,0,0,.05);transition:transform .2s, box-shadow .2s, border-color .2s;min-height:148px;position:relative;overflow:hidden} +.fac::before{content:"";position:absolute;top:0;left:12%;right:12%;height:3px;background:linear-gradient(90deg, transparent, var(--lime) 50%, transparent);opacity:.9} +.fac:hover{transform:translateY(-4px);box-shadow:0 20px 48px rgba(0,0,0,.16);border-color:rgba(153,203,53,.28)} +.fac span[aria-hidden="true"]{width:52px;height:52px;display:inline-flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#9DB281 0%,#7a9a62 100%);color:#fff;border-radius:14px;font-size:18px;font-weight:900;flex:none;box-shadow:0 8px 18px rgba(77,104,58,.22);border:1px solid rgba(255,255,255,.6)} +.fac p{margin:0;line-height:1.6;font-weight:700;font-size:13px;max-width:140px;color:#1d231a} +/* brand cta */ +.brand-cta{width:100%;height:400px;border-radius:24px;background:url('../assets/images/personalsection.png') center/cover no-repeat;position:relative;overflow:hidden;margin:48px 0} +.brand-cta .overlay{position:absolute;inset:0;background:linear-gradient(to right,#b8c4a640,#425428);display:flex;align-items:center;justify-content:space-between;padding:0 5%;color:#fff;gap:16px} +.brand-cta h2{font-size:46px;margin:0 0 10px;font-weight:900;line-height:1.4} +.brand-cta p{margin:0;font-size:19px} +/* packages — clean grid, aligned rows */ +.packages{display:grid;grid-template-columns:320px repeat(3, 1fr);gap:16px;width:100%;align-items:start} +.svc{text-align:right;position:sticky;top:20px} +.svc-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;padding:0 4px} +.svc-head h3{margin:0;font-size:16px;font-weight:800} +.svc-panel{background:linear-gradient(180deg,#6f7f5c 0%,#8ea47e 55%,#9DB281 100%);border-radius:22px;color:#fff;padding:22px 18px;min-height:520px;box-shadow:0 16px 40px rgba(66,84,40,.18);border:1px solid rgba(255,255,255,.14)} +.svc-panel ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:0;font-size:13px} +.svc-panel li{display:flex;align-items:center;gap:10px;padding:0 10px;height:44px;border-bottom:1px solid rgba(255,255,255,.14);line-height:1.4} +.svc-panel li:last-child{border-bottom:0} +.svc-panel li::before{content:"•";color:rgba(255,255,255,.85);font-weight:900} +.plan{background:#fff;border-radius:22px;box-shadow:0 16px 36px rgba(0,0,0,.10);padding:20px 14px 56px;position:relative;display:flex;flex-direction:column;align-items:stretch;border:1px solid rgba(0,0,0,.06);transition:transform .18s, box-shadow .18s, border-color .18s} +.plan:hover{transform:translateY(-3px);box-shadow:0 20px 48px rgba(0,0,0,.14);border-color:#d6e4cc} +.plan .top{border-bottom:1px solid rgba(0,0,0,.08);padding-bottom:14px;margin-bottom:8px;text-align:center} +.plan .top p{margin:0} +.plan .top b{font-size:15px} +.plan .price{font-weight:900;font-size:18px;margin:6px 0 2px} +.plan .per{font-size:12px;color:#6b7a6e} +.plan .rows{display:flex;flex-direction:column;gap:0;align-items:stretch;min-height:0} +.plan .rows span{display:flex;align-items:center;justify-content:center;height:44px;border-bottom:1px solid rgba(0,0,0,.04);font-size:16px} +.plan .rows span:last-child{border-bottom:0} +.plan .rows span:nth-child(9){color:#c0392b} +.plan .btn-dark{position:absolute;bottom:-14px;left:50%;transform:translateX(-50%);white-space:nowrap;box-shadow:0 10px 20px rgba(66,84,40,.18)} +/* contact */ +.contact-sec{width:100%;background:#9eb18538;border-radius:16px;display:flex;justify-content:space-between;align-items:center;padding:14px;margin:28px 0;gap:16px} +.contact-sec.has-bg{background:#fff url('../assets/images/contactUs.png') no-repeat center/contain} +.contact-text{width:42%;text-align:right;padding:34px} +.contact-text h2{font-size:30px;margin:0 0 10px} +.social{display:flex;gap:10px;margin-top:16px} +.social a{background:#fff;border-radius:50%;padding:8px;box-shadow:0 10px 20px rgba(0,0,0,.15);display:inline-flex} +.form-card{background:#fff;border-radius:16px;box-shadow:0 20px 50px rgba(0,0,0,.2);padding:22px;width:480px;max-width:46%} +.form-card h2{font-size:26px;margin:6px 0 14px} +.form-card .sub{color:var(--muted)} +.form-card form{display:flex;flex-direction:column;gap:12px} +.frow{display:flex;gap:10px} +.frow input,.form-card textarea{border:2px solid var(--line);border-radius:14px;padding:10px;width:100%;font-size:14px} +.form-card textarea{min-height:150px;resize:vertical} +.ferr{color:#c0392b;font-size:13px;min-height:18px;margin:0;text-align:right} +.fok{color:#1e7e34;font-size:13px;min-height:18px;margin:0} +/* testimonials — clean, airy */ +.voices{width:100%;text-align:right;margin:48px 0 10px;position:relative} +.voices .eyebrow{display:inline-flex;background:rgba(158,177,133,.14);border:1px solid rgba(158,177,133,.22);color:var(--muted);padding:6px 12px;border-radius:999px;font-size:12px;letter-spacing:.1px} +.voices h2{font-size:clamp(22px,2.2vw,30px);font-weight:900;line-height:1.3;margin:12px 0 0;text-wrap:balance} +.carousel{position:relative;width:100%;margin:28px 0 52px;padding-top:8px} +.car-nav{position:absolute;top:-4px;left:4px;display:flex;gap:10px;z-index:2} +.car-nav button{background:#fff;border:1px solid var(--line);border-radius:50%;width:42px;height:42px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;box-shadow:0 8px 20px rgba(0,0,0,.08);font-size:18px;line-height:1;color:#1d231a;transition:transform .15s, box-shadow .15s, border-color .15s} +.car-nav button:hover{transform:translateY(-1px);box-shadow:0 12px 28px rgba(0,0,0,.12);border-color:#cbd5c2} +.track{display:flex;gap:18px;overflow-x:auto;overflow-y:hidden;scroll-behavior:smooth;padding:48px 2px 10px;scrollbar-width:none} +.track::-webkit-scrollbar{display:none} +.tcard{flex:0 0 32%;background:#fff;border-radius:22px;box-shadow:0 16px 40px rgba(0,0,0,.10);padding:22px 18px 18px;min-height:240px;text-align:center;border:1px solid rgba(0,0,0,.04);position:relative;transition:transform .18s, box-shadow .18s} +.tcard:hover{transform:translateY(-2px);box-shadow:0 20px 48px rgba(0,0,0,.14)} +.tcard::before{content:"“";position:absolute;top:10px;right:18px;font-size:64px;line-height:1;color:rgba(158,177,133,.18);font-weight:900;pointer-events:none} +.tcard blockquote{margin:10px 0 24px;font-size:15px;line-height:1.9;min-height:84px;color:#1d231a;font-weight:500} +.tperson{position:relative;padding-top:8px} +.tperson img{width:84px;height:84px;border-radius:50%;object-fit:cover;margin:-62px auto 10px;display:block;border:4px solid #fff;box-shadow:0 10px 24px rgba(0,0,0,.14)} +.tperson b{display:block;font-size:15px;font-weight:800;line-height:1.4} +.tperson span{display:block;color:var(--muted);font-size:12px;line-height:1.6} +.trate{color:#AC970B;letter-spacing:1px;font-size:14px;gap:2px;margin-top:6px;display:flex;justify-content:center} +/* footer — polished, frame preserved */ +.site-footer{width:90%;max-width:var(--max);margin:36px 0 24px} +.foot-panel{background:var(--green-2);border-radius:28px;padding:32px 24px 22px;display:flex;flex-direction:column;align-items:center;gap:18px;color:rgba(0,0,0,.62);text-align:center;box-shadow:0 20px 60px rgba(66,84,40,.12);border:1px solid rgba(255,255,255,.22);position:relative;overflow:hidden} +.foot-panel::before{content:"";position:absolute;inset:0;background:linear-gradient(180deg, rgba(255,255,255,.18) 0%, rgba(255,255,255,0) 55%);pointer-events:none} +.foot-panel img{position:relative;z-index:1;filter:drop-shadow(0 8px 18px rgba(0,0,0,.12))} +.foot-panel .lead{width:80%;max-width:760px;color:rgba(0,0,0,.62);line-height:2.15;font-size:15px;font-weight:500;position:relative;z-index:1;margin:0;text-wrap:balance} +.foot-panel .social{position:relative;z-index:1;gap:12px;margin-top:4px} +.foot-panel .social a{background:#fff;border:1px solid rgba(0,0,0,.06);border-radius:50%;width:44px;height:44px;padding:0;display:inline-flex;align-items:center;justify-content:center;box-shadow:0 10px 20px rgba(0,0,0,.12);transition:transform .18s, box-shadow .18s, border-color .18s} +.foot-panel .social a:hover{transform:translateY(-2px);box-shadow:0 14px 28px rgba(0,0,0,.16);border-color:rgba(0,0,0,.10)} +.foot-panel .social a img{width:22px;height:22px;filter:none} +.foot-small{border-top:1px solid rgba(0,0,0,.14);padding-top:16px;width:min(92%, 880px);font-size:13px;line-height:1.9;color:rgba(0,0,0,.60);font-weight:500;position:relative;z-index:1;margin:6px 0 0;text-wrap:balance} +.foot-panel nav{position:relative;z-index:1;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:6px 10px;font-size:13px;color:rgba(0,0,0,.62)} +.foot-panel nav a{color:rgba(0,0,0,.68);text-decoration:none;padding:4px 6px;border-radius:8px;transition:background .15s, color .15s} +.foot-panel nav a:hover{background:rgba(255,255,255,.55);color:#1a1a1a} +/* modal */ +.modal-back{position:fixed;inset:0;background:rgba(0,0,0,.7);display:none;align-items:center;justify-content:center;z-index:100;padding:16px} +.modal-back.open{display:flex} +.modal{background:#fff;border-radius:16px;width:420px;max-width:94vw;padding:22px;position:relative;text-align:center} +.modal h2{font-size:22px;margin:0 0 6px} +.modal .x{position:absolute;top:10px;right:10px;background:none;border:0;cursor:pointer;font-size:20px} +.modal input[type=tel]{height:44px;border-radius:12px;width:100%;border:2px solid var(--green);outline:0;padding:8px;font-size:17px;direction:ltr;text-align:left} +.modal label{display:flex;align-items:center;gap:6px;color:#949494;width:100%;justify-content:flex-start} +/* pages — balanced */ +.page-hero{width:90%;margin:30px 0;display:flex;gap:6%;align-items:center;justify-content:space-between} +.page-hero .txt{width:54%;min-width:0} +.page-hero h1{font-size:36px;margin:0 0 12px;line-height:1.3} +.page-hero p.lead{font-size:17px;line-height:2.05;text-align:justify;color:var(--ink)} +.about-frame{width:38%;position:relative;min-height:460px;display:flex;flex-direction:column;align-items:center} +.about-frame .main{width:78%;border-radius:12px;position:absolute;top:6%;right:11%;box-shadow:0 16px 40px rgba(0,0,0,.12);border:1px solid rgba(0,0,0,.04)} +.info-list{display:flex;flex-direction:column;gap:22px;margin-top:28px} +.info-row{display:flex;gap:12px;align-items:flex-start;font-size:19px} +.contact-page{display:flex;width:90%;margin:34px 0;gap:32px;align-items:flex-start;position:relative} +.contact-page .side{width:52%;min-width:0} +.dark-form{background:rgba(66,84,40,.88);color:#fff;border-radius:24px;padding:24px;width:42%;max-width:480px;box-shadow:0 20px 50px rgba(0,0,0,.14);border:1px solid rgba(255,255,255,.12)} +.dark-form input,.dark-form textarea{background:#fff;border:0;border-radius:12px;padding:12px;width:100%;font-size:15px;color:#333} +.dark-form form{display:flex;flex-direction:column;gap:12px} +.note{background:#fef9e7;border:1px solid #f5d547;border-radius:12px;padding:12px 14px;font-size:14px;line-height:2;color:#5b4c00} +.breadcrumb{width:90%;font-size:13px;color:var(--muted);margin-top:14px} +.breadcrumb a{text-decoration:none} diff --git a/landing/css/utilities.css b/landing/css/utilities.css new file mode 100644 index 0000000..1a89e7c --- /dev/null +++ b/landing/css/utilities.css @@ -0,0 +1,5 @@ +/* small utilities */ +.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap} +.ltr{direction:ltr;unicode-bidi:embed} +.center{text-align:center} +.mt-2{margin-top:8px}.mt-4{margin-top:16px} diff --git a/landing/docs/component-migration-map.md b/landing/docs/component-migration-map.md new file mode 100644 index 0000000..780f898 --- /dev/null +++ b/landing/docs/component-migration-map.md @@ -0,0 +1,59 @@ +# Mataba — Component Migration Map (Saba Health → Mataba static) + +Source: `C:\Users\hemn\Desktop\sabaHealth-develop` (Next.js 16 + React 19 + Tailwind 4) +Target: `C:\Users\hemn\Desktop\mataba-static` (HTML5 + CSS3 + vanilla JS, no Next/React) +Brand: Saba Health / صبا هلث → Mataba / مطبا, canonical domain `https://mataba.ir` + +## Global / shell + +| Original | Path | Purpose / visible content | Tokens / assets | Behavior | Destination (static) | Approach | Limits | +|---|---|---|---|---|---|---|---| +| RootLayout | `app/layout.tsx` | ``, Geist vars, metadata title `صبا هلث`, desc `طراحی سایت مختص پزشکان`, icon `/images/navLogo.png`, centers `max-w-[1500px]`, mounts Navbar+ModalProvider | max-width 1500, min 320 | static shell | `index.html / about/index.html / contact/index.html` ``+header | Rewrite as plain HTML shell, keep RTL/fa, replace brand + canonical `https://mataba.ir/...` | Geist dropped; Modam kept | +| globals.css | `app/globals.css` | Tailwind import, Modam `@font-face` ×4, `body{font-family:modam}`, `.active` nav underline `#9EB185`, gradient underlines `.btmBorder/.treeStep/.searchAfter/.facilityAfter/.SampleAfter/.DoctorCmH` with `#99CB35` gradient, radius tokens, oklch theme | `#9EB185 #99CB35 #014224 #425428`, Modam TTFs | none | `css/styles.css` + `css/utilities.css` | Hand-port font-face (paths `../assets/fonts/...`), underline classes, tokens as CSS vars | Tailwind utilities flattened to plain CSS; oklch theme simplified | +| constants | `core/constants/global.ts` | All copy: navLinks, FirstSectionwhiteBoxes, PackageDetailsItem (10), Steps (3), domains (6), cardDetails (4), FacilitiyItems (6), DoctorComments (7), greeBoxDetail (3), contactUs (4) | — | data only | inlined into HTML sections | Copy text verbatim (fa), rebrand mentions; prices/testimonials flagged unverified | Claims (1200 sites, 98%, 800 doctors, prices) need owner approval | +| layoutContext | `context/layoutContext.tsx` | `openHambergurMenue` boolean | — | hamburger toggle | `js/main.js` `toggleMenu()` | Vanilla class toggle | — | +| Modal provider + sign-in + confirm | `components/ui/molecule/Modal/{provider,sign-in-modal,confirm-login-modal}.tsx` | Phone modal: label شماره موبایل, input `09123456789`, validation `^09\d{9}$` (`features/auth/login.schema.ts`), error text, ادامه button; confirm modal empty | border `#9EB185`, btn `#9EB185` | open via ورود/ثبت‌نام, close on backdrop/X, fake submit → opens confirm | Login modal in all pages (`#loginModal`), `js/main.js` open/close + regex validation | Re-implement validation message in fa; submit shows demo notice, no backend | No backend endpoint exists — documented as TODO | +| Button | `components/ui/atom/Button/index.tsx` | Variants: main_btn `#9EB185`, search_btn, packages_btn `#425428`, Personal_btn, domainBtn `#E7EBE1`, searchInput `#9DB281`, FormBtn, create_my_store `#33421eb8`, packages outline | see tokens | — | `.btn*` classes in `styles.css` | Plain ` + مطباmataba.ir + +
+ +
+ +
+ +
+ +
+
+

مطبا — طراحی یه سایت حرفه‌ای برای برند پزشکت

+

فقط در سه مرحله، سایت
پزشکیت آماده‌ست!

+ ساخت فروشگاه من +

طراحی سایت پزشکی · وب‌سایت اختصاصی پزشک · برند شخصی پزشک · نوبت‌دهی آنلاین با مطبا

+
+ +
+۱,۲۰۰سایت پزشکان
+
٪۹۸رضایت
+
۷-۱۰دقیقه تحویل
+
+
+
۱۰ سالسابقه در زمینه پزشکی
+ +
+ + +
+
+

طراحی اختصاصی

بر اساس رنگ و برند شخصی شما

+

بدون نیاز به کدنویسی

فقط فرم رو پر کن، سایت آماده‌ست

+

سریع و حرفه‌ای

تحویل کمتر از ۵ روز

+
+ +
+
پزشک همکار مطباپزشک همکار مطباپزشک همکار مطبا
+

+۸۰۰

همکاری با پزشکان

+
+
+

سوالی داری؟ با مطبا تماس بگیر — طراحی سایت پزشکی با مشاوره رایگان 08733730514

دریافت مشاوره
+ + + + + +
+

نمونه طراحی‌های مطبا — طراحی سایت پزشکی با مطبا

+

طراحی‌هایی مطابق با هویت برند پزشکان با مطبا

+
+

دندانپزشکی

نمونه طراحی سایت دندانپزشکی مطبا
+

پزشک عمومی

نمونه طراحی سایت پزشک عمومی مطبا
+

پزشک زیبایی

نمونه طراحی سایت پزشک زیبایی مطبا
+

جراح

نمونه طراحی سایت جراح مطبا
+
+
+

نمونه‌کار پزشکی دیدی؟ برای وب‌سایت اختصاصی پزشک — سئو و نمونه‌کار حرفه‌ای 08733730514

مشاهده نمونه‌کارها
+ + +
+ +

امکانات وب‌سایت پزشکان با مطبا

هر چیزی که برای حضور آنلاین با مطبا نیاز داری

+
+

صفحه معرفی تخصص

+

بخش تماس و نوبت‌دهی

+

فروش محصوات پزشکی

+

گالری نمونه‌کار و نتایج

+

سئو و بهینه‌سازی

+

اتصال به گوگل

+
+
+ + +
+

برند شخصی پزشکیت رو با مطبا
همین امروز بساز

مطبا — طراحی سایت اختصاصی پزشک؛ تو فقط کارت رو بده، ما برات هویت دیجیتال می‌سازیم.

ساخت وب‌سایت من همین حالا
+
+ + +
+

پکیج‌ها و قیمت‌ها

+

پکیج مناسب تخصص خودت رو انتخاب کن

+
+

دریافت سرویس

جزئیات سرویس‌ها

+
    +
  • طراحی اختصاصی لوگو
  • ساخت سایت واکنش‌گرا
  • دامنه و هاست رایگان
  • پنل مدیریت ساده
  • درگاه پرداخت آنلاین
  • فرم نوبت‌دهی سریع
  • سئو و بهینه‌سازی پایه
  • پشتیبانی فنی رایگان
  • امکان افزودن وبلاگ
  • اتصال به واتساپ و اینستاگرام
  • +
+
+ + + +
+
+

برای انتخاب پکیج و پنل نوبت‌دهی آنلاین سوالی داری؟ 08733730514 — پشتیبانی مطبا

گفت‌وگو با کارشناس
+ + +
+

با ما در ارتباط باشید ...

سوال یا درخواستی دارید؟ تیم مطبا آماده پاسخگویی به شماست! از طریق فرم روبه‌رو با ما در ارتباط باشید.

+ +
+

شروع طراحی وب‌سایت اختصاصی من

فرم ثبت درخواست

+
+
+
+ +

+
+
+
+
+ + +
+

نظرات پزشکان

+

نظر پزشکانی که به ما اعتماد کردند

+ +
+
+ + + + + + + diff --git a/landing/index.html.ftfy b/landing/index.html.ftfy new file mode 100644 index 0000000..b6dfb9f --- /dev/null +++ b/landing/index.html.ftfy @@ -0,0 +1,205 @@ + + + + + +مطبا | طراØÛŒ سایت پزشکان Ùˆ برند شخصی پزشک + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ +
+
+

مطبا — طراØÛŒ یه سایت ØØ±ÙÙ‡â€ŒØ§ÛŒ برای برند پزشکت

+

فقط در سه مرØÙ"ه، سایت
پزشکیت آماده‌ست!

+ ساخت فروشگاه من +

طراØÛŒ سایت پزشکی · وب‌سایت اختصاصی پزشک · برند شخصی پزشک · نوبت‌دهی آنلاین با مطبا

+
+ +
+۱,۲۰۰سایت پزشکان
+
٪۹۸رضایت
+
Û·-Û±Û°دقیقه تØÙˆÛŒÙ"
+
+
+
۱۰ سالسابقه در زمینه پزشکی
+ +
+ + +
+
+

طراØÛŒ اختصاصی

بر اساس رنگ Ùˆ برند شخصی شما

+

بدون نیاز به کدنویسی

فقط فرم رو پر کن، سایت آماده‌ست

+

سریع Ùˆ ØØ±ÙÙ‡â€ŒØ§ÛŒ

تØÙˆÛŒÙ" کمتر از Ûµ روز

+
+ +
+
پزشک همکار مطباپزشک همکار مطباپزشک همکار مطبا
+

+۸۰۰

همکاری با پزشکان

+
+
+

سوالی داری؟ با مطبا تماس بگیر — 08733730514

زنگ بزن
+ + + + + +
+

نمونه طراØÛŒâ€ŒÙ‡Ø§ÛŒ مطبا — طراØÛŒ سایت پزشکی با مطبا

+

طراØÛŒâ€ŒÙ‡Ø§ÛŒÛŒ مطابق با هویت برند پزشکان با مطبا

+
+

دندانپزشکی

نمونه طراØÛŒ سایت دندانپزشکی مطبا
+

پزشک عمومی

نمونه طراØÛŒ سایت پزشک عمومی مطبا
+

پزشک زیبایی

نمونه طراØÛŒ سایت پزشک زیبایی مطبا
+

جراØ

نمونه طراØÛŒ سایت Ø¬Ø±Ø§Ø Ù…Ø·Ø¨Ø§
+
+
+

نمونه‌کارت رو دیدی؟ سوالی داری زنگ بزن — 08733730514

تماس با مطبا
+ + +
+ +

امکانات وب‌سایت پزشکان با مطبا

هر چیزی Ú©Ù‡ برای ØØ¶ÙˆØ± آنلاین با مطبا نیاز داری

+
+

صفØÙ‡ معرفی تخصص

+

بخش تماس و نوبت‌دهی

+

فروش Ù…ØØµÙˆÙ"ات پزشکی

+

گالری نمونه‌کار و نتایج

+

سئو و بهینه‌سازی

+

اتصال به گوگل

+
+
+ + +
+

برند شخصی پزشکیت رو با مطبا
همین امروز بساز

مطبا — طراØÛŒ سایت اختصاصی پزشک؛ تو فقط کارت رو بده، ما برات هویت دیجیتال می‌سازیم.

ساخت وب‌سایت من همین ØØ§Ù"ا
+
+ + +
+

پکیج‌ها و قیمت‌ها

+

پکیج مناسب تخصص خودت رو انتخاب کن

+
+

دریافت سرویس

جزئیات سرویس‌ها

+
    +
  • طراØÛŒ اختصاصی لوگو
  • ساخت سایت واکنش‌گرا
  • دامنه Ùˆ هاست رایگان
  • پنل مدیریت ساده
  • درگاه پرداخت آنلاین
  • فرم نوبت‌دهی سریع
  • سئو Ùˆ بهینه‌سازی پایه
  • پشتیبانی فنی رایگان
  • امکان افزودن وبلاگ
  • اتصال به واتساپ Ùˆ اینستاگرام
  • +
+
+ + + +
+
+

برای انتخاب پکیج سوالی داری؟ زنگ بزن — 08733730514

مشاوره رایگان
+ + +
+

با ما در ارتباط باشید ...

سوال یا درخواستی دارید؟ تیم مطبا آماده پاسخگویی به شماست! از طریق فرم روبه‌رو با ما در ارتباط باشید.

+ +
+

شروع طراØÛŒ وب‌سایت اختصاصی من

فرم ثبت درخواست

+
+
+
+ +

+
+
+
+
+ + +
+

نظرات پزشکان

+

نظر پزشکانی که به ما اعتماد کردند

+ +
+
+ + +
+ + + + diff --git a/landing/js/main.js b/landing/js/main.js new file mode 100644 index 0000000..e0c1de6 --- /dev/null +++ b/landing/js/main.js @@ -0,0 +1,108 @@ +/* Mataba static interactions (vanilla JS) */ +(function(){ + "use strict"; + var body=document.body; + // Mobile menu (layoutContext port) + var burger=document.getElementById('hamburger'); + var backdrop=document.getElementById('drawerBackdrop'); + var closeBtn=document.getElementById('drawerClose'); + function setMenu(open){ + body.classList.toggle('menu-open',open); + if(burger)burger.setAttribute('aria-expanded',open?'true':'false'); + } + if(burger)burger.addEventListener('click',function(){setMenu(!body.classList.contains('menu-open'));}); + if(backdrop)backdrop.addEventListener('click',function(){setMenu(false);}); + if(closeBtn)closeBtn.addEventListener('click',function(){setMenu(false);}); + document.querySelectorAll('.nav a').forEach(function(a){a.addEventListener('click',function(){setMenu(false);});}); + document.addEventListener('keydown',function(e){if(e.key==='Escape'){setMenu(false);closeModal();}}); + + // Login modal (sign-in-modal port, validation from login.schema.ts) + var modal=document.getElementById('loginModal'); + var phone=document.getElementById('phoneInput'); + var err=document.getElementById('phoneError'); + var okMsg=document.getElementById('phoneOk'); + function openModal(){if(modal){modal.classList.add('open');modal.setAttribute('aria-hidden','false');if(phone)phone.focus();}} + function closeModal(){if(modal){modal.classList.remove('open');modal.setAttribute('aria-hidden','true');}} + window.matabaOpenLogin=openModal; + document.querySelectorAll('[data-open-login]').forEach(function(b){b.addEventListener('click',openModal);}); + document.querySelectorAll('[data-close-login]').forEach(function(b){b.addEventListener('click',closeModal);}); + if(modal)modal.addEventListener('click',function(e){if(e.target===modal)closeModal();}); + var form=document.getElementById('loginForm'); + if(form)form.addEventListener('submit',function(e){ + e.preventDefault(); + var v=(phone.value||'').trim(); + var valid=/^09\d{9}$/.test(v); + if(!valid){ + err.textContent='شماره موبایل باید با 09 شروع شود و ۱۱ رقم باشد (مثلاً 09181234567).'; + if(okMsg)okMsg.textContent=''; + phone.setAttribute('aria-invalid','true'); + return; + } + err.textContent=''; + phone.removeAttribute('aria-invalid'); + if(okMsg)okMsg.textContent='درخواست شما با موفقیت ثبت شد. کارشناسان مطبا به زودی با شما تماس می‌گیرند.'; + }); + + // Testimonials carousel (DoctorsCmSlider port, replaces Swiper) + var track=document.getElementById('tTrack'); + function step(){if(!track)return 0;var c=track.querySelector('.tcard');if(!c)return 320;return c.getBoundingClientRect().width+20;} + var prev=document.getElementById('tPrev'),next=document.getElementById('tNext'); + if(prev&&track)prev.addEventListener('click',function(){track.scrollBy({left:step(),top:0,behavior:'smooth'});}); + if(next&&track)next.addEventListener('click',function(){track.scrollBy({left:-step(),top:0,behavior:'smooth'});}); + // autoplay 3s like original, pause on hover + var timer=null; + function start(){stop();timer=setInterval(function(){ + if(!track)return; + var max=track.scrollWidth-track.clientWidth-4; + if(track.scrollLeft<=4){track.scrollTo({left:max,behavior:'smooth'});} + else{track.scrollBy({left:-step(),behavior:'smooth'});} + },3000);} + function stop(){if(timer)clearInterval(timer);timer=null;} + if(track){start();track.addEventListener('mouseenter',stop);track.addEventListener('mouseleave',start);} + + var dForm=document.getElementById('domainForm'); + if(dForm)dForm.addEventListener('submit',function(e){ + e.preventDefault(); + var q=document.getElementById('domainInput').value.trim(); + var msg=document.getElementById('domainMsg'); + if(!q){msg.textContent='نام دامنه را وارد کنید.';return;} + msg.textContent='نام دامنه «'+q+'» در دسترس است. برای ثبت با مطبا تماس بگیرید.'; + }); + document.querySelectorAll('.domain').forEach(function(b){ + b.addEventListener('click',function(){ + var inp=document.getElementById('domainInput'); + if(inp){inp.value=inp.value.replace(/\.(ir|com|net|doctor|site|shop)\.?$/i,'')+b.textContent.trim();inp.focus();} + }); + }); + + function wireLead(id){ + var f=document.getElementById(id); + if(!f)return; + f.addEventListener('submit',function(e){ + e.preventDefault(); + var name=f.querySelector('[name=name]'),mobile=f.querySelector('[name=mobile]'), + spec=f.querySelector('[name=spec]'),msg=f.querySelector('textarea'), + eEl=f.querySelector('.ferr'),oEl=f.querySelector('.fok'); + var problems=[]; + if(name&&!name.value.trim())problems.push('نام و نام خانوادگی لازم است.'); + var mv=mobile?mobile.value.trim():''; + if(mv&&!/^09\d{9}$/.test(mv))problems.push('شماره تماس معتبر نیست (11 رقم با 09).'); + if(msg&&!msg.value.trim())problems.push('توضیحات را بنویسید.'); + if(problems.length){eEl.textContent=problems.join(' ');oEl.textContent='';return;} + eEl.textContent=''; + oEl.textContent='درخواست شما با موفقیت ثبت شد. کارشناسان مطبا به زودی با شما تماس می‌گیرند.'; + f.reset(); + }); + } + wireLead('leadForm');wireLead('leadFormPage');wireLead('contactFormPage'); + + // Active nav on scroll + var links=document.querySelectorAll('.nav a[href^="#"]'); + var secs=[].map.call(links,function(a){return document.querySelector(a.getAttribute('href'));}).filter(Boolean); + function onScroll(){ + var y=window.scrollY+140,cur=null; + secs.forEach(function(s){if(s.offsetTop<=y)cur=s;}); + links.forEach(function(a){a.classList.toggle('active',cur&&a.getAttribute('href')==='#'+cur.id);}); + } + window.addEventListener('scroll',onScroll,{passive:true});onScroll(); +})(); diff --git a/landing/manifest.webmanifest b/landing/manifest.webmanifest new file mode 100644 index 0000000..861d39f --- /dev/null +++ b/landing/manifest.webmanifest @@ -0,0 +1 @@ +{"name":"مطبا — Mataba","short_name":"مطبا","description":"طراحی سایت اختصاصی پزشکان","start_url":"https://mataba.ir/","display":"standalone","dir":"rtl","lang":"fa","background_color":"#ffffff","theme_color":"#9EB185","icons":[{"src":"assets/images/navLogo.png","sizes":"150x60","type":"image/png"}]} diff --git a/landing/robots.txt b/landing/robots.txt new file mode 100644 index 0000000..54f39ca --- /dev/null +++ b/landing/robots.txt @@ -0,0 +1,8 @@ +User-agent: * +Allow: / +Allow: /assets/ +Allow: /css/ +Allow: /js/ +Disallow: /docs/ + +Sitemap: https://mataba.ir/sitemap.xml diff --git a/landing/sitemap.xml b/landing/sitemap.xml new file mode 100644 index 0000000..006ec5c --- /dev/null +++ b/landing/sitemap.xml @@ -0,0 +1,6 @@ + + + https://mataba.ir/2026-09-20weekly1.0 + https://mataba.ir/about/2026-09-20monthly0.7 + https://mataba.ir/contact/2026-09-20monthly0.7 + \ No newline at end of file