وضعیت پذیرش طراحی
این صفحه تنها ماتریس دستیِ پذیرش طراحی است: فاصلهٔ هدفِ normative تا آنچه واقعاً در کد اجرا میشود. مقادیر فقط این چهار تا هستند — هیچ درصدی نوشته نمیشود:
| مقدار | معنا |
|---|---|
| complete | با هدف منطبق است |
| partial | هست، اما با هدف اختلافِ مشخص دارد |
| not-started | هیچ پیادهسازیای وجود ندارد |
| not-applicable | این پلتفرم فعلاً سطحِ مربوطه را ندارد |
ستون «شاهد» مسیر مخزن است که ادعا را میتوان در آن دید. ستون «مرز بعدی» کوچکترین قدمی است که ردیف را به هدف نزدیک میکند.
مبانی
| موضوع | هدف | وب | اندروید | پروتوتایپ | شاهد | مرز بعدی |
|---|---|---|---|---|---|---|
| رنگ برند | آبی واحد #2563EB (تاریک #8FB4FF) — فقط اکشن و حالت فعال | partial — توکنها از seed #2563EB تولید شده اما primary روشن #004AC6 است و #2563EB در primary-container نشسته | partial — اسکیمای MD3 تولیدشده از seed (GeneratedLightScheme.kt)؛ primary روشن مثل وب #004AC6 است، نه #2563EB هدف | complete | packages/design-tokens/tokens.json؛ apps/calendar-web/src/styles/tokens.css؛ apps/mobile/.../theme/color/schemes/GeneratedLightScheme.kt؛ خروجی اسکیما؛ prototypes/design-system-foundations.html#f-color | تصویب مقیاس نهایی؛ سپس همترازی primary وب و موبایل با توکن برند |
| پالت رویداد (۸ رنگ مقولهای) | ۸ رنگ هدف: آبی، سبز، فیروزهای، کهربایی، قرمز، صورتی، بنفش، قهوهای (--ev-1..8) | partial — ۸ رنگ هست اما مقادیر متفاوتاند (نارنجی/بنفش/تیل/کهربایی بهجای فیروزهای/کهربایی/قهوهای هدف) | not-applicable — هنوز UI رویداد ندارد | complete | tokens.css (--event-1..8)؛ prototypes/design-system-foundations.html#f-color | انتخاب پالت نهایی پیش از مهاجرت؛ سپس بازتولید --event-* وب |
| تایپوگرافی | Dana تکخانواده، مقیاس ۹پلهٔ هدف تا وزن ۸۰۰، ارقام فارسی | partial — Dana خودمیزبانِ ۴۰۰–۷۰۰ و مقیاس عددیِ سادهشده؛ وزن ۸۰۰ عنوانها و FaNum پروتوتایپها با آن نیست | partial — مقیاس FaTypographies کامل اما فونت Dana نیست | complete | apps/calendar-web/src/index.css و src/styles/tokens.css؛ apps/mobile/.../theme/typography/؛ prototypes/design-system-foundations.html#f-type | گسترش باندل فونت وب به وزن ۸۰۰ هنگام پیادهسازی عنوانهای هدف |
| سطوح | نردبان ۵پلهٔ سطح با جداسازیِ خط، سایه فقط لایههای شناور | partial — نردبان surface-container MD3 هست؛ قاعدهٔ «خط نه سایه» بهصورت قرارداد نوشتهشده اجرا نمیشود | partial — surfaceContainer کامل؛ همین وضعیت | complete | tokens.css؛ DefaultLightScheme.kt | بازبینی کارتهای درونصفحهٔ وب و حذف سایههای غیرضرور |
| شکل و شعاع | 8/10/12/16/24/99 با قاعدهٔ حداکثر سه شعاع در نما | partial — مقیاس MD3 (4–28 + کامل) با مقادیر متفاوت از هدف | partial — FaShapeKeyTokens موجود، مقادیر خود ش | complete | tokens.css (--md-sys-shape-*)؛ apps/mobile/.../theme/FaShapeKeyTokens.kt | همترازی مقیاس شعاع وب/موبایل با اعداد هدف |
| حرکت | منحنی واحد cubic-bezier(.2,0,0,1)، بازههای 80–240ms، فقط transform/opacity | partial — توکنهای easing/duration MD3 تعریف شده؛ رعایتِ «فقط transform/opacity» همهجا بررسی نشده | partial — انیمیشنهای Compose با مقادیر خودشان | complete | tokens.css (--md-sys-motion-*)؛ prototypes/design-system-foundations.html#f-motion | ممیزی ترنزیشنهای عرض/ارتفاعدار در وب |
| حالت تاریک | تعویض توکن؛ برند تاریک #8FB4FF، تعطیلات #FF8A80، اسکریم تا ۵۸٪ | partial — مکانیک کامل: کلاس .dark + darkMode: 'selector' و ماندگاری در localStorage با کلید darkMode؛ مقادیر و کلید با هدف فرق دارد (پروتوتایپ tvm-theme است) | complete — دو اسکیمای روشن/تاریک با FaTheme سوییچ میشوند | complete | apps/calendar-web/src/contexts/DarkModeContext.tsx و tailwind.config.js؛ apps/mobile/.../schemes/DefaultDarkScheme.kt | همترازی مقادیر تاریک برند پس از تصویب |
پوسته و نماها
| موضوع | هدف | وب | اندروید | پروتوتایپ | شاهد | مرز بعدی |
|---|---|---|---|---|---|---|
| پوستهٔ واکنشگرا | compact نوار پایین · medium ریل ۸۰ · expanded سایدبار دائمی؛ لبهٔ expanded در production 1024px | complete — BottomNav/Fab زیر 600، NavigationRail در 600–1023، CalendarSidebar از 1024 (Tailwind lg و useIsMobile همراستا) | not-applicable — اپ بومیِ موبایل؛ کلاس پنجره ندارد | partial — همان رفتار اما لبهٔ expanded در 840 (تجربی) | apps/calendar-web/src/components/calendar-app/ (استوریهای BottomNav/NavigationRail در استوریبوک)؛ tailwind.config.js؛ src/hooks/useIsMobile.ts؛ prototypes/design-system-patterns.html#p-window | بهروزرسانی پروتوتایپها به 1024 پس از تثبیت |
| مودال/دیالوگ | یک کامپوننت: برگهٔ پایین موبایل / دیالوگ مرکزی دسکتاپ + Esc/تلهٔ فوکوس/قفل اسکرول | partial — Modal.tsx همین دو چیدمان را با Esc، focus trap، restore و scroll lock دارد؛ نشانههای بصری با .dialog هدف یکسان نیست | partial — ModalBottomSheet و Dialog در core/design موجود | complete | apps/calendar-web/src/components/calendar-app/Modal.tsx؛ apps/mobile/.../component/ModalBottomSheet.kt | همترازی توکنهای بصری (شعاع/اسکریم) با هدف |
| نواهای تقویم | ماه/هفته/روز/برنامه با چیپ کامل در دسکتاپ و نقطه+شمارش در موبایل | complete — هر چهار نما + بخش وظایف؛ روی موبایل نقطه و «+N» | not-applicable — نمای تقویم ندارد | complete | MonthView.tsx، WeekView.tsx، DayView.tsx، AgendaView.tsx، TasksPage | همترازی چیپ رویداد با توکنهای هدف |
| فرم رویداد | ترتیب فیلدها از مهم به جزئی، اعتبارسنجی زندهٔ بیسروصدا، CTA قفل تا اعتبار | partial — EventModal فرم کامل ایجاد/ویرایش دارد؛ جزئیات اعتبارسنجی و ترتیب با هدف یکدست نیست | not-applicable | complete | apps/calendar-web/src/components/calendar-app/EventModal.tsx؛ prototypes/design-system-patterns.html#p-forms | بازبینی ترتیب فیلدها و پیامهای خطا بر قالب هدف |
| پیشنمایش سپس ویرایش | کلیک = دیالوگ فقطخواندنی؛ «ویرایش» فرم را باز میکند | not-started — کلیک روی رویداد مستقیم فرم ویرایش را باز میکند | not-applicable | complete | EventModal.tsx؛ prototypes/design-system-patterns.html#p-viewedit | افزودن حالت view به EventModal پیش از فرم |
| OTP | شش خانهٔ جدا با ارقام فارسی | partial — ورود دومرحلهای فعال است اما با ورودیِ تکی otp؛ ششخانهای فقط پروتوتایپ است | not-started | complete | apps/calendar-web/src/features/auth/؛ prototypes/design-system-components.html#c-otp-spec | پیادهسازی .otp-boxes هنگام بازطراحی ورود |
| جستجو | نتایج زنده زیر جعبهٔ نوار بالا، پرش به روز + پیشنمایش | not-started — جعبهٔ جستجوی CalendarHeader بیعمل است (بدون handler) | not-applicable | complete | apps/calendar-web/src/components/calendar-app/CalendarHeader.tsx؛ prototypes/design-system-patterns.html#p-search | نخست: موتور جستجوی محلی روی Dexie |
برند
| موضوع | هدف | وب | اندروید | پروتوتایپ | شاهد | مرز بعدی |
|---|---|---|---|---|---|---|
| نشان «نقطهٔ امروز» | نماد رسمی محصول + قواعد کاربرد | not-started — فاوآیکون/نشان سفارشی ندارد | not-started — آیکون اپ ساخته نشده | complete | docs/static/img/logo.svg (فقط docs)؛ prototypes/brand-identity.html | فاوآیکون وب از logo.svg؛ سپس آیکون اپ ۱۰۲۴ |
| رنگهای موبایل | همراستا با توکنهای هدف (برند #2563EB، تعطیلات، معنایی) | — | partial — اسکیمای تولیدشده از seed + TokenColors (تعطیلات/پالت رویداد) از tokens.json؛ primary روشن #004AC6 با هدف فرق دارد | — | apps/mobile/.../theme/color/schemes/؛ خروجی اسکیما | تصویب مقیاس نهایی؛ سپس همترازی primary |
| تایپوگرافی موبایل | Dana با مقیاس هدف | — | partial — FaTypographies و EleTypeScaleTokens کامل؛ فونت Dana نیست | — | apps/mobile/.../theme/typography/ | افزودن فونت Dana به باندل موبایل |
| شکل موبایل | مقیاس شعاع هدف (8–24/99) | — | partial — FaShapeKeyTokens موجود با مقادیر خودش | — | apps/mobile/.../theme/FaShapeKeyTokens.kt | همترازی مقادیر با هدف |
تضادهای شناختهشده
این تفاوتها عمداً ثبت شدهاند تا کسی آنها را «باگ» نسنجد؛ مسیر حل هرکدام از ستون «مرز بعدی» همان ردیف میگذرد:
- لبهٔ expanded ناوبری: production (CSS و JS وب) روی 1024px است؛ پروتوتایپها 840px را نشان میدهند و تا بهروزرسانی، تجربی شمرده میشوند.
- مکانیک حالت تاریک: وب
.dark+darkMode: 'selector'با کلیدdarkMode؛ پروتوتایپdata-themeبا کلیدtvm-theme. - دو آبی موازی (حلشده): موبایل به اسکیمای seed-محور وب مهاجرت کرد (
Generated*Scheme.ktازpackages/design-tokens). مانده: primary روشن#004AC6در هر دو پلتفرم در برابر#2563EBهدف — منتظر تصویب مقیاس نهایی. - دو پالت رویداد: وب
--event-1..8با پالت هدف فرق دارد. - توکنهای تایپ سادهشدهٔ وب: مقیاس عددی MD3، نه پلههای هدف تا ۸۰۰.
- پیشنمایش-سپس-ویرایش و جستجو: هنوز not-started — در هیچ پلتفرمی ادعای پیادهسازی نمیشوند.
نگهداری
این ماتریس دستی است و باید با هر تغییرِ پذیرش بهروز شود. دو سطح شاهدِ زنده هم در کنار مسیر مخزن
وجود دارند: استوریبوک وب (apps/calendar-web) و گالری خروجیهای اندروید؛ حداقل هنگام عوضکردنِ
last_reviewed در صفحات طراحی. منبع ادعا همیشه کد است — ستون «شاهد»
را بدون بازبینیِ مسیر عوض نکنید.