# پیکسلبهپیکسل کردن منوی تنظیمات + ریشهگرفتن رنگها از شخصیسازی
## پروژه
`clinicpro` (فقط پنل ادمین React — تغییر backend ندارد).
اپ دسکتاپ `clinic-pro-tauri` فقط **مرجع بصری** است، نه هدف تغییر. صفحهی مرجع:
`http://127.0.0.1:5170/setting/purchase-subscription`
(کد آن: `clinic-pro-tauri/src/components/setting/listMenu/purchaseSubscription/PurchaseSubscriptionSidebar.jsx`)
## زمینه
پنل ادمین `clinicpro` یک ناحیهی «تنظیمات» دارد که کنار محتوا یک سایدمنوی مشترک (`PurchaseSubscriptionSidebar`) نمایش میدهد. این منو در همهی صفحات تنظیمات از طریق `SettingsLayout` رندر میشود.
- صفحهی `/admin/subscription` (`SubscriptionPage.tsx`) درست و پیکسلبهپیکسل است — **مرجع درونپروژهای**.
- صفحهی `/admin/appointment-settings` (`AppointmentSettingsPage.tsx`) **خراب** است: محتوا روی زمینهی خاکستری `#fafafa` نشسته، پنل سفید ندارد و فاصلهها با مرجع فرق دارد.
## مشکل / هدف
سه اصلاح مشخص:
1. **رنگها باید از شخصیسازی ریشه بگیرند.** رنگ ردیف فعال منو در `PurchaseSubscriptionSidebar.tsx` بهصورت هاردکد `#f17732` است. باید از متغیر برند شخصیسازی (`var(--accent)`) استفاده کند تا با «رنگ اصلی» انتخابشده در پنل شخصیسازی (`Topbar.tsx` → `setBrandHue`) هماهنگ شود.
2. **محتوای appointment-settings باید روی پنل سفید `#ffffff` بنشیند، نه `#fafafa`.** مرجع (tauri و نیز `SubscriptionPage.tsx`) محتوا را داخل یک پنل با `background: var(--surface)` (سفید) میگذارد. در appointment-settings محتوا مستقیم روی `--bg` صفحه (`#fafafa`) است. `#fafafa` رنگِ **ناحیهی منو** است، نه محتوا.
3. **منو باید چسبیده به نوارِ کناری اصلی (سمت راست) باشد.** در مرجع tauri منوی تنظیمات فلاش به سایدبار اصلی میچسبد؛ در clinicpro بهخاطر padding محتوا فاصله افتاده.
## فایلهای مرتبط
| فایل | نقش |
|------|-----|
| `assets/admin/components/layout/PurchaseSubscriptionSidebar.tsx` | سایدمنوی مشترک تنظیمات — رنگ ردیف فعال اینجاست |
| `assets/admin/pages/AppointmentSettingsPage.tsx` | صفحهی خراب که باید پیکسلبهپیکسل شود |
| `assets/admin/pages/SubscriptionPage.tsx` | **مرجع درست** — الگوی wrap محتوا در پنل سفید |
| `assets/admin/components/layout/SettingsLayout.tsx` | شل تنظیمات (grid: `[248px_minmax(0,1fr)] gap-5`) — محل اصلاح فلاششدن |
| `assets/admin/styles.css` | تعریف متغیرها: `--surface:#ffffff`، `--bg:#fafafa`، `--accent:#f0682a`، `--gap:20px`، `.content{padding:var(--gap);max-width:1480px;margin:0 auto}` |
| `clinic-pro-tauri/.../PurchaseSubscriptionSidebar.jsx` | مرجع بصری (تغییر نده) |
## وضعیت فعلی
### ۱) رنگ هاردکد در سایدمنو — `PurchaseSubscriptionSidebar.tsx`
```tsx
const rowStyle: React.CSSProperties = {
borderRadius: 12, height: 44, marginBottom: 8,
display: 'flex', alignItems: 'center', justifyContent: 'flex-start',
padding: '0 14px', fontSize: 16, fontWeight: isActive ? 700 : 500,
lineHeight: 1, textAlign: 'right',
background: isActive ? '#f17732' : 'transparent', // ← هاردکد
color: isActive ? '#FFFFFF' : 'var(--text-2)',
cursor: item.to ? 'pointer' : 'not-allowed',
transition: 'background .14s',
};
// ...
onMouseEnter={(e) => { if (!isActive) (e.currentTarget as HTMLElement).style.background = 'var(--surface-2)'; }}
onMouseLeave={(e) => { if (!isActive) (e.currentTarget as HTMLElement).style.background = 'transparent'; }}
```
### ۲) صفحهی خراب — `AppointmentSettingsPage.tsx` (بازگشت فعلی)
```tsx
return (
مدیریت نوبت دهی