Files
kolaytercih/src/lib/adim-gecisi.ts
bilalgursen aec8a2ad76 feat(v2): 9–10 Ekim çalışma ağacı — deneyim dili 1. dalga, PWA manifest, revizyon niyet modeli, listem/tadımlık bileşen denetimi
9–10 Ekim oturumlarının commit'lenmemiş işi tek parça alındı
(raporlar: docs/ekip-raporlari/2026-10-09, 2026-10-10):
- Landing deneyim dili 1. dalga: sayfa geçişi (ViewTransition), piksel morf/şerit,
  sorun sahneleri, adım akışı, sayan sayı, mobil menü, adım göstergesi, logoya tepki;
  DESIGN.md §11 ve AGENTS.md kuralları, tasarım denetimine yeni kurallar
- Tema: tema ikonu, D kısayolu, tema geçişi
- PWA: manifest.ts ve ikonlar
- Danışman: revizyon niyet modeli (OPENROUTER_NIYET_MODEL), sohbet geçmişi, soru API'si
- /listem ve /sonuc tadımlığı bileşen denetimi düzeltmeleri
- eslint: .venv-tts/ yok sayılır

tsc, eslint ve tasarım denetimi sıfır hata.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-11 00:34:29 +03:00

67 lines
2.1 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Adım adım ilerleyen panellerin ortak geçişi (DESIGN.md §6): sihirbazın
// alan → il → öncelik adımları (sihirbaz-adimlar.tsx, TransitionPanel) ile
// danışmanın soru formundaki sorular (sohbet-anketi.tsx) aynı yoldan gelir
// gider — yeni adım ileri giderken sağdan, geri dönerken soldan kayar; boy
// ölçülen yüksekliğe yayla uzar. Sabitler yalnız burada; iki yerde de bu iki
// fonksiyon çağrılır, kopyası yazılmaz. Yay sekmesiz (stiffness 300 /
// damping 30), opaklık 0,2 s. "Hareketi azalt"ta kayma ve boy yayı yok,
// yalnız 0,12 s'lik çapraz solma.
import type { Transition, Variants } from "motion/react";
import { YAY } from "@/lib/hareket";
/**
* enter / center / exit varyantları; `custom` geçiş yönüdür (1 ileri, -1
* geri). Giren panel akışta (`relative`) durur, çıkan panel mutlak konuma
* alınır ki ikisi aynı anda üst üste kayabilsin. `yukseklik` ölçülen boy
* (ilk ölçümden önce "auto").
*/
export function adimGecisiVaryantlari({
hareketiAzalt,
yukseklik,
}: {
hareketiAzalt: boolean;
yukseklik: number | "auto";
}): Variants {
return {
enter: (gecisYonu: number) => ({
x: hareketiAzalt ? 0 : gecisYonu > 0 ? "100%" : "-100%",
opacity: 0,
height: yukseklik,
position: "relative",
}),
center: {
zIndex: 1,
x: 0,
opacity: 1,
height: yukseklik,
position: "relative",
},
exit: (gecisYonu: number) => ({
zIndex: 0,
x: hareketiAzalt ? 0 : gecisYonu < 0 ? "100%" : "-100%",
opacity: 0,
position: "absolute",
top: 0,
left: 0,
width: "100%",
}),
};
}
/** Geçişin zamanlaması; azaltılmış harekette x/height açıkça sıfırlanır ki
* varsayılan yaya düşüp oynamasın. */
export function adimGecisi(hareketiAzalt: boolean): Transition {
return hareketiAzalt
? {
opacity: { duration: 0.12 },
x: { duration: 0 },
height: { duration: 0 },
}
: {
x: YAY.adim,
height: YAY.adim,
opacity: { duration: 0.2 },
};
}