# قواعد UI — هر صفحه و بخش جدید عیناً مطابق سیستم موجود
**الزامی برای همهٔ تسکها.** هیچ طراحی جدید، هیچ تم جدید، هیچ کامپوننت موازی.
منبع حقیقت: کدِ موجود، نه سلیقه و نه `docs/admin-ui/ui-design-spec.md` (که draft قدیمی
با پالت بنفش است و با کد شیپشده نمیخواند).
---
## پنل ادمین `clinicpro` — React 19 + Webpack Encore + Tailwind v4
### توکنها — هرگز مقدار hard-code
منبع: `assets/admin/styles.css`، بلوک `:root`.
```tsx
// ❌
// ✅
```
| گروه | توکن |
|---|---|
| برند | `--primary` `#5559CE` · `--primary-600/700` · `--primary-soft/soft2` · `--on-primary` |
| اکسنت | `--accent` `#f0682a` · `--accent-600` · `--accent-bg` |
| سطوح | `--bg` `--bg-2` `--surface` `--surface-2/3` `--border` `--border-2` |
| متن | `--text` `--text-2` `--text-3` |
| وضعیت | `--success/-bg` `--warning/-bg` `--danger/-bg` `--info/-bg` `--violet/-bg` |
| کارت آمار | `--stat-{amber,violet,green,pink}-{bg,fg}` |
| شعاع | `--r-xs:7` `--r-sm:8` `--r:14` `--r-lg:18` `--r-xl:24` `--r-pill:999` |
| سایه | `--shadow-sm` `--shadow` `--shadow-lg` |
| چیدمان | `--sidebar-w:243` `--collapsed-w:90` `--topbar-h:64` `--gap:20` `--card-pad:22` `--row-h:56` |
| حرکت | `--ease: cubic-bezier(.22,.61,.36,1)` |
دارکمود با `[data-theme="dark"]` و حالت فشرده با `[data-density="compact"]` خودکار
اعمال میشوند — **اگر** از توکن استفاده کرده باشی. مقدار hard-code در دارکمود میشکند.
### کامپوننتها — اول جستوجو، بعد ساخت
`assets/admin/components/ui/` اینها را دارد. ساختن نسخهٔ موازی از هر کدام **رد** میشود:
```
DataTable (مرتبسازی، جستجو، skeleton، empty state، bulk) · Modal · ConfirmDialog
PageHeader (عنوان + breadcrumb + action + backTo) · BackButton · StatCard · StatusBadge
Pagination · SearchableSelect · AppointmentStatusDropdown
PersianDateInput / PersianDatePicker / PersianCalendar
MobileInput · PriceInput · Portal · FeatureGate · Altcha
```
### پنج قاعدهٔ غیرقابلمذاکره
1. **`SearchableSelect`، هرگز `