diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..44da05a --- /dev/null +++ b/.gitignore @@ -0,0 +1,25 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/settings.json +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..7cfa00f --- /dev/null +++ b/.prettierignore @@ -0,0 +1,4 @@ +dist/ +node_modules/ +public/ +*.min.js \ No newline at end of file diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..bd686c7 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,13 @@ +{ + "semi": true, + "trailingComma": "es5", + "singleQuote": true, + "printWidth": 100, + "tabWidth": 2, + "useTabs": false, + "bracketSpacing": true, + "arrowParens": "always", + "endOfLine": "lf", + "embeddedLanguageFormatting": "auto", + "htmlWhitespaceSensitivity": "css" +} \ No newline at end of file diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..2ff0d26 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,4 @@ +{ + "recommendations": ["esbenp.prettier-vscode"], + "unwantedRecommendations": [] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..1be65d1 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,19 @@ +{ + "editor.defaultFormatter": "esbenp.prettier-vscode", + "editor.formatOnSave": true, + "editor.formatOnPaste": true, + "editor.tabSize": 2, + "[html]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[css]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[javascript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "files.associations": { + "*.xml": "html", + "*.svg": "html" + } +} diff --git a/README.md b/README.md index 0663813..74077bc 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,32 @@ -# homepage +# Inova - Frontend +فرانت‌اند قالب وردپرس پروژه Inova + +## درباره پروژه + +این ریپوزیتوری بخش فرانت‌اند قالب وردپرس پروژه اصلی است. اینجا تمام طراحی‌ها، کامپوننت‌ها و assetها با استفاده از Vite توسعه داده می‌شود. + +## نحوه راه‌اندازی پروژه + +### پیش‌نیازها + +- Node.js نسخه 18 یا بالاتر (نسخه 22 پیشنهاد میشه) +- ادیتور Vs Code +- نصب بودن اکستنشن prettier روی vs code +- نصب بودن git روی سیستم عامل + +### نصب و اجرا + +```bash +# کلون کردن پروژه +git clone https://dev.novindiyar.com/Inova-Agency/inova-frontend.git + +# ورود به پوشه +cd inova-frontend + +# نصب وابستگی‌ها +npm install + +# اجرای محیط توسعه +npm run dev +``` diff --git a/homepage.html b/homepage.html new file mode 100644 index 0000000..2ddec3f --- /dev/null +++ b/homepage.html @@ -0,0 +1,1251 @@ + + + + + + + + + + + + + +
+ +
+
+ + + + + + +
+ + 021-91096311 + + + + +
+ + + +
+ + + +
+ +
+ +
+
+ +
+
+
INOVA
+ + +
+
+

برند خود را با

+ + + + خلاقیت + نوآوری + دیتامحوری + + +
+ +

در بازار شلوغ متمایز کنید!

+ +

+ اینوا جایی است که با ترکیب نوآوری، خلاقیت و داده‌محوری، به کسب‌وکارها کمک می‌کند + در مسیر رشد حرکت کنند. +

+ + +
+ + +
+ + + + + +
+
+ +
+
+
+ + +
+
+
+
+

خدمات اینوا

+

راهکارهای بازاریابی برای رشد کسب‌وکار شما

+
+ +
+
+
+
+ +
+ +
+

خدمات برندینگ

+

طراحی و ساخت هویت منحصربه‌فرد

+
+
+
+ +
+
+
+ +
+
+

کمپین‌های تبلیغاتی

+

طراحی و اجرای کمپین‌های خلاق برای رشد برند

+
+
+
+ +
+
+
+ +
+
+

خدمات طراحی و توسعه سایت

+ +

طراحی و توسعه وبسایت‌های موثر و کاربردی

+
+
+
+ +
+
+
+ +
+
+

گیمیفیکیشن

+

افزایش تعامل با بازی‌ وارسازی هوشمند

+
+
+
+ +
+
+
+ +
+ +
+

تولید محتوا

+

خلق محتوای خلاق، جذاب و ماندگار

+
+
+
+ +
+
+
+ +
+ +
+

برگزاری رویداد

+

برنامه‌ریزی و اجرای رویدادهای اثرگذار

+
+
+
+ +
+
+
+ +
+
+

شبکه‌های اجتماعی

+

مدیریت حرفه‌ای و رشد هدفمند رسانه‌ها

+
+
+
+ +
+
+
+ +
+
+

سئو

+

افزایش دیده شدن برند در نتایج جستجو

+
+
+
+ +
+
+
+ +
+
+

خدمات مشاوره

+

ارائه استراتژی و راهکار برای رشد کسب‌وکار

+
+
+
+
+
+
+
+ + + + + +
+
+
+

به جمع بیش از 300 پروژه موفق بپیوندید

+ +

+ کیفیت ما از زبان کارفرمایان شرکت‌های بزرگ و کوچک موفق بشنوید +

+
+ +
+
+
+ 1.5X +

افزایش رشد/فروش

+
+ +
+ 45+ +

تعداد مشتریان

+
+ +
+ 92% +

رضایت کارفرمایان

+
+ +
+ 300+ +

پروژه موفق

+
+
+ +
+
+ 1.5X +

افزایش رشد/فروش

+
+
+
+ + + +
+
+
+ + + + + +
+

+ تخصص در طراحی معماری نرم‌افزارهای مقیاس‌پذیر و توسعه سیستم‌های پردازش داده‌های + بزرگ. +

+ +
+ +
+
+
+
+ + + + + +
+

+ تخصص در طراحی معماری نرم‌افزارهای مقیاس‌پذیر و توسعه سیستم‌های پردازش داده‌های + بزرگ. +

+ +
+ +
+
+
+
+ + + + + +
+

+ تخصص در طراحی معماری نرم‌افزارهای مقیاس‌پذیر و توسعه سیستم‌های پردازش داده‌های + بزرگ. +

+ +
+ +
+
+
+
+ + + + + +
+

+ تخصص در طراحی معماری نرم‌افزارهای مقیاس‌پذیر و توسعه سیستم‌های پردازش داده‌های + بزرگ. +

+ +
+ +
+
+
+
+ + + + + +
+

+ تخصص در طراحی معماری نرم‌افزارهای مقیاس‌پذیر و توسعه سیستم‌های پردازش داده‌های + بزرگ. +

+ +
+ +
+
+
+
+ + + + + +
+

+ تخصص در طراحی معماری نرم‌افزارهای مقیاس‌پذیر و توسعه سیستم‌های پردازش داده‌های + بزرگ. +

+ +
+ +
+
+
+
+ + + + + +
+

+ تخصص در طراحی معماری نرم‌افزارهای مقیاس‌پذیر و توسعه سیستم‌های پردازش داده‌های + بزرگ. +

+ +
+ +
+
+
+
+ + + + + +
+

+ تخصص در طراحی معماری نرم‌افزارهای مقیاس‌پذیر و توسعه سیستم‌های پردازش داده‌های + بزرگ. +

+ +
+ +
+
+
+ +
+
+
+ + +
+
+
+

از ایده‌هایتان دست نکشید!

+

وقت آن رسیده که ایده‌تان جان بگیرد!

+

+ ما در اینوا با تخصص، دیتا و دانش خود ایده‌های خام شما رو صیقل می‌دهیم و به پروژه‌های + سودآور تبدیل می‌کنیم. همین امروز برای مشاوره اقدام کنید. +

+ + درخواست جلسه مشاوره +
+
+
+ + + +
+
+
+
+ درباره اینوا +

شرکت پردازشگران بینش ساز نگاه نو (اینوا)

+

+ داستان اینوا از یک دغدغه ساده شروع شد: عبور از مرزهای معمول بازاریابی. ما + نیامده‌ایم که فقط یک پروژه برایتان انجام دهیم؛ آمده‌ایم تا به عنوان بازوی خلاق + شما، ایده‌های خامتان را صیقل بدهیم و آن‌ها را به تجربه‌هایی تبدیل کنیم که + مخاطبانتان عاشقش شوند. +

+ + درباره ما + + +
+ +
+
+ thumbnail + +
+ + + +
+ +
+ +

آشنایی با تیم و مجموعه اینوا

+
+
+ + +
+
+
+
+
+ + + +
+ + diff --git a/index.html b/index.html new file mode 100644 index 0000000..6f6b375 --- /dev/null +++ b/index.html @@ -0,0 +1,14 @@ + + + + + + + Inova + + +
+

سلام دنیا

+
+ + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..bfe917c --- /dev/null +++ b/package-lock.json @@ -0,0 +1,889 @@ +{ + "name": "inova-frontend", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "inova-frontend", + "version": "0.0.0", + "devDependencies": { + "prettier": "^3.8.3", + "vite": "^8.0.4" + } + }, + "node_modules/@emnapi/core": { + "version": "1.9.2", + "resolved": "https://registry.npmmirror.com/@emnapi/core/-/core-1.9.2.tgz", + "integrity": "sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.1", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.9.2", + "resolved": "https://registry.npmmirror.com/@emnapi/runtime/-/runtime-1.9.2.tgz", + "integrity": "sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", + "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz", + "integrity": "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@tybys/wasm-util": "^0.10.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "peerDependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1" + } + }, + "node_modules/@oxc-project/types": { + "version": "0.124.0", + "resolved": "https://registry.npmmirror.com/@oxc-project/types/-/types-0.124.0.tgz", + "integrity": "sha512-VBFWMTBvHxS11Z5Lvlr3IWgrwhMTXV+Md+EQF0Xf60+wAdsGFTBx7X7K/hP4pi8N7dcm1RvcHwDxZ16Qx8keUg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Boshen" + } + }, + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmmirror.com/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.15.tgz", + "integrity": "sha512-YYe6aWruPZDtHNpwu7+qAHEMbQ/yRl6atqb/AhznLTnD3UY99Q1jE7ihLSahNWkF4EqRPVC4SiR4O0UkLK02tA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmmirror.com/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.15.tgz", + "integrity": "sha512-oArR/ig8wNTPYsXL+Mzhs0oxhxfuHRfG7Ikw7jXsw8mYOtk71W0OkF2VEVh699pdmzjPQsTjlD1JIOoHkLP1Fg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmmirror.com/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.15.tgz", + "integrity": "sha512-YzeVqOqjPYvUbJSWJ4EDL8ahbmsIXQpgL3JVipmN+MX0XnXMeWomLN3Fb+nwCmP/jfyqte5I3XRSm7OfQrbyxw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmmirror.com/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.15.tgz", + "integrity": "sha512-9Erhx956jeQ0nNTyif1+QWAXDRD38ZNjr//bSHrt6wDwB+QkAfl2q6Mn1k6OBPerznjRmbM10lgRb1Pli4xZPw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmmirror.com/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.15.tgz", + "integrity": "sha512-cVwk0w8QbZJGTnP/AHQBs5yNwmpgGYStL88t4UIaqcvYJWBfS0s3oqVLZPwsPU6M0zlW4GqjP0Zq5MnAGwFeGA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmmirror.com/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.15.tgz", + "integrity": "sha512-eBZ/u8iAK9SoHGanqe/jrPnY0JvBN6iXbVOsbO38mbz+ZJsaobExAm1Iu+rxa4S1l2FjG0qEZn4Rc6X8n+9M+w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmmirror.com/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.15.tgz", + "integrity": "sha512-ZvRYMGrAklV9PEkgt4LQM6MjQX2P58HPAuecwYObY2DhS2t35R0I810bKi0wmaYORt6m/2Sm+Z+nFgb0WhXNcQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-ppc64-gnu": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmmirror.com/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0-rc.15.tgz", + "integrity": "sha512-VDpgGBzgfg5hLg+uBpCLoFG5kVvEyafmfxGUV0UHLcL5irxAK7PKNeC2MwClgk6ZAiNhmo9FLhRYgvMmedLtnQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-s390x-gnu": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmmirror.com/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0-rc.15.tgz", + "integrity": "sha512-y1uXY3qQWCzcPgRJATPSOUP4tCemh4uBdY7e3EZbVwCJTY3gLJWnQABgeUetvED+bt1FQ01OeZwvhLS2bpNrAQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmmirror.com/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.15.tgz", + "integrity": "sha512-023bTPBod7J3Y/4fzAN6QtpkSABR0rigtrwaP+qSEabUh5zf6ELr9Nc7GujaROuPY3uwdSIXWrvhn1KxOvurWA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmmirror.com/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.15.tgz", + "integrity": "sha512-witB2O0/hU4CgfOOKUoeFgQ4GktPi1eEbAhaLAIpgD6+ZnhcPkUtPsoKKHRzmOoWPZue46IThdSgdo4XneOLYw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmmirror.com/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.15.tgz", + "integrity": "sha512-UCL68NJ0Ud5zRipXZE9dF5PmirzJE4E4BCIOOssEnM7wLDsxjc6Qb0sGDxTNRTP53I6MZpygyCpY8Aa8sPfKPg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-wasm32-wasi": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmmirror.com/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.15.tgz", + "integrity": "sha512-ApLruZq/ig+nhaE7OJm4lDjayUnOHVUa77zGeqnqZ9pn0ovdVbbNPerVibLXDmWeUZXjIYIT8V3xkT58Rm9u5Q==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "1.9.2", + "@emnapi/runtime": "1.9.2", + "@napi-rs/wasm-runtime": "^1.1.3" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmmirror.com/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.15.tgz", + "integrity": "sha512-KmoUoU7HnN+Si5YWJigfTws1jz1bKBYDQKdbLspz0UaqjjFkddHsqorgiW1mxcAj88lYUE6NC/zJNwT+SloqtA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmmirror.com/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.15.tgz", + "integrity": "sha512-3P2A8L+x75qavWLe/Dll3EYBJLQmtkJN8rfh+U/eR3MqMgL/h98PhYI+JFfXuDPgPeCB7iZAKiqii5vqOvnA0g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmmirror.com/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.15.tgz", + "integrity": "sha512-UromN0peaE53IaBRe9W7CjrZgXl90fqGpK+mIZbA3qSTeYqg3pqpROBdIPvOG3F5ereDHNwoHBI2e50n1BDr1g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmmirror.com/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmmirror.com/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/lightningcss": { + "version": "1.32.0", + "resolved": "https://registry.npmmirror.com/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmmirror.com/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmmirror.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmmirror.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmmirror.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.32.0", + "resolved": "https://registry.npmmirror.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmmirror.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmmirror.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmmirror.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmmirror.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmmirror.com/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmmirror.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.10", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.10.tgz", + "integrity": "sha512-pMMHxBOZKFU6HgAZ4eyGnwXF/EvPGGqUr0MnZ5+99485wwW41kW91A4LOGxSHhgugZmSChL5AlElNdwlNgcnLQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prettier": { + "version": "3.8.3", + "resolved": "https://registry.npmmirror.com/prettier/-/prettier-3.8.3.tgz", + "integrity": "sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/rolldown": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmmirror.com/rolldown/-/rolldown-1.0.0-rc.15.tgz", + "integrity": "sha512-Ff31guA5zT6WjnGp0SXw76X6hzGRk/OQq2hE+1lcDe+lJdHSgnSX6nK3erbONHyCbpSj9a9E+uX/OvytZoWp2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@oxc-project/types": "=0.124.0", + "@rolldown/pluginutils": "1.0.0-rc.15" + }, + "bin": { + "rolldown": "bin/cli.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "optionalDependencies": { + "@rolldown/binding-android-arm64": "1.0.0-rc.15", + "@rolldown/binding-darwin-arm64": "1.0.0-rc.15", + "@rolldown/binding-darwin-x64": "1.0.0-rc.15", + "@rolldown/binding-freebsd-x64": "1.0.0-rc.15", + "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.15", + "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.15", + "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.15", + "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.15", + "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.15", + "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.15", + "@rolldown/binding-linux-x64-musl": "1.0.0-rc.15", + "@rolldown/binding-openharmony-arm64": "1.0.0-rc.15", + "@rolldown/binding-wasm32-wasi": "1.0.0-rc.15", + "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.15", + "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.15" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.16", + "resolved": "https://registry.npmmirror.com/tinyglobby/-/tinyglobby-0.2.16.tgz", + "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD", + "optional": true + }, + "node_modules/vite": { + "version": "8.0.8", + "resolved": "https://registry.npmmirror.com/vite/-/vite-8.0.8.tgz", + "integrity": "sha512-dbU7/iLVa8KZALJyLOBOQ88nOXtNG8vxKuOT4I2mD+Ya70KPceF4IAmDsmU0h1Qsn5bPrvsY9HJstCRh3hG6Uw==", + "dev": true, + "license": "MIT", + "dependencies": { + "lightningcss": "^1.32.0", + "picomatch": "^4.0.4", + "postcss": "^8.5.8", + "rolldown": "1.0.0-rc.15", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "@vitejs/devtools": "^0.1.0", + "esbuild": "^0.27.0 || ^0.28.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "@vitejs/devtools": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..44bcb07 --- /dev/null +++ b/package.json @@ -0,0 +1,15 @@ +{ + "name": "inova-frontend", + "version": "0.0.0", + "private": true, + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview" + }, + "devDependencies": { + "prettier": "^3.8.3", + "vite": "^8.0.4" + } +} diff --git a/public/.gitkeep b/public/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/public/images/.gitkeep b/public/images/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/public/images/1.png b/public/images/1.png new file mode 100644 index 0000000..6103de6 Binary files /dev/null and b/public/images/1.png differ diff --git a/public/images/2.png b/public/images/2.png new file mode 100644 index 0000000..28a0433 Binary files /dev/null and b/public/images/2.png differ diff --git a/public/images/CTA-pic.webp b/public/images/CTA-pic.webp new file mode 100644 index 0000000..9092250 Binary files /dev/null and b/public/images/CTA-pic.webp differ diff --git a/public/images/DigitalPublish 1.png b/public/images/DigitalPublish 1.png new file mode 100644 index 0000000..b748f5f Binary files /dev/null and b/public/images/DigitalPublish 1.png differ diff --git a/public/images/Group.png b/public/images/Group.png new file mode 100644 index 0000000..702fb4f Binary files /dev/null and b/public/images/Group.png differ diff --git a/public/images/Vector (1).png b/public/images/Vector (1).png new file mode 100644 index 0000000..3983274 Binary files /dev/null and b/public/images/Vector (1).png differ diff --git a/public/images/Vector.png b/public/images/Vector.png new file mode 100644 index 0000000..a02a8d0 Binary files /dev/null and b/public/images/Vector.png differ diff --git a/public/images/bishp 1.png b/public/images/bishp 1.png new file mode 100644 index 0000000..2ed2dd7 Binary files /dev/null and b/public/images/bishp 1.png differ diff --git a/public/images/blure-effect 1.png b/public/images/blure-effect 1.png new file mode 100644 index 0000000..68745ce Binary files /dev/null and b/public/images/blure-effect 1.png differ diff --git a/public/images/hamkaran.png b/public/images/hamkaran.png new file mode 100644 index 0000000..70def58 Binary files /dev/null and b/public/images/hamkaran.png differ diff --git a/public/images/hesabdari.png b/public/images/hesabdari.png new file mode 100644 index 0000000..4c92ff1 Binary files /dev/null and b/public/images/hesabdari.png differ diff --git a/public/images/images 1.png b/public/images/images 1.png new file mode 100644 index 0000000..fc0b6e2 Binary files /dev/null and b/public/images/images 1.png differ diff --git a/public/images/ipka.png b/public/images/ipka.png new file mode 100644 index 0000000..bf99ebd Binary files /dev/null and b/public/images/ipka.png differ diff --git a/public/images/king 1.png b/public/images/king 1.png new file mode 100644 index 0000000..d52ba50 Binary files /dev/null and b/public/images/king 1.png differ diff --git a/public/images/nil.png b/public/images/nil.png new file mode 100644 index 0000000..5a5f42c Binary files /dev/null and b/public/images/nil.png differ diff --git a/public/images/petboom.png b/public/images/petboom.png new file mode 100644 index 0000000..ef9baf1 Binary files /dev/null and b/public/images/petboom.png differ diff --git a/public/images/prof.png b/public/images/prof.png new file mode 100644 index 0000000..767eee8 Binary files /dev/null and b/public/images/prof.png differ diff --git a/public/images/sepidar.png b/public/images/sepidar.png new file mode 100644 index 0000000..77d1184 Binary files /dev/null and b/public/images/sepidar.png differ diff --git a/public/images/snap.png b/public/images/snap.png new file mode 100644 index 0000000..1b0cc9f Binary files /dev/null and b/public/images/snap.png differ diff --git a/public/images/soldier 1.png b/public/images/soldier 1.png new file mode 100644 index 0000000..f644bd0 Binary files /dev/null and b/public/images/soldier 1.png differ diff --git a/public/images/soldier 2.png b/public/images/soldier 2.png new file mode 100644 index 0000000..1b26ab1 Binary files /dev/null and b/public/images/soldier 2.png differ diff --git a/public/images/thumb.png b/public/images/thumb.png new file mode 100644 index 0000000..42db6fc Binary files /dev/null and b/public/images/thumb.png differ diff --git a/public/images/videotest.mp4 b/public/images/videotest.mp4 new file mode 100644 index 0000000..d4f3e65 Binary files /dev/null and b/public/images/videotest.mp4 differ diff --git a/public/images/zabanmehr (1).png b/public/images/zabanmehr (1).png new file mode 100644 index 0000000..bdf4d71 Binary files /dev/null and b/public/images/zabanmehr (1).png differ diff --git a/public/images/zabanmehr (3).png b/public/images/zabanmehr (3).png new file mode 100644 index 0000000..1643195 Binary files /dev/null and b/public/images/zabanmehr (3).png differ diff --git a/public/images/zarin.png b/public/images/zarin.png new file mode 100644 index 0000000..8d9590f Binary files /dev/null and b/public/images/zarin.png differ diff --git a/public/images/Ñëîé_10.png b/public/images/Ñëîé_10.png new file mode 100644 index 0000000..173f267 Binary files /dev/null and b/public/images/Ñëîé_10.png differ diff --git a/src/assets/css/homepage-responsive.css b/src/assets/css/homepage-responsive.css new file mode 100644 index 0000000..9dc4732 --- /dev/null +++ b/src/assets/css/homepage-responsive.css @@ -0,0 +1,390 @@ +@media screen and (max-width: 1400px) { +} +@media screen and (max-width: 1200px) { +} +@media screen and (max-width: 992px) { + .services-grid { + grid-template-columns: repeat(2, 1fr); + } + .text-content h3 { + font-size: 22px; + } + .service-grid { + grid-template-columns: repeat(2, 1fr); + } + .comments-section-wrapper { + grid-template-columns: 1fr; + } + .about-content { + flex-direction: column; + gap: 25px; + } + .video-wrapper { + order: 1; + } + .content-wrapper { + order: 2; + width: 100%; + } + .content-wrapper h2 { + font-size: 22px; + } + .badge { + font-size: 12px; + } + + .piece-1 { + position: absolute; + width: 312px; + left: 152px; + top: 21%; + } + .piece-2 { + position: absolute; + width: 482px; + left: 160px; + bottom: -144px; + } + .piece-4 { + position: absolute; + width: 472px; + right: -305px; + top: 32%; + } + .piece-5 { + position: absolute; + width: 290px; + right: -127px; + bottom: -92px; + } + .footer-container { + display: flex; + flex-direction: column; + flex-wrap: wrap; + justify-content: flex-start; + margin-bottom: 24px; + } + .footer-cta { + bottom: 93%; + left: 90px; + right: 90px; + } +} +@media screen and (max-width: 768px) { + .related-boxes { + grid-template-columns: repeat(1, minmax(326px, 350px)); + } + .related-title { + font-size: 22px; + } + .related-button { + display: none; + } + .related-button-mobile { + display: flex; + gap: 8px; + height: 40px; + padding: 0px 12px 0px 10px; + background-color: var(--color-primary); + border-radius: 10px; + color: #ffffff; + align-items: center; + align-self: center; + margin-top: 24px; + } + .related-button-mobile span { + font-size: 15px; + font-weight: 400; + } + .services-horizontal { + padding: 30px 14px; + border-radius: 18px; + } + + .services-header { + text-align: center; + } + + .services-header h2 { + font-size: 30px; + } + + .services-header p { + font-size: 14px; + } + + .services-grid { + grid-template-columns: 1fr; + gap: 12px; + } + + .service-content { + min-height: 72px; + padding: 14px; + } + + .icon-bubble { + width: 46px; + height: 46px; + min-width: 46px; + font-size: 20px; + } + + .text-content h3 { + font-size: 18px; + margin-bottom: 4px; + } + + .text-content p { + font-size: 13px; + } + .container-service-section { + padding: 0; + } + .service-section > .container-service-section { + padding: 0; + border-radius: 0; + margin-top: 100px; + } + .service-section { + padding: 0; + border-radius: 0; + } + + .service-header { + text-align: center; + } + + .service-heading { + font-size: 1.8rem; + } + + .service-tagline { + font-size: 0.9rem; + } + + .service-grid { + grid-template-columns: 1fr; + gap: 12px; + } + + .service-content { + min-height: 72px; + padding: 14px; + } + + .service-icon { + width: 46px; + height: 46px; + min-width: 46px; + font-size: 1rem; + } + + .service-title { + font-size: 1rem; + } + + .service-description { + font-size: 0.8rem; + } + .related-under-box { + flex-wrap: wrap; + } + .consultation-title { + display: none; + } + + .consultation-title-phone { + display: block; + color: var(--color-primary); + font-size: 24px; + font-weight: bold; + margin-bottom: 8px; + } + .consultation-text { + font-size: 15px; + } + .header-container { + position: relative; + padding: 14px 16px; + + display: flex; + justify-content: center; + align-items: center; + } + + .header-logo { + position: absolute; + left: 50%; + transform: translateX(-50%); + } + + .header-logo img { + height: 36px; + } + + .header-left { + position: absolute; + left: 16px; + } + + .header-phone { + display: none; + } + + .header-menu-toggle { + display: flex; + + position: absolute; + right: 16px; + } + + .header-nav { + display: none; + } + + .footer-imgb, + .footer-imga { + display: none; + } + .footer-imgd { + display: block; + position: absolute; + top: 0; + left: 0; + } + .footer-imgc { + display: block; + position: absolute; + bottom: 0; + right: 0; + } + .footer-cta-content { + border-radius: 10px; + padding: 24px 16px; + display: flex; + align-items: center; + flex-direction: column; + justify-content: space-between; + gap: 24px; + } + .footer-cta-txt h2 { + margin-bottom: 16px; + font-size: 22px; + font-weight: 700; + align-self: center; + } + .footer-cta-txt p { + font-size: 14px; + text-align: center; + line-height: 1.8; + } + .desktop1 { + display: none; + } + + .mobile-stat { + display: flex; + } +} +@media screen and (max-width: 576px) { + .hero-bg-word { + font-size: 257px; + + top: 57%; + left: 50%; + + transform: translate(-50%, -50%) rotate(90deg) !important; + + transform-origin: center; + } + .comments-section-brand-card { + position: relative; + height: 117px; + border: 1px solid #dfdfdf; + border-radius: 10px; + overflow: hidden; + cursor: pointer; + } + .comments-section-brands { + grid-template-columns: repeat(2, 1fr); + } + .comments-section-title { + font-size: 22px; + } + .consultation-container { + padding: 0; + } + .consultation-box { + padding: 20px; + } + .piece-4 { + width: 258px; + right: -236px; + top: 18%; + } + .piece-2 { + width: 304px; + left: 45px; + bottom: -15%; + } + .piece-3 { + width: 641px; + } + .piece-5 { + width: 206px; + right: -180px; + bottom: -10%; + } + .piece-1 { + width: 172px; + left: 22px; + top: 18%; + } + .h-txt1 { + font-size: 32px; + } + .h-txt2 { + font-size: 30px; + } + .word { + font-size: 32px; + } + + .scroll-text-hero { + color: var(--color-primary); + font-size: 30px; + width: 153px; + } + .hero-actions { + flex-wrap: wrap; + } + .hero-btn-primary, + .hero-btn-secondary { + width: 100%; + } + .hero-content p { + margin-bottom: 24px; + } + .footer-cta { + left: 20px; + right: 20px; + } + .footer { + padding-top: 129px; + } + .footer-bottom-line { + margin-bottom: 92px; + } + .video-title { + font-size: 20px; + } + .play-btn-about svg { + width: 60px; + height: 60px; + } + .arrow-btn-about svg { + width: 72px; + height: 70px; + } +} diff --git a/src/assets/css/homepage.css b/src/assets/css/homepage.css new file mode 100644 index 0000000..967f27f --- /dev/null +++ b/src/assets/css/homepage.css @@ -0,0 +1,1617 @@ +section > .container { + max-width: 1240px; + padding: 0 20px; + margin: 0 auto; +} +/* ===================================هدر================================= */ +.header { + position: relative; + width: 100%; + background: #fff; + border-bottom: 1px solid #eee; + z-index: 1000; +} + +.header-container { + max-width: 1200px; + margin: 0 auto; + padding: 0 24px; + height: 84px; + + display: flex; + align-items: center; +} +/* ===== Left Section ===== */ + +.header-left { + display: flex; + align-items: center; + gap: 16px; +} + +.header-phone:hover svg, +.header-phone:hover span { + color: #03aeff; + fill: #03aeff; +} +.header-phone { + display: flex; + align-items: center; + gap: 4px; + + text-decoration: none; + color: #0a8ed8; + font-size: 13px; + font-weight: 400; + line-height: 1.8; +} +.header-user-btn { + display: flex; + align-items: center; + justify-content: center; + + background: transparent; + border: none; + cursor: pointer; +} + +/* ===== Menu ===== */ +.header-nav { + margin-left: auto; + margin-right: 48px; +} +.header-menu { + display: flex; + align-items: center; + gap: 30px; + + list-style: none; + margin: 0; + padding: 0; +} + +.header-menu a { + text-decoration: none; + color: var(--color-title); + font-size: 15px; + font-weight: 400; +} + +.header-menu a:hover { + color: var(--color-primary); +} + +/* ===== Logo ===== */ + +.header-logo img { + display: block; + height: 42px; +} +.header-logo { + flex-shrink: 0; + display: flex; + align-items: center; +} +/* ===== Hamburger ===== */ + +.header-menu-toggle { + display: none; + + width: 48px; + height: 48px; + + border: none; + background: transparent; + cursor: pointer; + + flex-direction: column; + justify-content: center; + align-items: center; + gap: 4px; +} + +.header-menu-toggle span { + width: 16px; + height: 2px; + background: var(--color-text); + border-radius: 50px; +} + +/* ===== Mobile Menu ===== */ + +.header-mobile-menu { + position: fixed; + inset: 0; + background: #ffffff; + display: none; + flex-direction: column; + z-index: 900; +} + +.header-mobile-menu.active { + display: flex; +} + +.header-mobile-top { + display: flex; + align-items: center; + justify-content: space-between; + padding: 16px; +} + +.header-mobile-logo img { + height: 60px; +} + +.header-mobile-close { + border: none; + background: transparent; + font-size: 34px; + cursor: pointer; +} + +.header-mobile-nav { + display: flex; + flex-direction: column; + gap: 24px; + padding: 20px 24px; +} + +.header-mobile-nav a { + display: flex; + align-items: center; + + text-decoration: none; + color: var(--color-text); +} + +.header-mobile-nav-hover { + display: flex; + margin-left: auto; +} +.header-mobile-item { + display: flex; + align-items: center; + + font-size: 15px; + font-weight: bold; + color: var(--color-text); +} +.header-mobile-item :hover { + color: var(--color-primary); +} +.header-mobile-arrow { + font-size: 30px; +} +.header-mobile-consultation { + padding: 8px 12px; + border-radius: 10px; + display: flex; + align-items: center; + justify-content: center; + text-decoration: none; + background: var(--color-primary); + color: #fff; + font-weight: bold; + font-size: 15px; + line-height: 1.7; + margin: 24px 20px; +} +.header-mobile-footer { + display: flex; + align-items: center; + justify-content: space-between; + padding: 0 20px; +} + +.header-mobile-socials { + display: flex; + gap: 18px; +} + +.header-mobile-phone { + display: flex; + align-items: center; + gap: 8px; + + text-decoration: none; + color: #444; +} + +.menuicon { + margin-left: 8px; +} + +.phoneicon use { + stroke: #505068; +} + +.header-mobile-nav-hover:hover .header-mobile-item, +.header-mobile-nav-hover:hover .phoneicon use { + color: #0274b3; + stroke: var(--color-primary); +} + +/* ============================هیروسکشن====================================== */ +.hero-section { + position: relative; + overflow: hidden; + min-height: 100vh; + background: + radial-gradient(circle at top center, rgba(35, 133, 214, 0.08), transparent 35%), + linear-gradient(180deg, #f8faff 0%, #f3f7fc 100%); +} +.hero-pattern-background { + position: relative; + overflow: hidden; + min-height: 100vh; + background: + radial-gradient(circle at top center, rgba(35, 133, 214, 0.08), transparent 35%), + linear-gradient(180deg, #f8faff 0%, #f3f7fc 100%); +} +.hero-pattern-background::before { + content: ''; + position: absolute; + inset: 0; + background-image: radial-gradient(rgba(40, 80, 120, 0.08) 1px, transparent 1px); + background-size: 20px 20px; + pointer-events: none; +} +.hero-section::before, +.hero-section::after { + content: ''; + position: absolute; + width: 403px; + height: 403px; + background: rgba(2, 116, 179, 0.12); + border-radius: 50%; + filter: blur(250px); + opacity: 0.4; +} + +.hero-section::before { + left: -300px; + bottom: -50px; +} + +.hero-section::after { + right: -300px; + bottom: -50px; +} +.hero-bg-word { + position: absolute; + top: 50%; + left: 53%; + transform: translate(-50%, -50%) scale(0.95); + font-size: 524px; + font-weight: 400; + line-height: 1.8; + background: linear-gradient(180deg, #dbebf8 0%, #eff6fe 100%); + filter: drop-shadow(-8px 13px 6px rgba(164, 201, 247, 0.2)); + -webkit-background-clip: text; + background-clip: text; + -webkit-text-fill-color: transparent; + color: transparent; + opacity: 1; + white-space: nowrap; + z-index: 1; + pointer-events: none; + clip-path: inset(0 100% 0 0); + animation-fill-mode: forwards; +} +@keyframes revealInova { + 0% { + clip-path: inset(0 100% 0 0); + transform: translate(-50%, -50%); + } + + 100% { + clip-path: inset(0 0 0 0); + transform: translate(-50%, -50%); + } +} +.hero-section-center { + min-height: 100vh; + display: flex; + justify-content: center; + align-items: center; +} +.hero-header { + position: absolute; + top: 0; + left: 0; + width: 100%; + background: transparent !important; + opacity: 0; + transform: translateY(-100px); + z-index: 100; +} +.hero-header.sticky { + position: fixed; + top: 0; + left: 0; + width: 100%; + + background: #fff !important; + border-bottom: 1px solid #eee; + + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.06); + + animation: headerSticky 0.3s ease; +} +@keyframes headerSticky { + from { + opacity: 0; + transform: translateY(-20px); + } + + to { + opacity: 1; + transform: translateY(0); + } +} +.hero-content { + position: relative; + z-index: 50; + max-width: 483px; + padding: 0 20px; + margin: auto; + text-align: center; + opacity: 0; +} +.hero-content-first-line { + display: flex; + flex-wrap: nowrap; + margin-bottom: 16px; + justify-content: center; +} +.h-txt1 { + font-size: 46px; + line-height: 1.2; + font-weight: bold; + display: inline; +} +.h-txt2 { + font-size: 42px; + line-height: 1.2; + font-weight: bold; + margin-bottom: 16px; +} +.hero-content p { + font-size: 15px; + line-height: 1.8; + font-weight: 400; + margin-bottom: 16px; + color: var(--color-text); +} +.scroll-text-hero { + color: var(--color-primary); + + width: 204px; + height: 50px; + border-radius: 6px; + display: flex; + align-items: flex-start; + justify-content: center; + overflow: hidden; + position: relative; + text-align: center; +} +.words-wrapper { + display: flex; + flex-direction: column; + gap: 6px; + transition: transform 600ms cubic-bezier(0.7, -0.4, 0.4, 1.4); +} +.word { + font-size: 42px; + font-weight: bold; + height: 47px; + display: flex; + align-items: center; + opacity: 0; + filter: blur(8px); + animation: dissolveErase 600ms ease forwards; +} +@keyframes dissolveErase { + from { + opacity: 0; + filter: blur(8px); + clip-path: inset(0 0 100% 0); + } + + to { + opacity: 1; + filter: blur(0); + clip-path: inset(0 0 0 0); + } +} +.hero-actions { + display: flex; + flex-wrap: nowrap; + justify-content: center; + gap: 12px; +} +.hero-btn-primary { + display: inline-flex; + gap: 4px; + background-color: var(--color-primary); + color: #ffffff; + padding: 8px 16px 8px 12px; + border-radius: 10px; + justify-content: center; +} +.hero-btn-primary svg { + stroke: #ffffff; +} +.hero-btn-primary span, +.hero-btn-secondary span { + font-size: 13px; + font-weight: 400; + line-height: 1.8; + display: flex; + align-items: center; +} +.hero-btn-secondary { + display: inline-flex; + gap: 4px; + background-color: #ffffff; + padding: 8px 16px 8px 12px; + border-radius: 10px; + justify-content: center; +} +.hero-back { + position: absolute; + right: 50%; + transform: translate(50%); +} +.piece { + position: absolute; + opacity: 0; + transform: translateY(250px) scale(0.8); + z-index: 20; + will-change: transform; +} + +.piece-1 { + position: absolute; + width: 312px; + left: 167px; + top: 28%; +} + +.piece-2 { + position: absolute; + width: 482px; + left: 208px; + bottom: -144px; +} +.piece-3 { + width: 904px; + left: 50%; + top: 46%; +} + +.piece-4 { + position: absolute; + width: 472px; + right: -243px; + top: 36%; +} + +.piece-5 { + position: absolute; + width: 290px; + right: 59px; + bottom: -92px; +} + +@keyframes showWord { + from { + opacity: 0; + transform: translate(-50%, -50%) scale(0.7); + } + to { + opacity: 0.08; + transform: translate(-50%, -50%) scale(1); + } +} + +@keyframes showHeader { + from { + opacity: 0; + transform: translateY(-100px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +@keyframes showContent { + from { + opacity: 0; + } + to { + opacity: 1; + } +} + +@keyframes risePiece { + from { + opacity: 0; + transform: translate(-50%, -50%) translateY(250px); + } + to { + opacity: 1; + transform: translate(-50%, -50%) translateY(0); + } +} + +@keyframes floating { + 0% { + transform: translateY(0px) translate(-50%, -50%); + } + 50% { + transform: translateY(-18px) translate(-50%, -50%); + } + 100% { + transform: translateY(0px) translate(-50%, -50%); + } +} + +/* ===========================جدیدترین نمونه کارها========================= */ +.related-section > .container { + display: flex; + flex-direction: column; + margin-top: 108px; +} +.related-header { + display: flex; + padding-bottom: 26px; + gap: 8px; + align-items: center; + justify-content: space-between; +} + +.related-title { + font-size: 24px; + font-weight: bold; + line-height: 1.5; +} +.related-button { + display: flex; + gap: 8px; +} +.related-under-box-bottom { + display: flex; + gap: 8px; +} +.related-under-box-bottom span { + font-size: 16px; + font-weight: 400; + line-height: 1.8; + text-decoration: underline; +} +.related-under-box { + display: flex; + gap: 16px; + justify-content: center; + margin-top: 24px; +} +.related-under-box-bottom span, +.related-under-box-bottom svg { + color: var(--color-primary); + fill: var(--color-primary); +} +.related-under-p { + color: #414141; + font-size: 16px; + font-weight: 400; + line-height: 1.8; +} +.related-under-p span { + color: #000000; +} +.related-button span { + font-size: 15px; + font-weight: normal; + line-height: 1.6; +} +.related-button svg { + color: var(--color-primary); +} +.related-button span { + color: var(--color-primary); +} + +.related-button:hover span, +.related-button:hover svg { + color: #32b6ff; + fill: #32b6ff; +} +.related-button:hover span { + transform: translateX(4px); +} +.related-boxes { + display: grid; + grid-template-columns: repeat(2, minmax(350px, 592px)); + gap: 16px; + justify-content: center; +} +.related-card { + width: 100%; + /* aspect-ratio: 4 / 3; */ +} +.related-image { + width: 100%; + /* height: 292px; */ + border-radius: 10px; + overflow: hidden; + position: relative; + object-fit: cover; +} +.reveal-top { + opacity: 0; + transform: translateY(-60px); + transition: + opacity 0.8s ease, + transform 0.8s ease; +} + +.reveal-top.active { + opacity: 1; + transform: translateY(0); +} +.media-container { + width: 100%; + height: 100%; +} +.related-image img, +.media-container video { + width: 100%; + height: 100%; + object-fit: cover; + display: block; + transition: transform 0.5s ease; +} +.related-content { + margin-top: 16px; +} +.related-content h3 { + font-size: 15px; + margin-bottom: 8px; +} +.related-content p { + font-size: 12px; +} +.down-txt { + display: none; + margin-top: 8px; +} +.down-txt span { + font-size: 15px; + font-weight: bold; +} +.overlay-layer { + position: absolute; + inset: 0; + background-image: url(/src/img/overlay.svg); + border-radius: 10px; + display: flex; + align-items: flex-end; + opacity: 0; + visibility: hidden; + transition: + opacity 0.35s ease, + visibility 0.35s ease; + z-index: 2; +} +.related-card:hover .overlay-layer { + opacity: 1; + visibility: visible; +} +.button-overlay { + width: 100%; + display: flex; + justify-content: space-between; + align-items: center; + z-index: 3; + padding: 12px 12px 16px 12px; +} +.button-overlay svg { + width: 24px; + height: 24px; + fill: white; + transition: 0.3s; +} +.date { + color: #ffffff; + font-size: 13px; + font-weight: normal; +} +.namepopup { + color: #ffffff; + font-size: 18px; + font-weight: bold; + line-height: 1.4; +} +.play-btn { + position: absolute; + top: 12px; + left: 12px; + border-radius: 50%; + border: none; + opacity: 0; + display: flex; + justify-content: center; + align-items: center; + z-index: 10; + width: 32px; + height: 32px; +} +.progress-ring { + position: absolute; + top: 13px; + left: 13px; + overflow: visible; + z-index: 20; + transform: rotate(180deg); +} +.progress-circle { + fill: transparent; + stroke: white; + stroke-width: 2; + stroke-linecap: round; +} +.play-icon { + width: 100%; + height: 100%; + fill: white; + position: absolute; + z-index: 3; + transition: + opacity 0.25s ease, + transform 0.25s ease; +} +.icon-play { + opacity: 1; +} +.icon-pause { + opacity: 0; +} +.related-card:hover .icon-pause { + opacity: 1; +} +.related-card:hover .icon-play { + opacity: 0; +} +.is-video .play-btn { + opacity: 1; +} +.is-image .play-btn { + display: none; +} + +/* ==================================خدمات اینوا================================== */ + +.service-section > .container-service-section { + padding: 48px 24px; + border-radius: 10px; + margin-top: 100px; +} +.service-box { + padding: 48px 24px; + background: #f0f4f8; + border-radius: 10px; +} +.container-service-section{ + max-width: 1240px; + padding: 0 20px; + margin: 0 auto; +} +.service-header { + text-align: right; + margin-bottom: 24px; +} + +.service-heading { + font-size: 22px; + font-weight: bold; + color: var(--color-title); + margin-bottom: 8px; +} + +.service-tagline { + color: var(--color-body-text); + font-size: 15px; +} + +.service-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 24px; +} + +.service-card { + background: #fff; + border-radius: 16px; + transition: 0.35s ease; + overflow: hidden; + min-height: 78px; +} + +.service-content { + display: flex; + align-items: center; + justify-content: space-between; + gap: 9px; + + padding: 12px; +} + +.service-text { + flex: 1; +} + +.service-title { + font-size: 16px; + font-weight: bold; + color: var(--color-title); + margin-bottom: 4px; +} + +.service-description { + font-size: 14px; + color: var(--color-text); + line-height: 1.7; +} + +.service-card:hover { + transform: translateY(-6px); +} + +/* ======================= 300پروژه=================================== */ +.comments-section { + margin-top: 99px; +} + +.comments-section-header { + display: flex; + flex-direction: column; + text-align: center; + margin-bottom: 24px; +} + +.comments-section-title { + font-size: 24px; + font-weight: bold; + color: var(--color-title); + margin-bottom: 8px; +} + +.comments-section-description { + font-size: 15px; + font-weight: 400; + color: var(--color-body-text); +} + +.stats-container { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 24px; + margin-bottom: 48px; +} + +.stat-box { + padding: 12px 16px; + border: 1px solid var(--color-pastel-main); + border-radius: 8px; + display: flex; + align-items: center; + justify-content: center; + gap: 8px; +} + +.stat-box p { + color: var(--color-body-text); + font-size: 16px; +} + +.stat-number { + color: var(--color-primary); + font-size: 24px; + font-weight: bold; +} + +/* موبایل */ +.mobile-stat { + display: none; + border: 1px solid var(--color-pastel-main); + border-radius: 8px; + padding: 12px 16px; + align-items: center; + justify-content: center; + text-align: center; + overflow: hidden; +} + +.mobile-content { + display: flex; + gap: 8px; + opacity: 1; + align-items: center; + transform: translateY(0); + transition: + opacity 0.5s ease, + transform 0.5s ease; +} + +.mobile-content.fade-out { + opacity: 0; + transform: translateY(10px); +} + +.mobile-content.fade-in { + opacity: 1; + transform: translateY(0); +} + +.mobile-stat span { + display: block; + color: var(--color-primary); + font-size: 24px; + font-weight: bold; +} + +.mobile-stat p { + font-size: 16px; + font-weight: 400; + color: var(--color-text); +} + +.logo-slider::before, +.logo-slider::after { + content: ''; + position: absolute; + top: 0; + width: 120px; + height: 100%; + z-index: 10; + pointer-events: none; +} + +.logo-slider::before { + left: 0; + background: linear-gradient(to right, #fff 0%, rgba(255, 255, 255, 0) 100%); +} +.logo-slider::after { + right: 0; + background: linear-gradient(to left, #fff 0%, rgba(255, 255, 255, 0) 100%); +} +.logo-slider { + overflow: hidden; + width: 100%; + margin: 16px 0; + position: relative; + direction: ltr; +} + +.slider-track { + display: flex; + gap: 8px; + width: max-content; + will-change: transform; +} + +.slider-right .slider-track { + animation: logo-slide-left 40s linear infinite; +} + +.slider-left .slider-track { + animation: logo-slide-right 40s linear infinite; +} + +.logo-slider:hover .slider-track { + animation-play-state: paused; +} + +@keyframes logo-slide-left { + from { + transform: translateX(0); + } + to { + transform: translateX(-50%); + } +} + +@keyframes logo-slide-right { + from { + transform: translateX(-50%); + } + to { + transform: translateX(0); + } +} + +.logo { + width: 124px; + height: 48px; + flex-shrink: 0; + display: flex; + align-items: center; + justify-content: center; + border-radius: 10px; + background: #fafafa; +} + +.logo img { + max-height: 28px; +} + +.logo-slider:hover .logo img { + filter: grayscale(100%); + opacity: 0.4; +} + +.logo:hover img { + filter: grayscale(0) !important; + opacity: 1 !important; +} + +/* ===================op-section=================================== */ + +.op-section { + margin: auto; + + display: flex; + flex-direction: column; + gap: 24px; + box-sizing: border-box; +} + +.op-section-title { + text-align: right; + display: flex; + flex-direction: column; + gap: 8px; +} + +.op-section-title h2 { + font-size: 20px; + font-weight: 700; + color: #424242; + line-height: 30px; +} +.op-section-title p { + font-size: 14px; + font-weight: 400; + line-height: 26px; + color: #424242; +} +.op-box { + display: flex; + gap: 20px; + overflow-x: auto; + scroll-behavior: smooth; + scroll-snap-type: x mandatory; + scrollbar-width: none; + -webkit-user-select: none; + user-select: none; + margin-top: 48px; +} + +.op-box::-webkit-scrollbar { + height: 6px; +} + +.op-box::-webkit-scrollbar-thumb { + background: #ccc; + border-radius: 10px; + display: none; +} + +.op-card { + min-width: 358px; + height: 243px; + border-radius: 16px; + padding: 24px 16px; + position: relative; + border: #d1d5db solid 1px; + overflow: hidden; + display: flex; + flex-direction: column; + gap: 16px; + /* flex: 0 0 30.5%; */ + scroll-snap-align: start; +} + +.op-card::before { + content: ''; + position: absolute; + inset: 0; + background-image: radial-gradient(rgba(40, 80, 120, 0.05) 1px, transparent 2px); + background-size: 20px 20px; + pointer-events: none; +} +.op-card::after { + content: ''; + position: absolute; + width: 403px; + height: 403px; + bottom: 0px; + right: 20px; + border-radius: 50%; + background: rgba(2, 116, 179, 0.15); + filter: blur(80px); + pointer-events: none; +} +.op-card-text { + font-size: 14px; + font-weight: 400; + line-height: 26px; + color: #424242; + height: 104px; + position: relative; +} + +.op-stars { + display: flex; + gap: 5px; + align-items: center; + height: 20px; +} + +.op-user { + display: flex; + align-items: center; + justify-content: space-between; +} + +.user-info { + display: flex; + gap: 8px; +} + +.avatar { + width: 40px; + height: 40px; + border-radius: 50%; + overflow: hidden; +} + +.avatar img { + width: 100%; + height: 100%; + object-fit: cover; +} + +.user-name { + font-weight: 700; + font-size: 14px; + color: #424242; + padding-left: 4px; +} + +.user-txt { + font-size: 12px; + color: #6e7a86; + font-weight: 400; + line-height: 18px; +} + +.op-pagination { + display: flex; + justify-content: center; + gap: 8px; + margin-top: 20px; +} + +.op-dot { + width: 8px; + height: 8px; + border-radius: 50%; + background: #d1d5db; + margin: 0 4px; + cursor: pointer; + transition: 0.3s; +} + +.op-dot.active { + width: 24px; + border-radius: 10px; + background: #0066ff; +} + +/* ===================از ایده هایتان دست نکشید================================ */ +.consultation-section { + overflow: hidden; + text-align: center; + margin-top: 50px; +} +.consultation-container { + max-width: 1240px; + padding: 0 20px; + margin: 0 auto; +} +.consultation-box { + background-image: url(../images/CTA-pic.webp); + background-repeat: no-repeat; + background-position: center; + background-size: cover; + height: 303px; + border-radius: 10px; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} + +.consultation-title { + color: var(--color-primary); + font-size: 36px; + font-weight: bold; + margin-bottom: 8px; +} +.consultation-title-phone { + display: none; +} +.consultation-text { + color: var(--color-text); + font-size: 16px; + line-height: 1.8; + max-width: 554px; + margin-bottom: 24px; +} + +.consultation-btn { + padding: 8px 16px; + background: #0274b3; + color: #fff; + text-decoration: none; + border-radius: 10px; + font-size: 15px; + font-weight: 400; +} + +/* ================================درباره اینوا============================= */ + +.about-section { + margin: 100px 0; +} + +.about-content { + display: flex; + align-items: center; + justify-content: space-between; + gap: 92px; +} + +.video-wrapper { + flex: 1; + position: relative; +} + +.video-thumbnail { + position: relative; + cursor: pointer; + max-width: 555px; + width: 100%; +} + +.thumb-img { + border-radius: 8px; + width: 100%; + display: block; + object-fit: cover; + height: auto; + aspect-ratio: 16 / 9; +} + +.overlay { + position: absolute; + top: 12px; + bottom: 12px; + right: 8px; + left: 8px; + z-index: 2; + border-radius: 28px; + background: rgba(255, 255, 255, 0.05); + backdrop-filter: blur(53.86px); +} + +.play-btn-about { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + z-index: 10; +} +.play-btn-about svg { + width: 95px; + height: 95px; +} + +.arrow-btn-about { + position: absolute; + top: 37%; + right: 18%; + z-index: 10; +} +.arrow-btn-about svg { + width: 97px; + height: 120px; +} +.inova-about-logo { + position: absolute; + top: 3%; + right: 3%; + z-index: 10; +} +.video-title { + position: absolute; + bottom: 8px; + /* right: 12%; + left: 12%; */ + color: #fff; + font-size: 32px; + font-weight: bold; + z-index: 2; + display: flex; + justify-content: center; + width: 100%; +} + +.video-player { + display: none; + width: 100%; + border-radius: 24px; +} + +.content-wrapper { + flex: 1; + text-align: right; + max-width: 555px; +} + +.badge { + display: inline-block; + padding: 5px 10px; + border: 1px solid var(--color-primary); + color: var(--color-primary); + border-radius: 50px; + font-size: 13px; + margin-bottom: 16px; +} + +.content-wrapper h2 { + font-size: 22px; + line-height: 1.7; + margin-bottom: 16px; + color: var(--color-title); +} + +.content-wrapper p { + font-size: 15px; + line-height: 1.7; + color: var(--color-text); + margin-bottom: 24px; +} + +.about-btn { + display: inline-flex; + align-items: center; + justify-content: center; + gap: 4px; + text-decoration: none; + background: var(--color-primary); + color: #fff; + padding: 8px 16px 8px 12px; + border-radius: 10px; + font-size: 13px; +} + +/* =========================================footer==================================== */ + +footer > .container { + max-width: 1240px; + padding: 0 20px; + margin: 0 auto; +} + +.footer { + margin-top: 183px; + background: #0d1222; + color: #9ea0a7; + position: relative; + padding-top: 141px; + z-index: 1000; +} + +.footer-cta { + position: absolute; + bottom: 88%; + left: 120px; + right: 120px; +} +.footer-cta-content { + background: #0274b2; + border-radius: 10px; + padding: 37px 48px; + display: flex; + align-items: center; + justify-content: space-between; + position: relative; +} +.footer-cta-txt { + display: flex; + flex-direction: column; +} +.footer-cta-txt h2 { + color: #ffffff; + margin-bottom: 8px; + font-size: 24px; + font-weight: bold; + line-height: 1.5; +} +.footer-cta-txt p { + color: #ffffff; + font-size: 15px; + font-weight: 400; + line-height: 1.7; +} +.footer-cta-btn { + background: #fff; + color: var(--color-primary); + text-decoration: none; + padding: 7px 16px 7px 12px; + border-radius: 10px; + display: flex; + gap: 8px; + z-index: 1; +} +.footer-cta-btn span { + font-size: 15px; + line-height: 1.7; + font-weight: 600; +} +.footer-cta-btn svg { + width: 24px; + height: 24px; +} +.footer-imga { + position: absolute; + bottom: 0; + left: 277px; +} +.footer-imgb { + position: absolute; + top: 0; + left: 0; +} +.footer-imgc, +.footer-imgd { + display: none; +} +.footer-container { + display: flex; + justify-content: center; + gap: 28px; + padding-bottom: 40px; +} +.footer-one { + max-width: 347px; + display: flex; + flex-direction: column; + gap: 16px; +} +.footer-icon-two, +.footer-icon-three { + display: flex; + gap: 8px; +} +.footer-icon-two svg { + width: 20px; + height: 24px; + flex-shrink: 0; +} +.footer-column-two { + max-width: 304px; +} +.footer-column-three { + min-width: 161px; +} +.footer-column-four { + min-width: 252px; +} +.footer-icon-three svg { + width: 30px; + height: 24px; + flex-shrink: 0; +} +.ershad-logo { + width: 24px; + height: 24px; +} +.footer-column h3 { + margin-bottom: 24px; + color: #fff; + position: relative; + font-size: 18px; +} +.footer-column h3::after { + content: ''; + position: absolute; + bottom: -8px; + right: 0; + width: 48px; + height: 1.5px; + background: #03aeff; +} +.footer-column ul { + list-style: none; +} +.footer-column ul li { + margin-bottom: 12px; + line-height: 1.8; + color: #9ea0a7; +} +.footer-column a { + text-decoration: none; + color: #9ea0a7; + font-size: 15px; + font-weight: 400; +} +.footer-column div { + font-size: 15px; + font-weight: 400; +} +.footer-column a:hover { + color: var(--color-primary); +} +.footer-logo { + width: 150px; + margin-bottom: 20px; +} +.footer-column-txt { + color: #9ea0a7; + font-size: 15px; + font-weight: 400; + line-height: 1.8; +} +.social-links { + display: flex; + gap: 8px; +} +.social-links a { + width: 32px; + height: 32px; + display: flex; + align-items: center; + justify-content: center; + transition: 0.3s; +} +.social-links SVG { + width: 32px; + height: 32px; +} + +.footer-bottom { + text-align: right; + padding: 16px 0 24px 0; + color: #9ea0a7; + font-size: 12px; + font-weight: 400; + line-height: 1.8; +} +.footer-bottom span { + color: #cfd0d3; +} +.footer-bottom-line { + position: absolute; + bottom: 0; + margin-bottom: 62px; + width: 100%; + height: 1px; + background: #3d414e; +} diff --git a/src/assets/icons/portfolioGallery.svg b/src/assets/icons/portfolioGallery.svg new file mode 100644 index 0000000..bbe4b26 --- /dev/null +++ b/src/assets/icons/portfolioGallery.svg @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/icons/portfolioP.svg b/src/assets/icons/portfolioP.svg new file mode 100644 index 0000000..b16633c --- /dev/null +++ b/src/assets/icons/portfolioP.svg @@ -0,0 +1,1426 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/src/assets/images/.gitkeep b/src/assets/images/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/images/CTA-pic.webp b/src/assets/images/CTA-pic.webp new file mode 100644 index 0000000..9092250 Binary files /dev/null and b/src/assets/images/CTA-pic.webp differ diff --git a/src/assets/js/homepage.js b/src/assets/js/homepage.js new file mode 100644 index 0000000..17c6320 --- /dev/null +++ b/src/assets/js/homepage.js @@ -0,0 +1,392 @@ +// ====================================هدر=========================== +const headerMenuBtn = document.querySelector('.header-menu-toggle'); +const headerMobileMenu = document.querySelector('.header-mobile-menu'); + +headerMenuBtn.addEventListener('click', () => { + headerMobileMenu.classList.toggle('active'); +}); + +const headerCloseBtn = document.querySelector('.header-mobile-close'); + +headerCloseBtn.addEventListener('click', () => { + headerMobileMenu.classList.remove('active'); +}); + +// ==========================هیروسکشن=================================== + +window.addEventListener('load', () => { + const bgWord = document.querySelector('.hero-bg-word'); + const header = document.querySelector('.hero-header'); + const content = document.querySelector('.hero-content'); + const pieces = document.querySelectorAll('.piece'); + + const heroSection = document.querySelector('.hero-section'); + + const observer = new IntersectionObserver( + ([entry]) => { + if (!entry.isIntersecting) { + header.classList.add('sticky'); + } else { + header.classList.remove('sticky'); + } + }, + { + threshold: 0.05, + } + ); + + observer.observe(heroSection); + const inovaDuration = 2800; + const pauseAfterInova = 600; + + const headerDuration = 800; + const contentDuration = 600; + + const pauseAfterContent = 600; + + const piecesDuration = 1000; + + // STEP 1 + setTimeout(() => { + bgWord.style.animation = 'revealInova 500ms ease-out 150ms forwards'; + }, 0); + + // STEP 2 + setTimeout(() => { + header.style.animation = 'showHeader .8s ease forwards'; + + content.style.animation = 'showContent .6s ease forwards'; + }, 1200); + + // STEP 3 + setTimeout(() => { + pieces.forEach((piece) => { + piece.style.animation = `risePiece 1200ms ease-in-out forwards`; + }); + }, 1800); + + // STEP 4 + setTimeout(() => { + pieces.forEach((piece, index) => { + piece.style.animation += `, + floating ${4 + index}s ease-in-out 2000ms infinite`; + }); + }, 2400); +}); + +const wrapper = document.querySelector('.words-wrapper'); + +let index = 0; + +setInterval(() => { + index = (index + 1) % 3; + + wrapper.style.transform = `translateY(-${index * 50}px)`; +}, 1400); + +// =============== جدیدترین نمونه کارها ====================================== +function initRelatedSection(section) { + const cards = section.querySelectorAll('.related-card'); + + cards.forEach((card) => { + const container = card.querySelector('.media-container'); + + if (!container) return; + if (container.dataset.initialized === 'true') return; + container.dataset.initialized = 'true'; + + const progressCircle = card.querySelector('.progress-circle'); + const type = container.dataset.type; + const src = container.dataset.src; + + if (!type || !src) return; + + card.classList.add(type === 'video' ? 'is-video' : 'is-image'); + if (type === 'video') { + const ext = src.split('.').pop().toLowerCase(); + const video = document.createElement('video'); + video.muted = true; + video.playsInline = true; + video.preload = 'metadata'; + + const source = document.createElement('source'); + source.src = src; + source.type = `video/${ext}`; + + video.appendChild(source); + container.appendChild(video); + + if (!progressCircle) return; + const radius = progressCircle.r.baseVal.value; + const circumference = 2 * Math.PI * radius; + progressCircle.style.strokeDasharray = circumference; + progressCircle.style.strokeDashoffset = circumference; + + let stopTimeout; + + card.addEventListener('mouseenter', async () => { + clearTimeout(stopTimeout); + + try { + video.currentTime = 0; + + await video.play(); + + progressCircle.style.transition = 'none'; + progressCircle.style.strokeDashoffset = circumference; + + requestAnimationFrame(() => { + progressCircle.style.transition = 'stroke-dashoffset 5s linear'; + + progressCircle.style.strokeDashoffset = 0; + }); + + stopTimeout = setTimeout(() => { + video.pause(); + video.currentTime = 0; + + progressCircle.style.transition = 'none'; + progressCircle.style.strokeDashoffset = circumference; + }, 5000); + } catch (err) { + console.error(err); + } + }); + + card.addEventListener('mouseleave', () => { + clearTimeout(stopTimeout); + + video.pause(); + video.currentTime = 0; + + progressCircle.style.transition = 'none'; + progressCircle.style.strokeDashoffset = circumference; + }); + card.addEventListener('click', () => { + if (type === 'video') { + openVideoPopup(src); + } else { + openImagePopup(src); + } + }); + } else if (type === 'image') { + const img = document.createElement('img'); + img.src = src; + img.alt = 'portfolio'; + + container.appendChild(img); + } + }); +} +function initGalleryFilter(section) { + const tabs = section.querySelectorAll('.tabs button'); + const cards = section.querySelectorAll('.related-card'); + + tabs.forEach((tab) => { + tab.addEventListener('click', () => { + tabs.forEach((btn) => { + btn.classList.remove('current'); + }); + + tab.classList.add('current'); + + const text = tab.querySelector('.txt')?.textContent.trim(); + cards.forEach((card) => { + const media = card.querySelector('.media-container'); + if (!media) return; + + const type = media.dataset.type; + if (text === 'همه') { + card.style.display = ''; + } else if (text === 'ویدیو') { + if (type === 'video') { + card.style.display = ''; + } else { + card.style.display = 'none'; + } + } else if (text === 'تصاویر') { + if (type === 'image') { + card.style.display = ''; + } else { + card.style.display = 'none'; + } + } + }); + }); + }); +} + +document.querySelectorAll('.related-content p').forEach((item) => { + item.addEventListener('click', (e) => { + e.preventDefault(); + e.stopPropagation(); + }); +}); +document.addEventListener('DOMContentLoaded', () => { + document.querySelectorAll('[data-related-section]').forEach((section) => { + initRelatedSection(section); + initGalleryFilter(section); + }); +}); +// relatedCards.forEach((card, index) => { +// card.addEventListener('click', (e) => { +// if (e.target.closest('.play-btn')) return; + +// openPopupByIndex(index + 1); +// }); +// }); + +const revealElements = document.querySelectorAll('.reveal-top'); + +const observer = new IntersectionObserver( + (entries) => { + entries.forEach((entry) => { + if (entry.isIntersecting) { + entry.target.classList.add('active'); + observer.unobserve(entry.target); + } + }); + }, + { + threshold: 0.2, + } +); + +revealElements.forEach((el) => observer.observe(el)); +// =========================================== 300پروژه ================================================ + +document.addEventListener('DOMContentLoaded', () => { + const stats = [ + { number: '1.5X', text: 'افزایش رشد/فروش' }, + { number: '45+', text: 'تعداد مشتریان' }, + { number: '91%', text: 'رضایت کارفرمایان' }, + { number: '300+', text: 'پروژه موفق' }, + ]; + + const numberEl = document.getElementById('mobileNumber'); + const textEl = document.getElementById('mobileText'); + const content = document.querySelector('.mobile-content'); + + let index = 0; + + setInterval(() => { + content.classList.add('fade-out'); + + setTimeout(() => { + index = (index + 1) % stats.length; + + numberEl.textContent = stats[index].number; + textEl.textContent = stats[index].text; + + content.classList.remove('fade-out'); + }, 500); + }, 3000); +}); + +const slider = document.querySelector('.op-box'); +const cards = document.querySelectorAll('.op-card'); +const pagination = document.querySelector('.op-pagination'); + +let cardWidth; +let cardsPerPage; +let totalPages; + +function setupSlider() { + const style = window.getComputedStyle(slider); + const gap = parseInt(style.gap) || 0; + + cardWidth = cards[0].offsetWidth + gap; + + cardsPerPage = Math.round(slider.offsetWidth / cardWidth); + if (cardsPerPage < 1) cardsPerPage = 1; + + totalPages = Math.ceil(cards.length / cardsPerPage); + + pagination.innerHTML = ''; + + for (let i = 0; i < totalPages; i++) { + const dot = document.createElement('div'); + dot.classList.add('op-dot'); + + if (i === 0) dot.classList.add('active'); + + dot.addEventListener('click', () => { + const scrollPosition = i * cardsPerPage * cardWidth; + + slider.scrollTo({ + left: scrollPosition, + behavior: 'smooth', + }); + }); + + pagination.appendChild(dot); + } +} + +setupSlider(); + +window.addEventListener('resize', setupSlider); + +slider.addEventListener('scroll', () => { + const index = Math.round(Math.abs(slider.scrollLeft) / cardWidth); + const page = Math.floor(index / cardsPerPage); + + const dots = document.querySelectorAll('.op-dot'); + + dots.forEach((d) => d.classList.remove('active')); + + if (dots[page]) { + dots[page].classList.add('active'); + } +}); +let isDown = false; +let startX; +let scrollLeft; + +slider.addEventListener('mousedown', (e) => { + isDown = true; + slider.classList.add('active'); + startX = e.pageX - slider.offsetLeft; + scrollLeft = slider.scrollLeft; + + slider.style.cursor = 'grabbing'; +}); + +slider.addEventListener('mouseleave', () => { + isDown = false; + slider.style.cursor = 'grab'; +}); + +slider.addEventListener('mouseup', () => { + isDown = false; + slider.style.cursor = 'grab'; +}); + +slider.addEventListener('mousemove', (e) => { + if (!isDown) return; + e.preventDefault(); + + const x = e.pageX - slider.offsetLeft; + const walk = (x - startX) * 2; + slider.scrollLeft = scrollLeft - walk; +}); +slider.style.cursor = 'grab'; + +// ======================================== + +document.querySelectorAll('.slider-track').forEach((track) => { + const items = Array.from(track.children); + items.forEach((item) => track.appendChild(item.cloneNode(true))); +}); + +// ================================درباره اینوا============================= +const thumbnail = document.getElementById('videoThumbnail'); +const video = document.getElementById('aboutVideo'); + +thumbnail.addEventListener('click', () => { + thumbnail.style.display = 'none'; + + video.style.display = 'block'; + + video.play(); +}); diff --git a/src/components/.gitkeep b/src/components/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-Black.woff b/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-Black.woff new file mode 100644 index 0000000..8cdd87a Binary files /dev/null and b/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-Black.woff differ diff --git a/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-Bold.woff b/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-Bold.woff new file mode 100644 index 0000000..97c2ba6 Binary files /dev/null and b/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-Bold.woff differ diff --git a/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-ExtraBlack.woff b/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-ExtraBlack.woff new file mode 100644 index 0000000..6ba65e5 Binary files /dev/null and b/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-ExtraBlack.woff differ diff --git a/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-ExtraBold.woff b/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-ExtraBold.woff new file mode 100644 index 0000000..ea45bdf Binary files /dev/null and b/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-ExtraBold.woff differ diff --git a/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-Light.woff b/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-Light.woff new file mode 100644 index 0000000..c9895eb Binary files /dev/null and b/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-Light.woff differ diff --git a/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-Regular.woff b/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-Regular.woff new file mode 100644 index 0000000..1cedfdf Binary files /dev/null and b/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-Regular.woff differ diff --git a/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-SemiBold.woff b/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-SemiBold.woff new file mode 100644 index 0000000..2032742 Binary files /dev/null and b/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-SemiBold.woff differ diff --git a/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-Thin.woff b/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-Thin.woff new file mode 100644 index 0000000..44ac03a Binary files /dev/null and b/src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-Thin.woff differ diff --git a/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-Black.woff2 b/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-Black.woff2 new file mode 100644 index 0000000..4e9fe01 Binary files /dev/null and b/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-Black.woff2 differ diff --git a/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-Bold.woff2 b/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-Bold.woff2 new file mode 100644 index 0000000..19b4bb3 Binary files /dev/null and b/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-Bold.woff2 differ diff --git a/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-ExtraBlack.woff2 b/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-ExtraBlack.woff2 new file mode 100644 index 0000000..4791333 Binary files /dev/null and b/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-ExtraBlack.woff2 differ diff --git a/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-ExtraBold.woff2 b/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-ExtraBold.woff2 new file mode 100644 index 0000000..c4f86ee Binary files /dev/null and b/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-ExtraBold.woff2 differ diff --git a/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-Light.woff2 b/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-Light.woff2 new file mode 100644 index 0000000..530dfcf Binary files /dev/null and b/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-Light.woff2 differ diff --git a/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-Regular.woff2 b/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-Regular.woff2 new file mode 100644 index 0000000..fd16033 Binary files /dev/null and b/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-Regular.woff2 differ diff --git a/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-SemiBold.woff2 b/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-SemiBold.woff2 new file mode 100644 index 0000000..7d070d8 Binary files /dev/null and b/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-SemiBold.woff2 differ diff --git a/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-Thin.woff2 b/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-Thin.woff2 new file mode 100644 index 0000000..19c44b9 Binary files /dev/null and b/src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-Thin.woff2 differ diff --git a/src/core/javascript/core.js b/src/core/javascript/core.js new file mode 100644 index 0000000..e69de29 diff --git a/src/core/stylesheet/core.css b/src/core/stylesheet/core.css new file mode 100644 index 0000000..3b94478 --- /dev/null +++ b/src/core/stylesheet/core.css @@ -0,0 +1,232 @@ +@font-face { + font-family: Yekan Bakh FaNum; + font-style: normal; + font-weight: 100; + src: + url('../fonts/yekanbakhpro/woff/YekanBakhFaNum-thin.woff') format('woff'), + url('../fonts/yekanbakhpro/woff2/YekanBakhFaNum-thin.woff2') format('woff2'); +} + +@font-face { + font-family: Yekan Bakh FaNum; + font-style: normal; + font-weight: 300; + src: + url('../fonts/yekanbakhpro/woff/YekanBakhFaNum-Light.woff') format('woff'), + url('../fonts/yekanbakhpro/woff2/YekanBakhFaNum-Light.woff2') format('woff2'); +} + +@font-face { + font-family: Yekan Bakh FaNum; + font-style: normal; + font-weight: normal; + src: + url('../fonts/yekanbakhpro/woff/YekanBakhFaNum-Regular.woff') format('woff'), + url('../fonts/yekanbakhpro/woff2/YekanBakhFaNum-Regular.woff2') format('woff2'); +} + +@font-face { + font-family: Yekan Bakh FaNum; + font-style: normal; + font-weight: 600; + src: + url('../fonts/yekanbakhpro/woff/YekanBakhFaNum-SemiBold.woff') format('woff'), + url('../fonts/yekanbakhpro/woff2/YekanBakhFaNum-SemiBold.woff2') format('woff2'); +} + +@font-face { + font-family: Yekan Bakh FaNum; + font-style: normal; + font-weight: bold; + src: + url('../fonts/yekanbakhpro/woff/YekanBakhFaNum-Bold.woff') format('woff'), + url('../fonts/yekanbakhpro/woff2/YekanBakhFaNum-Bold.woff2') format('woff2'); +} + +@font-face { + font-family: Yekan Bakh FaNum; + font-style: normal; + font-weight: 800; + src: + url('../fonts/yekanbakhpro/woff/Yekan Bakh FaNum-ExtraBold.woff') format('woff'), + url('../fonts/yekanbakhpro/woff2/Yekan Bakh FaNum-ExtraBold.woff2') format('woff2'); +} + +@font-face { + font-family: Yekan Bakh FaNum; + font-style: normal; + font-weight: 900; + src: + url('../fonts/yekanbakhpro/woff/Yekan Bakh FaNum-Black.woff') format('woff'), + url('../fonts/yekanbakhpro/woff2/Yekan Bakh FaNum-Black.woff2') format('woff2'); +} + +@font-face { + font-family: Yekan Bakh FaNum; + font-style: normal; + font-weight: 950; + src: + url('../fonts/yekanbakhpro/woff/Yekan Bakh FaNum-ExtraBlack.woff') format('woff'), + url('../fonts/yekanbakhpro/woff2/Yekan Bakh FaNum-ExtraBlack.woff2') format('woff2'); +} +:root { + --color-primary: #0274b3; + --color-title: #1a1a2e; + --color-text: #505068; + --color-body-text: #6a6a6a; + --bg-gray: #f9f9f9; + --color-pastel-main: #c5d7ec; + + --blue-50: #eaf7ff; + --blue-100: #c5eaff; + --blue-150: #a1ddff; + --blue-200: #7cd0ff; + --blue-300: #57c3ff; + --blue-400: #32b6ff; + --blue-500: #1796dc; + --blue-600: #0274b3; /* همان primary */ + --blue-700: #00598a; + --blue-800: #003f61; + + /* Breakpoints */ + /* --breakpoint-sm: 576px; + --breakpoint-md: 768px; + --breakpoint-lg: 992px; + --breakpoint-xl: 1200px; + --breakpoint-xxl: 1400px; */ +} +* { + margin: 0; + padding: 0; + direction: rtl; + box-sizing: border-box; + font-family: 'Yekan Bakh FaNum', sans-serif; + font-weight: normal; +} +html { + scroll-behavior: smooth; + /* scrollbar-gutter: stable; */ +} +h1, +h2, +h3, +h4, +h5, +h6 { + font-weight: bold; + line-height: 1.5; + color: var(--color-title); +} +h1 { + font-size: 36px; +} +h2 { + font-size: 24px; +} +h3 { + font-size: 22px; +} +h4 { + font-size: 20px; +} +h5 { + font-size: 15px; +} +p { + line-height: 1.75; + font-size: 15px; + color: var(--color-text); +} +a { + text-decoration: none; + line-height: 1.75; + color: var(--blue-500); +} +div, +span, +button, +a, +li { + line-height: inherit; +} +i { + font-style: normal; +} +/* برای Chrome، Edge و Safari */ + +@media (max-width: 767px) { + h1 { + font-size: 24px; + } + h2 { + font-size: 22px; + } + h3 { + font-size: 18px; + } + h4 { + font-size: 16px; + } + h5 { + font-size: 14px; + } +} + +@media screen and (-webkit-min-device-pixel-ratio: 0) { + *::-webkit-scrollbar { + width: 10px; + } + + *::-webkit-scrollbar-track { + background: #fff; + } + + *::-webkit-scrollbar-thumb { + background-color: var(--color-primary); + border-radius: 10px; + border: 3px solid #fff; + } +} + +/* برای Firefox */ +@-moz-document url-prefix() { + * { + scrollbar-width: thin; + scrollbar-color: var(--color-primary) #fff; + } +} + +::selection { + background: var(--color-primary); + color: #fff; +} + +/* Hide number arrows */ + +/* Chrome, Safari, Edge, Opera */ +input::-webkit-outer-spin-button, +input::-webkit-inner-spin-button { + -webkit-appearance: none; + margin: 0; +} + +/* Firefox */ +input[type='number'] { + -moz-appearance: textfield; +} +button { + border: none; + outline: none; + background: none; + cursor: pointer; +} +/* Hide scrollbar for Chrome, Safari and Opera */ +.no-scrollbar::-webkit-scrollbar { + display: none; +} + +/* Hide scrollbar for IE, Edge and Firefox */ +.no-scrollbar { + -ms-overflow-style: none; /* IE and Edge */ + scrollbar-width: none; /* Firefox */ +} diff --git a/src/templates/.gitkeep b/src/templates/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 0000000..a3a0486 --- /dev/null +++ b/vite.config.js @@ -0,0 +1,28 @@ +import { defineConfig } from 'vite'; +import { resolve } from 'path'; + +export default defineConfig({ + resolve: { + alias: { + '@': resolve(__dirname, 'src'), // @ → src/ + '@core': resolve(__dirname, 'src/core'), + '@components': resolve(__dirname, 'src/components'), + }, + }, + + build: { + rollupOptions: { + input: { + main: resolve(__dirname, 'index.html'), + footer: resolve(__dirname, 'homepage.html'), + }, + }, + manifest: true, + cssCodeSplit: true, + }, + + server: { + open: true, + port: 5173, + }, +});