# سند جامع سیستم طراحی بصری، تایپوگرافی و معماری رسپانسیو پنل مدیریت عقیله (UI Design System & Responsive Standard)
**سامانه پلتفرم و پنل مدیریت عقیله (Aqila Web Panel)**
**مرجع سیستم:** کلاینت وب (`aqila_panel`) و راهنمای سراسری هوش مصنوعی و توسعهدهندگان (Single Source of Truth)
**نسخه:** 2.0.0 (ویرایش جامع دسکتاپ، تبلت و موبایل)
**وضعیت:** مصوب و الزامی (Mandatory Reference)
---
## ۱. هدف و دامنه کاربرد (Objective & Scope)
این سند، **مرجع قطعی، جامع و غیرقابلتغییر** برای تمامی استانداردهای بصری، تایپوگرافی، پالت رنگی خنثی، نقاط شکست (Breakpoints)، چیدمانهای چندستونه دسکتاپ و واکنشگرایی موبایل (Mobile Responsiveness) در پنل مدیریت عقیله است.
> [!IMPORTANT]
> **قانون الزامآور هوش مصنوعی و توسعهدهندگان (AI Agent & Dev Directive):**
> در هنگام ایجاد هر صفحه جدید، کامپوننت، فرم، فیلتر، جدول، دیالوگ، شیت یا وضعیت بارگذاری (Loading)، **باید ابتدا و بدون استثنا کلیه بندهای این سند به عنوان استاندارد قطعی اعمال شوند.**
> هرگونه کدنویسی بصری سلیقهای، استفاده از رنگهای رنگینکمانی مدادرنگی (Crayon-like UI)، فونتهای متفرقه، پدینگهای هاردکدشده بدون مدیاکوئری، یا جدولهای غیرریسپانسیو که در موبایل سرریز (Overflow) نامناسب ایجاد کنند، **اکیداً ممنوع و مردود است.**
---
## ۲. نقاط شکست و معماری چیدمان رسپانسیو (Breakpoints & Layout Architecture)
پنل مدیریت عقیله باید تجربهای بینقص و روان از مانیتورهای عریض دسکتاپ تا گوشیهای هوشمند ارائه دهد. نقاط شکست استاندارد پروژه مطابق با سیستم رسمی Tailwind CSS و متناسب با ابعاد داشبورد به شرح زیر تعریف شده است:
```
┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
│ جدول نقاط شکست رسپانسیو پنل عقیله │
├───────────┬──────────────┬──────────────────┬────────────────────────────────────────────────────┤
│ نقطه شکست │ بازه عرضی │ دستگاه هدف │ رفتار چیدمان و اسکلت اصلی │
├───────────┼──────────────┼──────────────────┼────────────────────────────────────────────────────┤
│ xs / Base │ < 640px │ گوشیهای هوشمند │ تکستونه، سایدبار منوی همبرگری، فیلترهای استکشده، │
│ │ │ (Mobile Portrait)│ تبدیل جداول به کارت/اسکرول افقی، دیالوگ باتمشیت │
├───────────┼──────────────┼──────────────────┼────────────────────────────────────────────────────┤
│ sm │ 640px-767px │ فبلت و موبایل افقی│ فرمهای ۲ ستونه، فیلترهای منعطف، پدینگهای میانی │
├───────────┼──────────────┼──────────────────┼────────────────────────────────────────────────────┤
│ md │ 768px-1023px │ تبلت (Tablet) │ سایدبار کشویی (Overlay)، جداول فشرده با اسکرول، │
│ │ │ │ کارتهای آماری ۲ الی ۳ ستونه │
├───────────┼──────────────┼──────────────────┼────────────────────────────────────────────────────┤
│ lg │ 1024px-1279px│ لپتاپ / دسکتاپ │ سایدبار ثابت راست (240px)، هدر کامل، جداول جامع │
├───────────┼──────────────┼──────────────────┼────────────────────────────────────────────────────┤
│ xl │ 1280px-1535px│ مانیتور استاندارد│ نمایش سهستونه: سایدبار راست + محتوا + پنل اسلاید چپ│
├───────────┼──────────────┼──────────────────┼────────────────────────────────────────────────────┤
│ 2xl │ ≥ 1536px │ مانیتورهای عریض │ حداکثر خوانایی، گرید ۴ ستونه کارتهای KPI و آمار │
└───────────┴──────────────┴──────────────────┴────────────────────────────────────────────────────┘
```
### ۲.۱. ساختار شل اصلی در دسکتاپ در برابر موبایل (Responsive Shell Structure)
شل اصلی اپلیکیشن (`AuthenticatedShell`) به صورت داینامیک بین دو حالت سوئیچ میکند:
1. **نمای دسکتاپ و مانیتورهای بزرگ (`lg` و بالاتر / `≥ 1024px`):**
- **سایدبار ناوبری راست (`AppSidebar`):** عرض ثابت `240px`، همیشه قابل مشاهده و قابل جمعشدن به صورت آیکونی.
- **بخش میانی محتوا (`SidebarInset`):** شامل `Topbar` با ارتفاع `h-16` و محتوای اصلی با پدینگ `px-8 py-6`.
- **پنل جزئیات سمت چپ (`PanelSlot`):** در ابعاد `≥ 1280px` به صورت ستون کناری ثابت (Off-canvas با عرض `384px`) باز شده و محتوا را به نرمی جمع میکند.
2. **نمای تبلت و موبایل (`< 1024px`):**
- **سایدبار ناوبری:** به صورت کشوی مدال (`Sheet` / Drawer) با کلیک روی دکمه همبرگری هدر باز میشود.
- **پنل جزئیات (`PanelSlot`):** به صورت `Sheet` تمامصفحه یا با عرض `w-[min(88vw,384px)]` روی صفحه شناور میشود.
- **پدینگ محتوا:** پدینگ به `px-4 py-4 pb-12` کاهش مییابد تا بیشترین فضای مفید به دادهها اختصاص یابد.
```tsx
// ساختار استاندارد کانتینر اصلی محتوای هر صفحه
{/* هدر صفحه: در موبایل عمودی و در دسکتاپ افقی */}
{pageTitle}
{pageDescription}
{headerActions}
{/* بدنه محتوا */}
{children}
```
---
## ۳. سیستم تایپوگرافی و مقیاس متنی رسپانسیو (Responsive Typography Matrix)
تایپوگرافی در پنل عقیله باید در مانیتورهای بزرگ کاملاً شارپ و خوانا، و در موبایل بدون ایجاد شکستگیهای نامطلوب یا سرریز کلمات باشد:
```
┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
│ مقیاس تایپوگرافی تطبیقی (Responsive Typography) │
├───────────────────┬──────────────┬──────────────┬─────────┬──────────────┬───────────────────────┤
│ سطح متنی (Role) │ سایز موبایل │ سایز دسکتاپ │ وزن (Wt)│ Line-Height │ کلاس Tailwind پیشنهادی│
├───────────────────┼──────────────┼──────────────┼─────────┼──────────────┼───────────────────────┤
│ Display / H1 │ 20px (1.25r) │ 24px (1.5r) │ 900/Bold│ 1.35 (32px) │ text-xl md:text-2xl │
│ Page Title / H2 │ 18px (1.12r) │ 20px (1.25r) │ 800/Bold│ 1.4 (28px) │ text-lg md:text-xl │
│ Section Title / H3│ 15px (.937r) │ 16px (1.0r) │ 700/Bold│ 1.45 (24px) │ text-[15px] md:text-base│
│ Card Title / H4 │ 13px (.812r) │ 14px (.875r) │ 700/Bold│ 1.5 (21px) │ text-xs sm:text-sm │
│ Body Text (اصلی) │ 13px (.812r) │ 14px (.875r) │ 500/Med │ 1.6 (22px) │ text-xs sm:text-sm │
│ Secondary / Muted │ 11px (.687r) │ 12px (.75r) │ 400/Reg │ 1.5 (18px) │ text-[11px] sm:text-xs│
│ Caption / Footnote│ 10px (.625r) │ 11px (.687r) │ 500/Med │ 1.4 (16px) │ text-[10px] sm:text-[11px]│
│ Badge / Tag Label │ 10px (.625r) │ 11px (.687r) │ 700/Bold│ 1.0 (12px) │ text-[10px] sm:text-[11px]│
│ Monospace / Stats │ 14px-20px │ 16px-24px │ 900/Mono│ 1.2 (Tabular)│ font-mono tabular-nums│
└───────────────────┴──────────────┴──────────────┴─────────┴──────────────┴───────────────────────┘
```
### ۳.۱. فونتها و ترکیب دوزبانه (Fonts & Multi-Language)
1. **فارسی و عربی (RTL):**
- فونت رسمی: `Vazirmatn` (وزنهای 400، 500، 600، 700، 800، 900).
- برای خطوط فارسی و عربی به هیچ عنوان از `letter-spacing` (کلاسهای `tracking-wide` یا `tracking-widest`) استفاده نشود زیرا اتصالات حروف شکسته میشود.
2. **انگلیسی و متون فنی (LTR):**
- فونت استاندارد: `Inter, system-ui, sans-serif`.
3. **ارقام مالی، شناسهها، مبالغ و کدها:**
- منحصراً از کلاس `font-mono tabular-nums` همراه با جهت `dir="ltr"` برای نمایش ارقام انگلیسی، قیمتها (`$1,250` یا `25,000 IQD`)، شناسههای سیستمی (`#TRIP-1082`) و تاریخهای لاگ استفاده شود.
- در عناوین و متون فارسی توضیحی از متد کمکی `toFa(number)` برای نمایش بومی اعداد بهره گرفته شود.
---
## ۴. مقیاس فواصل، پدینگها، ابعاد و ارگونومی لمسی (Spacing & Touch Targets)
رعایت سیستم فاصلهگذاری مضرب ۴ و ۸ پیکسلی برای حفظ ریتم عمودی و افقی الزامی است:
```
┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
│ ماتریس فواصل و پدینگهای رسپانسیو │
├─────────────┬─────────────┬─────────────┬────────────────────────────────────────────────────────┤
│ نام توکن │ موبایل (px) │ دسکتاپ (px) │ کاربرد و موارد استفاده │
├─────────────┼─────────────┼──────────────────────────────────────────────────────────────────────┤
│ Page Padding│ 16px (px-4) │ 32px (px-8) │ پدینگ افقی دیوارههای اصلی صفحه به محتوا │
│ Card Padding│ 14px (p-3.5)│ 24px (p-6) │ پدینگ داخلی کارتهای آماری، فرمها و جداول │
│ Form Gap │ 12px (gap-3)│ 16px (gap-4)│ فاصله عمودی و افقی بین فیلدهای ورودی فرم │
│ Section Gap │ 16px (gap-4)│ 24px (gap-6)│ فاصله بین بلوکهای اصلی و سکشنهای صفحه │
│ Table Cell │ 12px (p-3) │ 16px (p-4) │ پدینگ سلولهای جدول دادهها │
└─────────────┴─────────────┴─────────────┴────────────────────────────────────────────────────────┘
```
### ۴.۱. حداقل ابعاد تعاملی برای لمس در موبایل (Mobile Touch Targets)
در موبایل، کاربر با انگشت با صفحه تعامل دارد نه با نشانگر دقیق ماوس. لذا:
- **ارتفاع دکمهها و فیلدها:** حداقل `38px` الی `44px` در موبایل (`h-10 sm:h-9`).
- **آیکونباتنهای عملیاتی:** کادر کلیکپذیر حداقل `36x36px` با پدینگ امن (`size-9 p-1.5`).
- **فاصله بین دکمههای مجاور:** حداقل `8px` (`gap-2`) تا از کلیک اشتباه جلوگیری شود.
### ۴.۲. شعاع انحنای المانها (Border Radii)
- **تگها، بجها و المانهای ریز:** `rounded-lg` (8px الی 10px).
- **فیلدهای ورودی و دکمهها:** `rounded-xl` (12px الی 14px).
- **کارتها، سکشنها و جداول:** `rounded-2xl` (16px).
- **دیالوگها در دسکتاپ:** `rounded-2xl` الی `rounded-3xl` (20px الی 24px).
- **دیالوگها در موبایل (Bottom Sheet):** لبههای بالا گرد `rounded-t-2xl` و لبههای پایین صاف `rounded-b-none`.
- **بجهای کپسولی / قرصی:** `rounded-full` (9999px).
---
## ۵. پالت رنگی خنثی، بدون مدادرنگی (Neutral Slate Color Palette)
> [!CAUTION]
> **قانون قطعی ۹۰٪ خنثی (Strict 90% Neutral Rule):**
> بیش از **۹۰ درصد** محیط بصری پنل مدیریت باید از رنگهای خنثی (مشکی تیره مات، زغالی، اسلیت، خاکستری، سفید) تشکیل شود. استفاده از رنگهای تند و رنگینکمانی برای پسزمینه کارتها، هدرها، ستونهای جدول یا تگهای معمولی اکیداً ممنوع است.
```
┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
│ پالت رنگی رسمی پنل مدیریت عقیله │
├───────────────────┬───────────────────────────────┬──────────────────────────────────────────────┤
│ توکن معنایی │ تم دارک (Dark Mode - پیشفرض) │ تم لایت (Light Mode) │
├───────────────────┼───────────────────────────────┼──────────────────────────────────────────────┤
│ background │ #18191D (تیره مات و عمیق) │ #F8FAFC (سفید-خاکستری لطیف) │
│ surface / card │ #22252C (کارت پایه زغالی) │ #FFFFFF (سفید خالص) │
│ popover / panel │ #1E2128 (پنلهای اسلاید) │ #FFFFFF │
│ border │ rgba(255, 255, 255, 0.12) │ rgba(15, 23, 42, 0.12) │
│ border-soft │ rgba(255, 255, 255, 0.07) │ rgba(15, 23, 42, 0.07) │
│ primary (برنز برند)│ #D09460 │ #D09460 │
│ primary-muted │ rgba(208, 148, 96, 0.15) │ rgba(208, 148, 96, 0.10) │
│ text-foreground │ #FFFFFF │ #0F172A │
│ text-muted │ #8B8B8B │ #64748B │
│ text-subtle │ #4D4D4D │ #94A3B8 │
└───────────────────┴───────────────────────────────┴──────────────────────────────────────────────┘
```
### ۵.۱. بجهای وضعیتی استاندارد (Semantic Badges)
رنگهای اشباع منحصراً و صرفاً برای ۴ حالت سیستم مجاز هستند:
```tsx
// ۱. تگ خنثی معمولی (دستهبندی، کشور، نسخه، برچسبها) - بیش از ۸۰٪ تگها
بلیت و پرواز
// ۲. وضعیت موفق / فعال / تایید شده (Success)
تأیید شده
// ۳. وضعیت هشدار / در حال پردازش (Warning / Pending)
در انتظار بررسی
// ۴. وضعیت خطا / لغوشده / حذف (Error / Destructive)
رد شده
```
---
## ۶. استاندارد جامع جداول دادهای و تطبیق با موبایل (Responsive Data Tables)
جداول عریض دادهای مهمترین چالش در صفحات وب هستند. در پنل عقیله باید از یکی از دو الگوی استاندارد زیر استفاده شود:
### الگوی اول: نمایش دوگانه (جدول در دسکتاپ + لیست کارت در موبایل - الگو طلایی)
در این الگو، برای صفحات موبایل (`< 768px`) به جای جدول پهن ناخوانا، دادهها به صورت کارتهای مدرن و شکیل نمایش داده میشوند:
```tsx
{/* نمای دسکتاپ و تبلت (md به بالا) */}
عنوان سرویس
دستهبندی
مبلغ
وضعیت
عملیات
{items.map((item) => (
{item.title}
{item.category}
{toFa(item.price)} د.ع
{/* بج وضعیت */}
{/* دکمههای ویرایش/حذف */}
))}
{/* نمای موبایل (زیر md) - کارتهای مجزا */}
{items.map((item) => (
{item.title}
{item.category}
{/* بج وضعیت */}
مبلغ کل:{toFa(item.price)} د.ع
))}
```
### الگوی دوم: جدول با اسکرول افقی نرم و ستون عملیات چسبان (Sticky Action Column)
چنانچه اطلاعات جدول بسیار متراکم است، کل جدول درون کانتینر `overflow-x-auto` قرار گرفته و ستون عملیات در سمت چپ (یا انتهای RTL) چسبان (`sticky end-0`) میماند:
```tsx
{/* ردیفها */}
```
---
## ۷. نوار فیلترها، جستجو و فرمها در وب و موبایل (Filters & Forms)
### ۷.۱. نوار فیلترهای بالا (Filter Bar)
- **دسکتاپ (`sm` به بالا):** چینش افقی `flex flex-row items-center justify-between gap-3`. فیلد سرچ گسترده و فیلترهای دراپداون در امتداد یک خط.
- **موبایل:** چینش عمودی استکشده `flex flex-col gap-2.5 items-stretch`. سرچ تمامعرض در بالا و دکمههای فیلتر/اکشن در زیر.
```tsx
{/* بخش جستجو و انتخابگرها */}
{/* دراپداون وضعیت یا سرویس */}
{/* دکمه عملیات اصلی */}
```
### ۷.۲. گرید فیلدهای فرم (Responsive Form Grids)
فرمها در دیالوگها یا صفحات باید به صورت واکنشگرا ستونبندی شوند:
- موبایل: ۱ ستونه (`grid-cols-1`).
- تبلت و فبلت: ۲ ستونه (`sm:grid-cols-2`).
- دسکتاپ عریض: ۳ ستونه (`lg:grid-cols-3`).
```tsx
```
---
## ۸. دیالوگها، مودالها و باتمشیتها (Modals & Bottom Sheets)
دیالوگهای پنل عقیله باید در دسکتاپ در مرکز تصویر باز شده و در موبایل به صورت سازگار با انگشت دست عمل کنند:
```tsx
```
---
## ۹. استاندارد سراسری اسکلتون لودینگ (Shimmer Loading Standard)
> [!IMPORTANT]
> **الگوی واحد لودینگ:** تمام صفحات، جداول و کارتها در هنگام دریافت اطلاعات باید از کامپوننت سراسری `@/components/shared/Shimmer` با انیمیشن پالس و پالت خنثی استفاده کنند.
### ۹.۱. توکنهای رنگی و دوره تناوب شیمر
- **تم لایت:** رنگ پایه `#E2E8F0`، هایلایت `#F8FAFC`.
- **تم دارک:** رنگ پایه `#22252C`، هایلایت `#333742`.
- **دوره انیمیشن:** دقیقاً `1500ms` با انیمیشن ملایم پالس.
```tsx
import { Shimmer } from '@/components/shared/Shimmer'
{isLoading ? (
{/* اسکلتون کارتهای آماری */}
{/* اسکلتون جدول دادهها */}
) : (
)}
```
---
## ۱۰. دسترسیپذیری، ارگونومی و مناطق امن (Accessibility & Safe Areas)
1. **کنتراست استاندارد متون (WCAG AA):**
- متن اصلی در برابر پسزمینه حداقل نسبت `4.5:1` داشته باشد.
- از متنهای خاکستری کمکنتراست در تم دارک پرهیز شود.
2. **منطقه امن دکمههای پایین موبایل (Safe Area Inset):**
- نوارهای عملیاتی چسبان پایین صفحه (Sticky Bottom Bar) باید دارای پدینگ `pb-[calc(0.75rem+env(safe-area-inset-bottom))]` باشند تا با نوار هومبار آیفون تداخل پیدا نکنند.
3. **حالت فوکوس کیبورد (Focus Visibility):**
- تمامی دکمهها و فیلدها باید دارای کادر فوکوس واضح با `focus-visible:ring-2 focus-visible:ring-primary/50` باشند.
---
## ۱۱. چکلیست طلایی هوش مصنوعی قبل از تحویل هر تسک وب و پنل (AI Golden Checklist)
قبل از نهایی کردن هرگونه تغییر در پنل مدیریت، بررسی موارد زیر الزامی است:
- [ ] **۱. پالت خنثی و بدون رنگینکمان:** آیا بیش از ۹۰٪ المانها دارای رنگهای خنثی بوده و از رنگهای فسفری/تند پرهیز شده است؟
- [ ] **۲. سازگاری کامل با موبایل (Responsive):** آیا صفحه در ابعاد موبایل (`375px` و `414px`) تست شده و اسکرول افقی نامطلوب (Horizontal Overflow) ندارد؟
- [ ] **۳. تایپوگرافی چندزبانه:** آیا فونت متون فارسی/عربی `Vazirmatn` و ارقام/مبالغ/کدها `font-mono tabular-nums` با `dir="ltr"` است؟
- [ ] **۴. ابعاد کلیکپذیر (Touch Targets):** آیا دکمهها و فیلدها در موبایل ارتفاع کافی (حداقل `38px` تا `44px`) دارند؟
- [ ] **۵. لودینگ یکدست (Shimmer):** آیا در حالت لودینگ از کامپوننت استاندارد `Shimmer` با پالت خنثی استفاده شده است؟
- [ ] **۶. دوگانگی تم:** آیا کنتراست صفحه در هر دو حالت Light Mode و Dark Mode خوانا و استاندارد است؟
- [ ] **۷. منطق بیزینس و کلیدهای انگلیسی:** آیا تمامی مقایسهها و شرطهای کد بر اساس کلیدهای استاندارد انگلیسی API پیاده شدهاند؟