Initial commit
This commit is contained in:
25
.gitignore
vendored
Normal file
25
.gitignore
vendored
Normal file
@@ -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?
|
||||||
4
.prettierignore
Normal file
4
.prettierignore
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
dist/
|
||||||
|
node_modules/
|
||||||
|
public/
|
||||||
|
*.min.js
|
||||||
13
.prettierrc.json
Normal file
13
.prettierrc.json
Normal file
@@ -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"
|
||||||
|
}
|
||||||
4
.vscode/extensions.json
vendored
Normal file
4
.vscode/extensions.json
vendored
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"recommendations": ["esbenp.prettier-vscode"],
|
||||||
|
"unwantedRecommendations": []
|
||||||
|
}
|
||||||
19
.vscode/settings.json
vendored
Normal file
19
.vscode/settings.json
vendored
Normal file
@@ -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"
|
||||||
|
}
|
||||||
|
}
|
||||||
32
README.md
Normal file
32
README.md
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
# 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
|
||||||
|
```
|
||||||
785
archive.html
Normal file
785
archive.html
Normal file
@@ -0,0 +1,785 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="fa" dir="rtl">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<link rel="stylesheet" href="./src/core/stylesheet/core.css" />
|
||||||
|
<link rel="stylesheet" href="./src/assets/css/archive.css" />
|
||||||
|
<link rel="stylesheet" href="./src/assets/css/archive-responsive.css" />
|
||||||
|
<script type="module" src="./src/assets/js/archive.js" defer></script>
|
||||||
|
|
||||||
|
<title></title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="root">
|
||||||
|
<!-- ==============================================هیرو سکشن================================= -->
|
||||||
|
|
||||||
|
<section class="hero-section">
|
||||||
|
<div class="container-hero-section">
|
||||||
|
<div class="hero-section-wrapper">
|
||||||
|
<div class="hero-card">
|
||||||
|
<div class="hero-circles" aria-hidden="true">
|
||||||
|
<div class="circle circle--1"></div>
|
||||||
|
<div class="circle circle--2"></div>
|
||||||
|
<div class="circle circle--3"></div>
|
||||||
|
<div class="circle circle--4"></div>
|
||||||
|
</div>
|
||||||
|
<div class="hero-hollow hero-hollow--left" aria-hidden="true"></div>
|
||||||
|
<div class="hero-hollow hero-hollow--right" aria-hidden="true"></div>
|
||||||
|
<div class="hero-dot-pattern" aria-hidden="true"></div>
|
||||||
|
<div class="hero-content">
|
||||||
|
<h2 class="hero-title">
|
||||||
|
هر پروژه یک داستان است؛ داستانی که شما
|
||||||
|
<br />
|
||||||
|
قهرمان آن هستید.
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
<p class="hero-txt">
|
||||||
|
هر پروژه داستانی از صیقل خوردن یک ایده و تبدیل آن به یک موفقیت تجاری است.
|
||||||
|
نمونههای منتخب ما را تماشا کنید.
|
||||||
|
</p>
|
||||||
|
<div class="stats">
|
||||||
|
<div class="stat-item">
|
||||||
|
<span class="counter" data-target="300" data-prefix="+">0</span>
|
||||||
|
|
||||||
|
<div class="stat-text">پروژه موفق</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="stat-item">
|
||||||
|
<span class="counter" data-target="92" data-suffix="%">0</span>
|
||||||
|
|
||||||
|
<div class="stat-text">رضایت کارفرمایان</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="stat-item">
|
||||||
|
<span class="counter" data-target="45" data-suffix="+">0</span>
|
||||||
|
|
||||||
|
<div class="stat-text">تعداد مشتریان</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="stat-item">
|
||||||
|
<span class="counter" data-target="1.5" data-suffix="x">0</span>
|
||||||
|
|
||||||
|
<div class="stat-text">افزایش رشد/فروش مشتریان</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- ============================================== آرشیوسکشن================================= -->
|
||||||
|
<section
|
||||||
|
class="gallery-section related-section"
|
||||||
|
data-related-section="gallery"
|
||||||
|
data-nav-title="گالری"
|
||||||
|
>
|
||||||
|
<header class="gallery-section-header">
|
||||||
|
<h2>جدیدترین نمونهکارها</h2>
|
||||||
|
<p>به این سبک پروژهها علاقه دارید؟ پس پروژههای زیر را ببینید</p>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<!-- ===== STICKY FILTER BAR ===== -->
|
||||||
|
<div class="filter-sticky-wrapper">
|
||||||
|
<div class="filter-bar" id="filterBar">
|
||||||
|
<div class="filter-bar-inner">
|
||||||
|
<!-- دکمه فیلتر کردن / بستن -->
|
||||||
|
<button class="filter-toggle-btn" id="filterToggleBtn" type="button">
|
||||||
|
<span id="filterToggleText">فیلتر کردن</span>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<!-- کنترلهای دسکتاپ (بعد از باز شدن نمایش داده میشه) -->
|
||||||
|
<div class="filter-controls" id="filterControls">
|
||||||
|
<!-- دسته بندیها -->
|
||||||
|
<div class="filter-group">
|
||||||
|
<button class="filter-group-btn" id="categoryBtn" type="button">
|
||||||
|
<svg aria-hidden="true" width="20" height="20">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#filter"></use>
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
دسته بندیها
|
||||||
|
<span class="filter-badge" id="categoryBadge">0</span>
|
||||||
|
<svg aria-hidden="true" width="20" height="20">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#down-blue-more"></use>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
<div class="filter-dropdown" id="categoryDropdown">
|
||||||
|
<label class="filter-check-item">
|
||||||
|
<input
|
||||||
|
type="checkbox"
|
||||||
|
class="filter-checkbox category-checkbox"
|
||||||
|
value="طراحی سایت"
|
||||||
|
/>
|
||||||
|
<span>طراحی سایت</span>
|
||||||
|
</label>
|
||||||
|
<label class="filter-check-item">
|
||||||
|
<input
|
||||||
|
type="checkbox"
|
||||||
|
class="filter-checkbox category-checkbox"
|
||||||
|
value="گیمیفیکیشن"
|
||||||
|
/>
|
||||||
|
<span>گیمیفیکیشن</span>
|
||||||
|
</label>
|
||||||
|
<label class="filter-check-item">
|
||||||
|
<input
|
||||||
|
type="checkbox"
|
||||||
|
class="filter-checkbox category-checkbox"
|
||||||
|
value="سئو"
|
||||||
|
/>
|
||||||
|
<span>سئو</span>
|
||||||
|
</label>
|
||||||
|
<label class="filter-check-item">
|
||||||
|
<input
|
||||||
|
type="checkbox"
|
||||||
|
class="filter-checkbox category-checkbox"
|
||||||
|
value="برندینگ"
|
||||||
|
/>
|
||||||
|
<span>برندینگ</span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- تگها -->
|
||||||
|
<div class="filter-group">
|
||||||
|
<button class="filter-group-btn" id="tagsBtn" type="button">
|
||||||
|
<svg aria-hidden="true" width="20" height="20">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#tag"></use>
|
||||||
|
</svg>
|
||||||
|
تگها
|
||||||
|
<span class="filter-badge" id="tagBadge">0</span>
|
||||||
|
<svg aria-hidden="true" width="20" height="20">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#down-blue-more"></use>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
<div class="filter-dropdown" id="tagsDropdown">
|
||||||
|
<label class="filter-check-item">
|
||||||
|
<input type="checkbox" class="filter-checkbox tag-checkbox" value="تگ 1" />
|
||||||
|
<span>تگ 1</span>
|
||||||
|
</label>
|
||||||
|
<label class="filter-check-item">
|
||||||
|
<input type="checkbox" class="filter-checkbox tag-checkbox" value="تگ 2" />
|
||||||
|
<span>تگ 2</span>
|
||||||
|
</label>
|
||||||
|
<label class="filter-check-item">
|
||||||
|
<input type="checkbox" class="filter-checkbox tag-checkbox" value="تگ 3" />
|
||||||
|
<span>تگ 3</span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- حذف فیلتر -->
|
||||||
|
<button class="filter-clear-btn" id="filterClearBtn" type="button" disabled>
|
||||||
|
<svg aria-hidden="true" width="20" height="20">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#trash"></use>
|
||||||
|
</svg>
|
||||||
|
حذف فیلتر
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<!-- تعداد پروژهها -->
|
||||||
|
<span class="filter-count-text">150 پروژه</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- ===== MOBILE POPUP ===== -->
|
||||||
|
<div class="filter-mobile-overlay" id="filterMobileOverlay">
|
||||||
|
<div class="filter-mobile-popup">
|
||||||
|
<div class="filter-mobile-header">
|
||||||
|
<h3 class="filter-mobile-title" id="filterMobileTitle">فیلتر کردن</h3>
|
||||||
|
<button class="filter-mobile-close" id="filterMobileClose" type="button">
|
||||||
|
<svg aria-hidden="true" width="24" height="24">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#close"></use>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
<button class="filter-mobile-back" id="filterMobileBack" type="button">
|
||||||
|
<span>برگشت</span>
|
||||||
|
<svg aria-hidden="true" width="20" height="20">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#back"></use>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- نمای اصلی -->
|
||||||
|
<div class="filter-mobile-main" id="filterMobileMain">
|
||||||
|
<button class="filter-mobile-option-btn" id="mobileCategoryBtn" type="button">
|
||||||
|
<div>
|
||||||
|
<span class="tag-txt">دسته بندیها</span>
|
||||||
|
|
||||||
|
<span class="filter-badge" id="mobileCategoryBadge">0</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<svg aria-hidden="true" width="24" height="24">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#chevron-left"></use>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
<button class="filter-mobile-option-btn" id="mobileTagsBtn" type="button">
|
||||||
|
<div>
|
||||||
|
<span class="tag-txt">تگها</span>
|
||||||
|
<span class="filter-badge" id="mobileTagBadge">0</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<svg aria-hidden="true" width="24" height="24">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#chevron-left"></use>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- زیرمنو: دستهبندی -->
|
||||||
|
<div class="filter-mobile-sub" id="filterMobileCategorySub">
|
||||||
|
<label class="filter-check-item">
|
||||||
|
<input type="checkbox" class="filter-checkbox mob-cat-cb" value="طراحی سایت" /><span
|
||||||
|
>طراحی سایت</span
|
||||||
|
>
|
||||||
|
</label>
|
||||||
|
<label class="filter-check-item">
|
||||||
|
<input type="checkbox" class="filter-checkbox mob-cat-cb" value="گیمیفیکیشن" /><span
|
||||||
|
>گیمیفیکیشن</span
|
||||||
|
>
|
||||||
|
</label>
|
||||||
|
<label class="filter-check-item">
|
||||||
|
<input type="checkbox" class="filter-checkbox mob-cat-cb" value="سئو" /><span
|
||||||
|
>سئو</span
|
||||||
|
>
|
||||||
|
</label>
|
||||||
|
<label class="filter-check-item">
|
||||||
|
<input type="checkbox" class="filter-checkbox mob-cat-cb" value="برندینگ" /><span
|
||||||
|
>برندینگ</span
|
||||||
|
>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- زیرمنو: تگها -->
|
||||||
|
<div class="filter-mobile-sub" id="filterMobileTagsSub">
|
||||||
|
<label class="filter-check-item">
|
||||||
|
<input type="checkbox" class="filter-checkbox mob-tag-cb" value="تگ 1" /><span
|
||||||
|
>تگ 1</span
|
||||||
|
>
|
||||||
|
</label>
|
||||||
|
<label class="filter-check-item">
|
||||||
|
<input type="checkbox" class="filter-checkbox mob-tag-cb" value="تگ 2" /><span
|
||||||
|
>تگ 2</span
|
||||||
|
>
|
||||||
|
</label>
|
||||||
|
<label class="filter-check-item">
|
||||||
|
<input type="checkbox" class="filter-checkbox mob-tag-cb" value="تگ 3" /><span
|
||||||
|
>تگ 3</span
|
||||||
|
>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="filter-mobile-footer">
|
||||||
|
<button class="filter-mobile-apply" id="filterMobileApply" type="button">
|
||||||
|
اعمال فیلتر
|
||||||
|
</button>
|
||||||
|
<button class="filter-mobile-clear" id="filterMobileClear" type="button" disabled>
|
||||||
|
حذف فیلترها
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="container">
|
||||||
|
<div class="related-boxes">
|
||||||
|
<a class="related-card" href="">
|
||||||
|
<div class="related-image">
|
||||||
|
<div
|
||||||
|
data-type="video"
|
||||||
|
class="media-container"
|
||||||
|
data-src="./public/images/videotest.mp4"
|
||||||
|
></div>
|
||||||
|
|
||||||
|
<button class="play-btn" aria-label="play-video">
|
||||||
|
<svg class="progress-ring" width="22" height="22">
|
||||||
|
<circle class="progress-circle" cx="22" cy="22" r="11" />
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
<svg class="play-icon icon-play" aria-hidden="true">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#play-icon"></use>
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
<svg class="play-icon icon-pause" aria-hidden="true">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#pause-icon"></use>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<div class="overlay-layer">
|
||||||
|
<div class="button-overlay">
|
||||||
|
<span class="date">23 آذر 1404</span>
|
||||||
|
|
||||||
|
<svg aria-hidden="true" height="24" width="24">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#up-left-arr"></use>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="related-content">
|
||||||
|
<h3>طراحی وبسایت حسابداری فرداد</h3>
|
||||||
|
<p>طراحی سایت | گیمیفیکیشن</p>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a class="related-card" href="">
|
||||||
|
<div class="related-image">
|
||||||
|
<div
|
||||||
|
data-type="image"
|
||||||
|
class="media-container"
|
||||||
|
data-src="./public/images/2.png"
|
||||||
|
></div>
|
||||||
|
<button class="play-btn" aria-label="play-video">
|
||||||
|
<svg class="progress-ring" width="22" height="22">
|
||||||
|
<circle class="progress-circle" cx="22" cy="22" r="11" />
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
<svg class="play-icon icon-play" aria-hidden="true">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#play-icon"></use>
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
<svg class="play-icon icon-pause" aria-hidden="true">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#pause-icon"></use>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
<div class="overlay-layer">
|
||||||
|
<div class="button-overlay">
|
||||||
|
<span class="date">23 آذر 1404</span>
|
||||||
|
|
||||||
|
<svg aria-hidden="true" height="24" width="24">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#up-left-arr"></use>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="related-content">
|
||||||
|
<h3>طراحی وبسایت زبان مهر</h3>
|
||||||
|
<p>طراحی سایت | گیمیفیکیشن</p>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a class="related-card" href="">
|
||||||
|
<div class="related-image">
|
||||||
|
<div
|
||||||
|
data-type="image"
|
||||||
|
class="media-container"
|
||||||
|
data-src="./public/images/3.png"
|
||||||
|
></div>
|
||||||
|
<button class="play-btn" aria-label="play-video">
|
||||||
|
<svg class="progress-ring" width="22" height="22">
|
||||||
|
<circle class="progress-circle" cx="22" cy="22" r="11" />
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
<svg class="play-icon icon-play" aria-hidden="true">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#play-icon"></use>
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
<svg class="play-icon icon-pause" aria-hidden="true">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#pause-icon"></use>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
<div class="overlay-layer">
|
||||||
|
<div class="button-overlay">
|
||||||
|
<span class="date">23 آذر 1404</span>
|
||||||
|
|
||||||
|
<svg aria-hidden="true" height="24" width="24">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#up-left-arr"></use>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="related-content">
|
||||||
|
<h3>طراحی صفحه گیمیفیکیشن زبان مهر</h3>
|
||||||
|
<p>طراحی سایت | گیمیفیکیشن</p>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a class="related-card" href="">
|
||||||
|
<div class="related-image">
|
||||||
|
<div
|
||||||
|
data-type="video"
|
||||||
|
class="media-container"
|
||||||
|
data-src="./public/images/videotest.mp4"
|
||||||
|
></div>
|
||||||
|
|
||||||
|
<button class="play-btn" aria-label="play-video">
|
||||||
|
<svg class="progress-ring" width="22" height="22">
|
||||||
|
<circle class="progress-circle" cx="22" cy="22" r="11" />
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
<svg class="play-icon icon-play" aria-hidden="true">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#play-icon"></use>
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
<svg class="play-icon icon-pause" aria-hidden="true">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#pause-icon"></use>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<div class="overlay-layer">
|
||||||
|
<div class="button-overlay">
|
||||||
|
<span class="date">23 آذر 1404</span>
|
||||||
|
|
||||||
|
<svg aria-hidden="true" height="24" width="24">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#up-left-arr"></use>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="related-content">
|
||||||
|
<h3>طراحی وبسایت حسابداری فرداد</h3>
|
||||||
|
<p>طراحی سایت | گیمیفیکیشن</p>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a class="related-card" href="">
|
||||||
|
<div class="related-image">
|
||||||
|
<div
|
||||||
|
data-type="image"
|
||||||
|
class="media-container"
|
||||||
|
data-src="./public/images/2.png"
|
||||||
|
></div>
|
||||||
|
<button class="play-btn" aria-label="play-video">
|
||||||
|
<svg class="progress-ring" width="22" height="22">
|
||||||
|
<circle class="progress-circle" cx="22" cy="22" r="11" />
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
<svg class="play-icon icon-play" aria-hidden="true">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#play-icon"></use>
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
<svg class="play-icon icon-pause" aria-hidden="true">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#pause-icon"></use>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
<div class="overlay-layer">
|
||||||
|
<div class="button-overlay">
|
||||||
|
<span class="date">23 آذر 1404</span>
|
||||||
|
|
||||||
|
<svg aria-hidden="true" height="24" width="24">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#up-left-arr"></use>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="related-content">
|
||||||
|
<h3>طراحی وبسایت زبان مهر</h3>
|
||||||
|
<p>طراحی سایت | گیمیفیکیشن</p>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a class="related-card" href="">
|
||||||
|
<div class="related-image">
|
||||||
|
<div
|
||||||
|
data-type="image"
|
||||||
|
class="media-container"
|
||||||
|
data-src="./public/images/3.png"
|
||||||
|
></div>
|
||||||
|
<button class="play-btn" aria-label="play-video">
|
||||||
|
<svg class="progress-ring" width="22" height="22">
|
||||||
|
<circle class="progress-circle" cx="22" cy="22" r="11" />
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
<svg class="play-icon icon-play" aria-hidden="true">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#play-icon"></use>
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
<svg class="play-icon icon-pause" aria-hidden="true">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#pause-icon"></use>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
<div class="overlay-layer">
|
||||||
|
<div class="button-overlay">
|
||||||
|
<span class="date">23 آذر 1404</span>
|
||||||
|
|
||||||
|
<svg aria-hidden="true" height="24" width="24">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#up-left-arr"></use>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="related-content">
|
||||||
|
<h3>طراحی صفحه گیمیفیکیشن زبان مهر</h3>
|
||||||
|
<p>طراحی سایت | گیمیفیکیشن</p>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a class="related-card" href="">
|
||||||
|
<div class="related-image">
|
||||||
|
<div
|
||||||
|
data-type="video"
|
||||||
|
class="media-container"
|
||||||
|
data-src="./public/images/videotest.mp4"
|
||||||
|
></div>
|
||||||
|
|
||||||
|
<button class="play-btn" aria-label="play-video">
|
||||||
|
<svg class="progress-ring" width="22" height="22">
|
||||||
|
<circle class="progress-circle" cx="22" cy="22" r="11" />
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
<svg class="play-icon icon-play" aria-hidden="true">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#play-icon"></use>
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
<svg class="play-icon icon-pause" aria-hidden="true">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#pause-icon"></use>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<div class="overlay-layer">
|
||||||
|
<div class="button-overlay">
|
||||||
|
<span class="date">23 آذر 1404</span>
|
||||||
|
|
||||||
|
<svg aria-hidden="true" height="24" width="24">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#up-left-arr"></use>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="related-content">
|
||||||
|
<h3>طراحی وبسایت حسابداری فرداد</h3>
|
||||||
|
<p>طراحی سایت | گیمیفیکیشن</p>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a class="related-card" href="">
|
||||||
|
<div class="related-image">
|
||||||
|
<div
|
||||||
|
data-type="image"
|
||||||
|
class="media-container"
|
||||||
|
data-src="./public/images/2.png"
|
||||||
|
></div>
|
||||||
|
<button class="play-btn" aria-label="play-video">
|
||||||
|
<svg class="progress-ring" width="22" height="22">
|
||||||
|
<circle class="progress-circle" cx="22" cy="22" r="11" />
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
<svg class="play-icon icon-play" aria-hidden="true">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#play-icon"></use>
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
<svg class="play-icon icon-pause" aria-hidden="true">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#pause-icon"></use>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
<div class="overlay-layer">
|
||||||
|
<div class="button-overlay">
|
||||||
|
<span class="date">23 آذر 1404</span>
|
||||||
|
|
||||||
|
<svg aria-hidden="true" height="24" width="24">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#up-left-arr"></use>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="related-content">
|
||||||
|
<h3>طراحی وبسایت زبان مهر</h3>
|
||||||
|
<p>طراحی سایت | گیمیفیکیشن</p>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a class="related-card" href="">
|
||||||
|
<div class="related-image">
|
||||||
|
<div
|
||||||
|
data-type="image"
|
||||||
|
class="media-container"
|
||||||
|
data-src="./public/images/3.png"
|
||||||
|
></div>
|
||||||
|
<button class="play-btn" aria-label="play-video">
|
||||||
|
<svg class="progress-ring" width="22" height="22">
|
||||||
|
<circle class="progress-circle" cx="22" cy="22" r="11" />
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
<svg class="play-icon icon-play" aria-hidden="true">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#play-icon"></use>
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
<svg class="play-icon icon-pause" aria-hidden="true">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#pause-icon"></use>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
<div class="overlay-layer">
|
||||||
|
<div class="button-overlay">
|
||||||
|
<span class="date">23 آذر 1404</span>
|
||||||
|
|
||||||
|
<svg aria-hidden="true" height="24" width="24">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#up-left-arr"></use>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="related-content">
|
||||||
|
<h3>طراحی صفحه گیمیفیکیشن زبان مهر</h3>
|
||||||
|
<p>طراحی سایت | گیمیفیکیشن</p>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a class="related-card" href="">
|
||||||
|
<div class="related-image">
|
||||||
|
<div
|
||||||
|
data-type="video"
|
||||||
|
class="media-container"
|
||||||
|
data-src="./public/images/videotest.mp4"
|
||||||
|
></div>
|
||||||
|
|
||||||
|
<button class="play-btn" aria-label="play-video">
|
||||||
|
<svg class="progress-ring" width="22" height="22">
|
||||||
|
<circle class="progress-circle" cx="22" cy="22" r="11" />
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
<svg class="play-icon icon-play" aria-hidden="true">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#play-icon"></use>
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
<svg class="play-icon icon-pause" aria-hidden="true">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#pause-icon"></use>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<div class="overlay-layer">
|
||||||
|
<div class="button-overlay">
|
||||||
|
<span class="date">23 آذر 1404</span>
|
||||||
|
|
||||||
|
<svg aria-hidden="true" height="24" width="24">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#up-left-arr"></use>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="related-content">
|
||||||
|
<h3>طراحی وبسایت حسابداری فرداد</h3>
|
||||||
|
<p>طراحی سایت | گیمیفیکیشن</p>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a class="related-card" href="">
|
||||||
|
<div class="related-image">
|
||||||
|
<div
|
||||||
|
data-type="image"
|
||||||
|
class="media-container"
|
||||||
|
data-src="./public/images/2.png"
|
||||||
|
></div>
|
||||||
|
<button class="play-btn" aria-label="play-video">
|
||||||
|
<svg class="progress-ring" width="22" height="22">
|
||||||
|
<circle class="progress-circle" cx="22" cy="22" r="11" />
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
<svg class="play-icon icon-play" aria-hidden="true">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#play-icon"></use>
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
<svg class="play-icon icon-pause" aria-hidden="true">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#pause-icon"></use>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
<div class="overlay-layer">
|
||||||
|
<div class="button-overlay">
|
||||||
|
<span class="date">23 آذر 1404</span>
|
||||||
|
|
||||||
|
<svg aria-hidden="true" height="24" width="24">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#up-left-arr"></use>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="related-content">
|
||||||
|
<h3>طراحی وبسایت زبان مهر</h3>
|
||||||
|
<p>طراحی سایت | گیمیفیکیشن</p>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a class="related-card" href="">
|
||||||
|
<div class="related-image">
|
||||||
|
<div
|
||||||
|
data-type="image"
|
||||||
|
class="media-container"
|
||||||
|
data-src="./public/images/3.png"
|
||||||
|
></div>
|
||||||
|
<button class="play-btn" aria-label="play-video">
|
||||||
|
<svg class="progress-ring" width="22" height="22">
|
||||||
|
<circle class="progress-circle" cx="22" cy="22" r="11" />
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
<svg class="play-icon icon-play" aria-hidden="true">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#play-icon"></use>
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
<svg class="play-icon icon-pause" aria-hidden="true">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#pause-icon"></use>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
<div class="overlay-layer">
|
||||||
|
<div class="button-overlay">
|
||||||
|
<span class="date">23 آذر 1404</span>
|
||||||
|
|
||||||
|
<svg aria-hidden="true" height="24" width="24">
|
||||||
|
<use href="./src/assets/icons/portfolioP.svg#up-left-arr"></use>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="related-content">
|
||||||
|
<h3>طراحی صفحه گیمیفیکیشن زبان مهر</h3>
|
||||||
|
<p>طراحی سایت | گیمیفیکیشن</p>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<nav class="pagination">
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href="#" class="item">
|
||||||
|
<svg aria-hidden="true" width="16" height="16">
|
||||||
|
<use href="./src/assets/icons/portfolioGallery.svg#chevrons-right"></use>
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#" class="item">
|
||||||
|
<svg aria-hidden="true" width="16" height="16">
|
||||||
|
<use href="./src/assets/icons/portfolioGallery.svg#right"></use>
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li class="current">
|
||||||
|
<a href="#" class="item"> 1 </a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#" class="item"> 2 </a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span class="item"> … </span>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#" class="item"> 8 </a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#" class="item">
|
||||||
|
<svg aria-hidden="true" width="16" height="16">
|
||||||
|
<use href="./src/assets/icons/portfolioGallery.svg#left"></use>
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#" class="item">
|
||||||
|
<svg aria-hidden="true" width="16" height="16">
|
||||||
|
<use href="./src/assets/icons/portfolioGallery.svg#chevrons-left"></use>
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
14
index.html
Normal file
14
index.html
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="fa" dir="rtl">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<link rel="stylesheet" href="./src/core/stylesheet/core.css" />
|
||||||
|
<title>Inova</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<h1>سلام دنیا</h1>
|
||||||
|
</main>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
889
package-lock.json
generated
Normal file
889
package-lock.json
generated
Normal file
@@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
15
package.json
Normal file
15
package.json
Normal file
@@ -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"
|
||||||
|
}
|
||||||
|
}
|
||||||
0
public/.gitkeep
Normal file
0
public/.gitkeep
Normal file
0
public/images/.gitkeep
Normal file
0
public/images/.gitkeep
Normal file
BIN
public/images/1.png
Normal file
BIN
public/images/1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 253 KiB |
BIN
public/images/2.png
Normal file
BIN
public/images/2.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 199 KiB |
BIN
public/images/3.png
Normal file
BIN
public/images/3.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 454 KiB |
BIN
public/images/videotest.mp4
Normal file
BIN
public/images/videotest.mp4
Normal file
Binary file not shown.
43
src/assets/css/archive-responsive.css
Normal file
43
src/assets/css/archive-responsive.css
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
@media screen and (max-width: 1400px) {
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 1200px) {
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 992px) {
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 768px) {
|
||||||
|
.hero-card {
|
||||||
|
height: 546px;
|
||||||
|
}
|
||||||
|
.container-hero-section {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
.hero-content {
|
||||||
|
padding: 0 20px;
|
||||||
|
margin-top: 62px;
|
||||||
|
}
|
||||||
|
.hero-title {
|
||||||
|
font-size: 24px;
|
||||||
|
}
|
||||||
|
.hero-txt {
|
||||||
|
font-size: 15px;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
.stats {
|
||||||
|
grid-template-columns: repeat(2, 1fr);
|
||||||
|
}
|
||||||
|
.counter{
|
||||||
|
font-size:28px;
|
||||||
|
}
|
||||||
|
.stat-item::after {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.stat-item {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
.filter-toggle-btn{
|
||||||
|
padding: 7px 20px 7px 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 576px) {
|
||||||
|
}
|
||||||
1089
src/assets/css/archive.css
Normal file
1089
src/assets/css/archive.css
Normal file
File diff suppressed because it is too large
Load Diff
77
src/assets/icons/portfolioGallery.svg
Normal file
77
src/assets/icons/portfolioGallery.svg
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
<svg>
|
||||||
|
<symbol id="expand" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path
|
||||||
|
d="M28 28L20 20M21.6 28H28V21.6M10.4 28H4V21.6M4 28L12 20M21.6 4H28V10.4M28 4L20 12M10.4 4H4V10.4M4 4L12 12"
|
||||||
|
stroke="#1A1A2E"
|
||||||
|
stroke-width="2"
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
/>
|
||||||
|
</symbol>
|
||||||
|
<symbol id="eye" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path
|
||||||
|
d="M2.06202 12.348C1.97868 12.1235 1.97868 11.8765 2.06202 11.652C2.87372 9.68385 4.25153 8.00103 6.02079 6.81689C7.79004 5.63275 9.87106 5.00061 12 5.00061C14.129 5.00061 16.21 5.63275 17.9792 6.81689C19.7485 8.00103 21.1263 9.68385 21.938 11.652C22.0214 11.8765 22.0214 12.1235 21.938 12.348C21.1263 14.3161 19.7485 15.999 17.9792 17.1831C16.21 18.3672 14.129 18.9994 12 18.9994C9.87106 18.9994 7.79004 18.3672 6.02079 17.1831C4.25153 15.999 2.87372 14.3161 2.06202 12.348Z"
|
||||||
|
stroke-width="2"
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
d="M12 15C13.6569 15 15 13.6568 15 12C15 10.3431 13.6569 8.99999 12 8.99999C10.3432 8.99999 9.00002 10.3431 9.00002 12C9.00002 13.6568 10.3432 15 12 15Z"
|
||||||
|
stroke-width="2"
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
/>
|
||||||
|
</symbol>
|
||||||
|
<symbol id="play" viewBox="0 0 11 13" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path
|
||||||
|
d="M0.75001 2.12914C0.749322 1.88513 0.809349 1.64531 0.92393 1.43432C1.03851 1.22332 1.20352 1.04874 1.40201 0.928505C1.6005 0.808269 1.82533 0.746706 2.05341 0.750136C2.2815 0.753566 2.50462 0.821866 2.69987 0.948024L9.12272 5.06888C9.31394 5.19079 9.47227 5.36374 9.58223 5.57079C9.69219 5.77783 9.75 6.01187 9.75 6.25C9.75 6.48812 9.69219 6.72217 9.58223 6.92921C9.47227 7.13626 9.31394 7.3092 9.12272 7.43112L2.69987 11.552C2.50453 11.6782 2.28129 11.7465 2.05309 11.7499C1.8249 11.7532 1.59998 11.6916 1.40145 11.5712C1.20291 11.4508 1.03793 11.276 0.923441 11.0648C0.808953 10.8536 0.749093 10.6136 0.75001 10.3695V2.12914Z"
|
||||||
|
fill="white"
|
||||||
|
stroke="white"
|
||||||
|
stroke-width="1.5"
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
/>
|
||||||
|
</symbol>
|
||||||
|
<symbol id="t-blank" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path
|
||||||
|
d="M17 7H7V17M7 7L17 17"
|
||||||
|
stroke-width="1.5"
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
/>
|
||||||
|
</symbol>
|
||||||
|
<symbol xmlns="http://www.w3.org/2000/svg" id="pause" viewBox="0 0 24 24">
|
||||||
|
<path d="M6.5,0A3.5,3.5,0,0,0,3,3.5v17a3.5,3.5,0,0,0,7,0V3.5A3.5,3.5,0,0,0,6.5,0Z" />
|
||||||
|
<path d="M17.5,0A3.5,3.5,0,0,0,14,3.5v17a3.5,3.5,0,0,0,7,0V3.5A3.5,3.5,0,0,0,17.5,0Z" />
|
||||||
|
</symbol>
|
||||||
|
<symbol id="left" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M10 12L6 8L10 4" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
|
||||||
|
</symbol>
|
||||||
|
<symbol id="chevrons-left" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path
|
||||||
|
d="M7.33333 11.3332L4 7.99984L7.33333 4.6665M12 11.3332L8.66667 7.99984L12 4.6665"
|
||||||
|
stroke-width="1.5"
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
/>
|
||||||
|
</symbol>
|
||||||
|
<symbol id="chevrons-right" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path
|
||||||
|
d="M4 11.3332L7.33333 7.99984L4 4.6665M8.66667 11.3332L12 7.99984L8.66667 4.6665"
|
||||||
|
stroke-width="1.5"
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
/>
|
||||||
|
</symbol>
|
||||||
|
<symbol id="right" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M6 12L10 8L6 4" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
|
||||||
|
</symbol>
|
||||||
|
<symbol id="arrow-left" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path
|
||||||
|
d="M10.0001 4.16675L4.16675 10.0001L10.0001 15.8334M4.16675 10.0001H15.8334"
|
||||||
|
stroke-width="2"
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
/>
|
||||||
|
</symbol>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 3.9 KiB |
1252
src/assets/icons/portfolioP.svg
Normal file
1252
src/assets/icons/portfolioP.svg
Normal file
File diff suppressed because it is too large
Load Diff
|
After Width: | Height: | Size: 69 KiB |
0
src/assets/images/.gitkeep
Normal file
0
src/assets/images/.gitkeep
Normal file
495
src/assets/js/archive.js
Normal file
495
src/assets/js/archive.js
Normal file
@@ -0,0 +1,495 @@
|
|||||||
|
// ==============================================هیرو سکشن=================================
|
||||||
|
const counters = document.querySelectorAll('.counter');
|
||||||
|
|
||||||
|
const observer = new IntersectionObserver(
|
||||||
|
(entries) => {
|
||||||
|
entries.forEach((entry) => {
|
||||||
|
if (!entry.isIntersecting) return;
|
||||||
|
|
||||||
|
const counter = entry.target;
|
||||||
|
const target = parseFloat(counter.dataset.target);
|
||||||
|
const prefix = counter.dataset.prefix || '';
|
||||||
|
const suffix = counter.dataset.suffix || '';
|
||||||
|
const duration = 2000;
|
||||||
|
let startTime = null;
|
||||||
|
|
||||||
|
function animate(currentTime) {
|
||||||
|
if (!startTime) startTime = currentTime;
|
||||||
|
|
||||||
|
const progress = Math.min((currentTime - startTime) / duration, 1);
|
||||||
|
const currentValue = progress * target;
|
||||||
|
|
||||||
|
let displayValue;
|
||||||
|
|
||||||
|
if (target % 1 !== 0) {
|
||||||
|
displayValue = currentValue.toFixed(1);
|
||||||
|
} else {
|
||||||
|
displayValue = Math.floor(currentValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
counter.textContent = prefix + displayValue + suffix;
|
||||||
|
|
||||||
|
if (progress < 1) {
|
||||||
|
requestAnimationFrame(animate);
|
||||||
|
} else {
|
||||||
|
counter.textContent = prefix + target + suffix;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
requestAnimationFrame(animate);
|
||||||
|
|
||||||
|
observer.unobserve(counter);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
{
|
||||||
|
threshold: 0.5,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
counters.forEach((counter) => {
|
||||||
|
observer.observe(counter);
|
||||||
|
});
|
||||||
|
|
||||||
|
// ==============================================آرشیو سکشن =================================
|
||||||
|
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);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// =========================فیلتر============================
|
||||||
|
function initFilterSystem(section) {
|
||||||
|
// ---- Selectors ----
|
||||||
|
const toggleBtn = document.getElementById('filterToggleBtn');
|
||||||
|
const toggleText = document.getElementById('filterToggleText');
|
||||||
|
const filterControls = document.getElementById('filterControls');
|
||||||
|
const categoryBtn = document.getElementById('categoryBtn');
|
||||||
|
const tagsBtn = document.getElementById('tagsBtn');
|
||||||
|
const categoryDrop = document.getElementById('categoryDropdown');
|
||||||
|
const tagsDrop = document.getElementById('tagsDropdown');
|
||||||
|
const clearBtn = document.getElementById('filterClearBtn');
|
||||||
|
const tagBadge = document.getElementById('tagBadge');
|
||||||
|
|
||||||
|
const mobileOverlay = document.getElementById('filterMobileOverlay');
|
||||||
|
const mobileBack = document.getElementById('filterMobileBack');
|
||||||
|
const mobileClose = document.getElementById('filterMobileClose');
|
||||||
|
const mobileTitle = document.getElementById('filterMobileTitle');
|
||||||
|
const mobileMain = document.getElementById('filterMobileMain');
|
||||||
|
const mobileCatSub = document.getElementById('filterMobileCategorySub');
|
||||||
|
const mobileTagsSub = document.getElementById('filterMobileTagsSub');
|
||||||
|
const mobileCatBtn = document.getElementById('mobileCategoryBtn');
|
||||||
|
const mobileTagsBtn2 = document.getElementById('mobileTagsBtn');
|
||||||
|
const mobileApply = document.getElementById('filterMobileApply');
|
||||||
|
const mobileClear2 = document.getElementById('filterMobileClear');
|
||||||
|
|
||||||
|
const isMobile = () => window.innerWidth <= 768;
|
||||||
|
const categoryBadge = document.getElementById('categoryBadge');
|
||||||
|
|
||||||
|
const mobileCategoryBadge = document.getElementById('mobileCategoryBadge');
|
||||||
|
|
||||||
|
const mobileTagBadge = document.getElementById('mobileTagBadge');
|
||||||
|
|
||||||
|
// ================================================
|
||||||
|
// DESKTOP: باز / بسته کردن فیلتر بار
|
||||||
|
// ================================================
|
||||||
|
let filterOpen = false;
|
||||||
|
|
||||||
|
toggleBtn.addEventListener('click', () => {
|
||||||
|
if (isMobile()) {
|
||||||
|
openMobilePopup();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
filterOpen = !filterOpen;
|
||||||
|
filterControls.classList.toggle('is-open', filterOpen);
|
||||||
|
toggleText.textContent = filterOpen ? 'بستن' : 'فیلتر کردن';
|
||||||
|
|
||||||
|
if (!filterOpen) {
|
||||||
|
closeAllDropdowns();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// ================================================
|
||||||
|
// DESKTOP: اکاردئون دستهبندی
|
||||||
|
// ================================================
|
||||||
|
categoryBtn.addEventListener('click', (e) => {
|
||||||
|
e.stopPropagation();
|
||||||
|
const isOpen = categoryDrop.classList.contains('is-open');
|
||||||
|
closeAllDropdowns();
|
||||||
|
if (!isOpen) {
|
||||||
|
categoryDrop.classList.add('is-open');
|
||||||
|
categoryBtn.classList.add('is-active');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// ================================================
|
||||||
|
// DESKTOP: اکاردئون تگها
|
||||||
|
// ================================================
|
||||||
|
tagsBtn.addEventListener('click', (e) => {
|
||||||
|
e.stopPropagation();
|
||||||
|
const isOpen = tagsDrop.classList.contains('is-open');
|
||||||
|
closeAllDropdowns();
|
||||||
|
if (!isOpen) {
|
||||||
|
tagsDrop.classList.add('is-open');
|
||||||
|
tagsBtn.classList.add('is-active');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
function closeAllDropdowns() {
|
||||||
|
categoryDrop.classList.remove('is-open');
|
||||||
|
tagsDrop.classList.remove('is-open');
|
||||||
|
categoryBtn.classList.remove('is-active');
|
||||||
|
tagsBtn.classList.remove('is-active');
|
||||||
|
}
|
||||||
|
|
||||||
|
// بستن دراپداون با کلیک خارج از آن
|
||||||
|
document.addEventListener('click', (e) => {
|
||||||
|
if (!e.target.closest('.filter-group')) {
|
||||||
|
closeAllDropdowns();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// ================================================
|
||||||
|
// DESKTOP: فیلتر کردن کارتها
|
||||||
|
// ================================================
|
||||||
|
// اسکرول بعد از برداشتن تیک چک باکس======
|
||||||
|
function scrollToSectionTop() {
|
||||||
|
section.scrollIntoView({
|
||||||
|
behavior: 'smooth',
|
||||||
|
block: 'start',
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// اسکرول بعد از زدن تیک ===========
|
||||||
|
function scrollToSectionTop() {
|
||||||
|
section.scrollIntoView({
|
||||||
|
behavior: 'smooth',
|
||||||
|
block: 'start',
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function applyDesktopFilter() {
|
||||||
|
const selCats = [...section.querySelectorAll('.category-checkbox:checked')].map((c) => c.value);
|
||||||
|
const selTags = [...section.querySelectorAll('.tag-checkbox:checked')].map((c) => c.value);
|
||||||
|
filterCards(section, selCats, selTags);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ================================================
|
||||||
|
// DESKTOP: شمارنده بج تگها
|
||||||
|
// ================================================
|
||||||
|
function updateBadges() {
|
||||||
|
// Desktop
|
||||||
|
const desktopTagCount = section.querySelectorAll('.tag-checkbox:checked').length;
|
||||||
|
|
||||||
|
const desktopCategoryCount = section.querySelectorAll('.category-checkbox:checked').length;
|
||||||
|
|
||||||
|
// Mobile
|
||||||
|
const mobileTagCount = section.querySelectorAll('.mob-tag-cb:checked').length;
|
||||||
|
|
||||||
|
const mobileCategoryCount = section.querySelectorAll('.mob-cat-cb:checked').length;
|
||||||
|
|
||||||
|
updateBadge(tagBadge, desktopTagCount);
|
||||||
|
|
||||||
|
updateBadge(categoryBadge, desktopCategoryCount);
|
||||||
|
|
||||||
|
updateBadge(mobileTagBadge, mobileTagCount);
|
||||||
|
|
||||||
|
updateBadge(mobileCategoryBadge, mobileCategoryCount);
|
||||||
|
}
|
||||||
|
function updateDesktopClearButton() {
|
||||||
|
const hasAny =
|
||||||
|
section.querySelectorAll('.category-checkbox:checked, .tag-checkbox:checked').length > 0;
|
||||||
|
clearBtn.disabled = !hasAny;
|
||||||
|
}
|
||||||
|
function updateBadge(el, count) {
|
||||||
|
if (!el) return;
|
||||||
|
|
||||||
|
el.textContent = count;
|
||||||
|
el.style.display = count > 0 ? 'inline-flex' : 'none';
|
||||||
|
}
|
||||||
|
|
||||||
|
section.querySelectorAll('.category-checkbox').forEach((cb) => {
|
||||||
|
cb.addEventListener('change', () => {
|
||||||
|
updateBadges();
|
||||||
|
updateDesktopClearButton();
|
||||||
|
applyDesktopFilter();
|
||||||
|
|
||||||
|
scrollToSectionTop();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
section.querySelectorAll('.tag-checkbox').forEach((cb) => {
|
||||||
|
cb.addEventListener('change', () => {
|
||||||
|
updateBadges();
|
||||||
|
updateDesktopClearButton();
|
||||||
|
applyDesktopFilter();
|
||||||
|
|
||||||
|
scrollToSectionTop();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// ================================================
|
||||||
|
// DESKTOP: حذف فیلتر
|
||||||
|
// ================================================
|
||||||
|
clearBtn.addEventListener('click', () => {
|
||||||
|
section
|
||||||
|
.querySelectorAll('.category-checkbox, .tag-checkbox')
|
||||||
|
.forEach((cb) => (cb.checked = false));
|
||||||
|
updateBadges();
|
||||||
|
updateDesktopClearButton();
|
||||||
|
scrollToSectionTop();
|
||||||
|
filterCards(section, [], []);
|
||||||
|
});
|
||||||
|
|
||||||
|
// ================================================
|
||||||
|
// فیلتر کارتها (مشترک بین دسکتاپ و موبایل)
|
||||||
|
// ================================================
|
||||||
|
function filterCards(sec, cats, tags) {
|
||||||
|
sec.querySelectorAll('.related-card').forEach((card) => {
|
||||||
|
const text = card.querySelector('.related-content p')?.textContent || '';
|
||||||
|
const passCategory = cats.length === 0 || cats.some((c) => text.includes(c));
|
||||||
|
const passTag = tags.length === 0 || tags.some((t) => text.includes(t));
|
||||||
|
card.style.display = passCategory && passTag ? '' : 'none';
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// ================================================
|
||||||
|
// MOBILE: باز کردن پاپآپ
|
||||||
|
// ================================================
|
||||||
|
function openMobilePopup() {
|
||||||
|
mobileOverlay.classList.add('is-open');
|
||||||
|
document.body.style.overflow = 'hidden';
|
||||||
|
showMobileMain();
|
||||||
|
}
|
||||||
|
|
||||||
|
function closeMobilePopup() {
|
||||||
|
mobileOverlay.classList.remove('is-open');
|
||||||
|
document.body.style.overflow = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
mobileClose.addEventListener('click', closeMobilePopup);
|
||||||
|
|
||||||
|
// ================================================
|
||||||
|
// MOBILE: نمای اصلی / زیرمنوها
|
||||||
|
// ================================================
|
||||||
|
function showMobileMain() {
|
||||||
|
mobileMain.classList.add('is-visible');
|
||||||
|
mobileCatSub.classList.remove('is-visible');
|
||||||
|
mobileTagsSub.classList.remove('is-visible');
|
||||||
|
mobileTitle.textContent = 'فیلتر کردن';
|
||||||
|
mobileBack.style.display = 'none';
|
||||||
|
mobileClose.style.display = 'flex';
|
||||||
|
mobileApply.textContent = 'اعمال فیلتر';
|
||||||
|
updateMobileFooter();
|
||||||
|
}
|
||||||
|
|
||||||
|
function showMobileCategory() {
|
||||||
|
mobileMain.classList.remove('is-visible');
|
||||||
|
mobileCatSub.classList.add('is-visible');
|
||||||
|
mobileTagsSub.classList.remove('is-visible');
|
||||||
|
mobileTitle.textContent = 'دسته بندی';
|
||||||
|
mobileBack.style.display = 'flex';
|
||||||
|
mobileClose.style.display = 'none';
|
||||||
|
updateMobileFooter();
|
||||||
|
}
|
||||||
|
|
||||||
|
function showMobileTags() {
|
||||||
|
mobileMain.classList.remove('is-visible');
|
||||||
|
mobileCatSub.classList.remove('is-visible');
|
||||||
|
mobileTagsSub.classList.add('is-visible');
|
||||||
|
mobileTitle.textContent = 'تگها';
|
||||||
|
mobileBack.style.display = 'flex';
|
||||||
|
mobileClose.style.display = 'none';
|
||||||
|
updateMobileFooter();
|
||||||
|
}
|
||||||
|
|
||||||
|
mobileBack.addEventListener('click', showMobileMain);
|
||||||
|
mobileCatBtn.addEventListener('click', showMobileCategory);
|
||||||
|
mobileTagsBtn2.addEventListener('click', showMobileTags);
|
||||||
|
|
||||||
|
// ================================================
|
||||||
|
// MOBILE: فعال/غیرفعال کردن دکمههای footer
|
||||||
|
// ================================================
|
||||||
|
function updateMobileFooter() {
|
||||||
|
const hasAny = section.querySelectorAll('.mob-cat-cb:checked, .mob-tag-cb:checked').length > 0;
|
||||||
|
mobileApply.disabled = false;
|
||||||
|
mobileClear2.disabled = !hasAny;
|
||||||
|
}
|
||||||
|
|
||||||
|
section.querySelectorAll('.mob-cat-cb, .mob-tag-cb').forEach((cb) => {
|
||||||
|
cb.addEventListener('change', () => {
|
||||||
|
updateMobileFooter();
|
||||||
|
updateBadges();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
// ================================================
|
||||||
|
// MOBILE: اعمال و حذف فیلتر
|
||||||
|
// ================================================
|
||||||
|
mobileApply.addEventListener('click', () => {
|
||||||
|
const selCats = [...section.querySelectorAll('.mob-cat-cb:checked')].map((c) => c.value);
|
||||||
|
const selTags = [...section.querySelectorAll('.mob-tag-cb:checked')].map((c) => c.value);
|
||||||
|
filterCards(section, selCats, selTags);
|
||||||
|
closeMobilePopup();
|
||||||
|
});
|
||||||
|
|
||||||
|
mobileClear2.addEventListener('click', () => {
|
||||||
|
section.querySelectorAll('.mob-cat-cb, .mob-tag-cb').forEach((cb) => (cb.checked = false));
|
||||||
|
|
||||||
|
updateMobileFooter();
|
||||||
|
updateBadges();
|
||||||
|
|
||||||
|
filterCards(section, [], []);
|
||||||
|
});
|
||||||
|
|
||||||
|
mobileOverlay.addEventListener('click', (e) => {
|
||||||
|
if (e.target === mobileOverlay) closeMobilePopup();
|
||||||
|
});
|
||||||
|
updateBadges();
|
||||||
|
updateDesktopClearButton();
|
||||||
|
}
|
||||||
|
|
||||||
|
document.addEventListener('DOMContentLoaded', () => {
|
||||||
|
document.querySelectorAll('[data-related-section]').forEach((section) => {
|
||||||
|
initRelatedSection(section);
|
||||||
|
initGalleryFilter(section);
|
||||||
|
initFilterSystem(section);
|
||||||
|
});
|
||||||
|
});
|
||||||
0
src/components/.gitkeep
Normal file
0
src/components/.gitkeep
Normal file
BIN
src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-Black.woff
Normal file
BIN
src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-Black.woff
Normal file
Binary file not shown.
BIN
src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-Bold.woff
Normal file
BIN
src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-Bold.woff
Normal file
Binary file not shown.
BIN
src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-ExtraBlack.woff
Normal file
BIN
src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-ExtraBlack.woff
Normal file
Binary file not shown.
BIN
src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-ExtraBold.woff
Normal file
BIN
src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-ExtraBold.woff
Normal file
Binary file not shown.
BIN
src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-Light.woff
Normal file
BIN
src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-Light.woff
Normal file
Binary file not shown.
BIN
src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-Regular.woff
Normal file
BIN
src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-Regular.woff
Normal file
Binary file not shown.
BIN
src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-SemiBold.woff
Normal file
BIN
src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-SemiBold.woff
Normal file
Binary file not shown.
BIN
src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-Thin.woff
Normal file
BIN
src/core/fonts/yekanbakhpro/woff/YekanBakhFaNum-Thin.woff
Normal file
Binary file not shown.
BIN
src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-Black.woff2
Normal file
BIN
src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-Black.woff2
Normal file
Binary file not shown.
BIN
src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-Bold.woff2
Normal file
BIN
src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-Bold.woff2
Normal file
Binary file not shown.
Binary file not shown.
BIN
src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-ExtraBold.woff2
Normal file
BIN
src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-ExtraBold.woff2
Normal file
Binary file not shown.
BIN
src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-Light.woff2
Normal file
BIN
src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-Light.woff2
Normal file
Binary file not shown.
BIN
src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-Regular.woff2
Normal file
BIN
src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-Regular.woff2
Normal file
Binary file not shown.
BIN
src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-SemiBold.woff2
Normal file
BIN
src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-SemiBold.woff2
Normal file
Binary file not shown.
BIN
src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-Thin.woff2
Normal file
BIN
src/core/fonts/yekanbakhpro/woff2/YekanBakhFaNum-Thin.woff2
Normal file
Binary file not shown.
0
src/core/javascript/core.js
Normal file
0
src/core/javascript/core.js
Normal file
232
src/core/stylesheet/core.css
Normal file
232
src/core/stylesheet/core.css
Normal file
@@ -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 */
|
||||||
|
}
|
||||||
0
src/templates/.gitkeep
Normal file
0
src/templates/.gitkeep
Normal file
28
vite.config.js
Normal file
28
vite.config.js
Normal file
@@ -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, 'archive.html'),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
manifest: true,
|
||||||
|
cssCodeSplit: true,
|
||||||
|
},
|
||||||
|
|
||||||
|
server: {
|
||||||
|
open: true,
|
||||||
|
port: 5173,
|
||||||
|
},
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user