كسوتان — الذهبية والفضية
تُوزَّع السمة على جميع الواجهات عبر Environment، وتتبدل فورًا. ويُصمَّم كل كسوةٍ على حدة، حتى في طراز القرص والعقارب والأرقام.
الذهبي — ساعة الصائد
مينا اللازورد الغامق × أرقام رومانية مذهَّبة (بصيغة IIII)، وشعارٌ مركزي من هلالٍ ونجمةٍ ثمانية
علبة محفورة من الذهب العتيق (نحاس معتَّق). ونافذة صغيرة عند موضع الساعة 6 تُظهر الساعة المحتومة القادمة
#8F7028
اللازورد #101838
التذهيب #D9B45C
ذهب القمر #F2DC96
tint #A67C2E
الفضي — ساعة السكك الحديدية
قرص أبيض، أرقام عربية عريضة، وعقارب مستقيمة
ويُثبَّت عقرب الثواني بالأحمر، على عادة ساعات السكك الحديدية
#9CA3AE
الخزف الأبيض #FAFAF7
أسود حديدي #1A1C22
الأحمر #B02E2E
tint #44546A
ضبط الوقت بالعقارب
لا يُستخدم DatePicker. فبدلًا من حركة لفّ التاج، تُسحَب عقارب القرص نفسها لتحديد وقت الرنين. ويمكنك بالفعل سحب القرص أدناه.
ص7:30
- تحويل: زاوية → وقت — تُحوَّل إحداثيات السحب إلى زاويةٍ باستخدام atan2، ثم تُقسَّم إلى درجاتٍ بمقدار 6° لعقرب الدقائق و30° لعقرب الساعات (بوصفها دالة خالصة باسم
ClockAngleMath، خاضعة للاختبار). - الترابط — عند إدارة عقرب الدقائق، يتبعه عقرب الساعات بمعدل 0.5°/دقيقة. وعند تجاوز علامة 0 دقيقة، تتقدم الساعة أو تتراجع (يُحدَّد ذلك بعبور 45→15 دقيقة).
- الإحساس اللمسي — مع كل خطوةٍ بمقدار 1 دقيقة، تعمل .sensoryFeedback(.selection)، فتُعيد إلى إصبعك إحساس نقرة التروس.
- العقرب المحدَّد — تظهر حلقةٌ نحاسية اللون (مقبض) عند طرف العقرب، لتوضّح أيّهما قيد التحكم.
- التأكيد — يُحفَظ عبر لوحة «اضبط على هذا الوقت»، ويُحوَّل إلى Alarm.Schedule.relative في AlarmKit.
عكارة الزمن — غسق الليل وفجره
كلما تعمّق الليل، ازداد قرص الساعة عكارةً بلونٍ بنفسجي داكن، أشبه بإناءٍ للروح. وعند الفجر، يُطهَّر العكر بالضياء. وعند الغروب، تطفو كوكبة الفصل على القرص وتتلألأ. جرِّب منزلق الوقت أدناه لتنقّل عبر يومٍ كامل.
21:00المساء
- العكارة — من الساعة 16:00 وحتى المساء، تمتلئ رواسب بنفسجية داكنة من حافة القرص، لتبلغ ذروتها بين الساعة 23:00 و4:00. وبتدرّجٍ متعدد الطبقات بأسلوب المزج الضربي، تغرق الأرضية العاجية كأنها «قاع إناء».
- تطهير الفجر — بين الساعة 4:00 و6:00 صباحًا، يذيب ضياءٌ منحدر من الأعلى (بمزج الشاشة) تلك الرواسب. وتعيش الساعة الرئيسية هذه الدورة دومًا، مرتبطةً بـالوقت الفعلي.
- كوكبة الفصل — عند الغروب (بفارق ±2 ساعة تقريبًا)، تطفو كوكبة الفصل بلونٍ ذهبي. الربيع = الأسد / الصيف = العقرب / الخريف = ذات الكرسي / الشتاء = الجبار. وتبقى خافتةً طوال الليل.
- تطبيق SwiftUI — يُحسَب معامل الوقت باستخدام
TimelineView(.everyMinute)، وينعكس ذلك على رسم الضرب/الشاشة في Canvas وعلى شفافية مسار الكوكبة.
غطاء الأبراج الاثني عشر — شعار كوكبةٍ يتبدل شهريًا
في وسط الغطاء مينا من اللازورد الغامق، يُعاد نقش برج ذلك الشهر (كوكبته) عليها بالذهب مع كل شهرٍ جديد، مصحوبًا بهلالٍ واسم الشهر الياباني التقليدي. وغطاء الساعة الرئيسية يحمل نقش الشهر الحالي.
الأبراج الدائرة — · للنجوم عمقٌ، وتظل تدور في الفضاء. امسحها لتديرها، فيحملها القصور الذاتي
تحاكي نبرة التصميم طراز الساعات الجيبية العتيقة «مينا اللازورد × الذهب العتيق» (مرجع: design-refs/ref-watch.jpg). وخطوط الكوكبة أسلوبٌ مبسَّط ومصمَّم. وفي SwiftUI، يُختار نقش كل شهرٍ عبر Calendar.current.component(.month)، ويُرسَم بتذهيبٍ على Canvas.
الأركان — أسرار الأبراج الاثني عشر
امسح القرص برسم دائرة، ولُفَّه اثنتي عشرة مرة، فيتجلى الفن. ليلًا الأركان (12 نوعًا بعدد الأبراج)، ونهارًا فنون الشمس (6 أنواع)، وبإغلاق الغطاء الختم (6 أنواع) — أي 24 نوعًا موزعة على ثلاثة أنظمة في التطبيق الفعلي. ويتيح لك عرض هذه الصفحة تجربة سبعة أنواعٍ ممثِّلة منها.
تعويذة فتح الغطاء
تعويذة إغلاق الغطاء (الختم، في التطبيق الفعلي)
ساعة الرنين (عند انطلاق ناقوس الساعة)
حين تحين الساعة، تومض الشاشة بأكملها بالذهبي، وتنبسط الدائرة السحرية حاملةً نقش «حانتِ الساعةُ المحتومة!».
- كشف اللف — يُتتبَّع مجموع زاوية الدوران التراكمية حول مركز القرص، وتُحتسب لفّة واحدة كل 2π. تضيء معينات الدائرة السحرية. وإذا تُرك دون لمسٍ لمدة 4 ثوانٍ، يتبدد اللف.
- تطهير ضياء الفجر — يطهّر العكارة بالضياء. ينتقل القرص قسرًا إلى حالة الفجر، وينطلق انفجارٌ ذهبي.
- عاصفة الأبراج — تشتعل كوكبة الفصل، وتتناثر نجومها بعيدًا عن الساعة.
- ارتداد الزمن — تتراجع العقارب بسرعة فائقة، وتدور الدائرة السحرية بالاتجاه المعاكس.
- حاجز البرق الأرجواني — وميضٌ بنفسجي داكن وصدمة. تتحول الدائرة السحرية إلى اللون البنفسجي.
- اللهب القرمزي — يتصاعد الشرر حول الساعة عبر فضاء 3D (جسيمات بإسقاطٍ منظوري، مع ترجرج).
- دوامة الموج الأزرق — تنتشر التموجات تحت القدمين، ويرسم الرذاذ قوسًا مسحوبًا بالجاذبية.
- حلقة الريح العاتية — تدور تيارات الريح حول الساعة من الأمام والخلف، فتتمايل الساعة بفعل ضغطها.
- تطبيق SwiftUI — يعتمد كشف الدوران على تراكم
atan2(أُضيف إلى ClockAngleMath)، وتُوحَّد التعاويذ ضمن البروتوكولSpellEffect، مع حفظ إعدادات الفتحات في UserDefaults. وعند الرنين، يُكتشَف وضع alerting في AlarmKit لإطلاق الانبثاق الأعظم عبر fullScreenCover.
تركيب الشاشات
الشاشة الرئيسية هي الساعة دومًا. أما القائمة والتحرير والساعة الرملية، فتُبنى كأسطح عملٍ خلف الغطاء، على شكل ألواحٍ محفورة فوق أرضية اللباد ذاتها.
أطلق سراح الساعة المحتومة
الساعة المحتومة القادمة — غدًا 7:30 ص
اضغط مطولًا لتبديل السمة
الشاشة الرئيسية (RootView)
ناقوس الساعة
ص7:30
أيام الأسبوع · غفوة 9 دقائق
ص9:00
عطلة نهاية الأسبوع
م10:15
مرة واحدة فقط
القائمة (AlarmListView)
ضبط الوقت
ص7:30
التسمية — «شاي الصباح» · غفوة 9 دقائق
اضبط على هذا الوقتالتحرير (AlarmEditorView)
الساعة الرملية
الساعة الرملية (TimerView)
Live Activity / Dynamic Island
تحيا الساعة الرملية وموقف اللحظة في شاشة القفل وفي Dynamic Island. وبلمسة نحاسية واحدة على خلفية سوداء، تحافظان على حضور الساعة الجيبية حتى داخل واجهة النظام.
POCKETCHIME
الساعة الرملية للشاي
4:23
شاشة القفل — مُشغَّلة عبر Text(timerInterval:)
Dynamic Island (compact) — قرص الساعة إلى اليسار، والوقت المتبقي إلى اليمين
الطباعة والألوان
الخط المستخدم هو خط النظام ذو الزوائد (New York / Hiragino Mincho). وتُنقش الأرقام بعرضٍ ثابت، بينما تُباعَد حروف التسميات اللاتينية اتساعًا لتحاكي نقشًا محفورًا.
10:09
ضبط الوقت
بفتح الغطاء يبدأ اليوم. لُفَّ العقارب، وانتظر الساعة.
RAILROAD GRADE · EST. 2026
| أرضية اللباد (الخلفية) | #24331F → #0B110A | |
| حبر الحروف (النص) | #EFE6CD | |
| النحاس (اللون المميز) | #C9A24B | |
| القرمزي (عقرب الثواني، التحذير) | #A03A2A | |
| الفولاذ (السمة الفضية) | #AEB6C2 |
| التصميم | التنفيذ (وفق DESIGN.md) |
|---|---|
| فتح الغطاء وإغلاقه | rotation3DEffect(axis:(0,1,0), anchor:.leading) + spring 1.3s |
| حركة العقارب | تشغيل متواصل عبر TimelineView(.animation) |
| سحب العقارب | ClockAngleMath (دالة خالصة من atan2، خاضعة لاختبارات الوحدة) |
| الغفوة | secondaryButtonBehavior: .countdown + تنبيه لاحق بعد 9 دقائق |
| عرض الوقت المتبقي | Live Activity عبر AlarmAttributes<PocketWatchMetadata> |
| انتشار السمة | اتساق حتى الودجت عبر tintColor وmetadata.themeName |