# Yemək Evi · Hareket (motion) kuralları Prototipteki tüm geçiş ve animasyonların değerleri aşağıdadır. Değerler native uygulamaya doğrudan taşınabilir. Token karşılıkları `css/tokens.css` içinde (`--ease-ios`, `--dur-screen` ...). ## Temel eğri | Ad | Değer | Nerede | |---|---|---| | **iOS eğrisi** | `cubic-bezier(.32, .72, 0, 1)` | Ekran geçişi, sheet, kart girişi, kaydırıcı | | Titreme eğrisi | `cubic-bezier(.36, .07, .19, .97)` | Yanlış PIN / kod | | Basit | `ease-out`, `ease-in-out`, `linear` | Karartma, nabız, dönme | ## Ekranlar arası geçiş (js/shell.js) | Tür | Ne zaman | Hareket | Süre | |---|---|---|---| | **push** | İleri giderken | Yeni ekran sağdan gelir (`translateX(100%) → 0`). Eski ekran `-28%` sola kayar, üstüne %18 siyah perde iner | 460 ms, iOS eğrisi | | **pop** | Geri dönerken | Tersi: eski ekran sağa çıkar, alttaki `-28% → 0` gelir, perde kalkar | 460 ms, iOS eğrisi | | **fade** | Sheet açılan ekranlar, Splash çıkışı, aynı ekranın durumları (ör. Ana sayfa → Ana sayfa · hazırdır) | Yeni ekran saydamlıktan belirir | 280 ms, ease-out | "Reduce motion" açıksa push/pop yerine 160 ms fade kullanılır. ## Ekran içi hareketler | Hareket | Değer | Ekranlar | |---|---|---| | Alt sheet girişi (`yePop`) | aşağıdan 16 px + %94 ölçekten, `.3s` iOS eğrisi | Sepet, sipariş, profil, QR, gizlilik, kart ekleme ... | | Sheet karartması (`yeFade`) | `.2s ease-out` (bazı ekranlarda `.3s` / `.35s`) | Sheet açılan tüm ekranlar | | Kart / menü açılışı | `yePop .32s`, ikinci öğe `.05s` gecikmeli | Ana sayfa, menü, siparişler, profil (QR seçici, filtre) | | Başarı kartı | `yePop .4s` iOS eğrisi | Sipariş alındı, ödeme başarılı, gönderildi, ödeme alınmadı | | Kilit ekranı bildirimleri | `yePop .4s`, her bildirim sırayla gecikmeli | Bildirimler (kilit ekranı) | | Dynamic Island açılması | `yePop .35s` | Dynamic Island | | **Yanlış PIN / kod titremesi** (`yeShake`) | 6 hücre satırı sağa sola sallanır: -10, 9, -7, 5, -3, 1 px · `.45s` titreme eğrisi. Hücre çerçeveleri kırmızıya döner, altta hata mesajı çıkar | Giriş PIN, Unlock, PIN yarat, PIN tekrarı, Yeni PIN, SMS kodu, Təsdiq kodu | | Toggle anahtarı | top `left .2s`, zemin `background .2s` | Ayarlar, ödeme yöntemleri, gizlilik, bağış, öğrenci statüsü | | SSS akordeon oku | `transform .2s` | SSS | | Onboarding kaydırıcısı (ana sayfa kampanyaları) | `transform .5s` iOS eğrisi, her 4.5 sn'de otomatik | Ana sayfa | | QR yenileme halkası | `stroke-dasharray 1s linear`, 60 sn'de bir kod yenilenir | QR göster | | PIN kilidi geri sayımı | saniyede bir | PIN bloklandı | | Sipariş geri sayımı | saniyede bir | Planlaşdırılmış sifariş | ## Döngüsel animasyonlar | Ad | Değer | Kullanım | |---|---|---| | `yeSh` iskelet parıltısı | `1.4s ease-in-out infinite`, zemin `150% → -50%` kayar | Yükleniyor ekranları (ana sayfa, menü, siparişler) | | `yePulse` canlı nokta | `1.4s ease-in-out infinite`, saydamlık 1 → .45 | Sipariş durumu, Live Activity, Dynamic Island | | `yeRing` halka dalgası | `1.8s ease-out infinite`, beyaz halka 0 → 14 px | Ana sayfa "hazırdır" rozeti | | `yeRingOk` başarı halkası | `1.8s ease-out infinite`, yeşil halka 0 → 18 px | Sipariş alındı, ödeme başarılı | | `yeScan` QR tarama çizgisi | `2.4s ease-in-out infinite`, %8 ↔ %88 | QR oxut | | `yeSpin2` yükleniyor çarkı | `.8s` – `.9s linear infinite` | Yeniden dene, yükleniyor | ## Zamanlayıcılar | Ne | Süre | |---|---| | "Sevimlilərə əlavə olundu" bildirimi | 2.6 sn sonra kaybolur | | "Yoxlanılır…" (yeniden dene) | 1.4 – 1.6 sn | | Destek sohbeti "yazıyor…" | yanıt gelene kadar |