feat(ui): Arc bileşenleri, landing bölümleri ve bildirim yığını

Sonner/vaul yerine kendi bildirim yığını ve alt sayfa; çip grubu, kart
destesi, kaydırma eylemi, yazı dönüşümü, bölme tutamacı; landing'e program
duvarı, süzülen haplar ve veri akışı; yaylar tek dosyada (lib/hareket.ts).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
bilalgursen
2026-10-07 17:12:53 +03:00
parent bc920f6111
commit 3c995402c6
38 changed files with 5474 additions and 697 deletions

View File

@@ -449,30 +449,38 @@
}
}
/* Bildirim (toast, sonner) — DESIGN.md §4.16. Başlık ve açıklama slate
tonlarında okunur; aksiyon düğmesi üst çubuktaki koyu hap dilinde.
".toaster" öneki şart: sonner kendi stilini çalışma anında enjekte eder,
aynı özgüllükteki kural onun altında kalır. */
.toaster [data-sonner-toast][data-styled="true"] {
border-radius: 1rem;
border-color: var(--color-slate-200);
/* Veri akışı (veri-akisi.tsx, DESIGN.md §4.28): kare, çizgi boyunca karodan
merkeze akar. Uç noktalar satır içi --x1/--y1/--x2/--y2 ile gelir (SVG
içinde px = viewBox birimi). Yalnız ekrandayken oynar. */
@keyframes kt-akis {
0% {
translate: var(--x1) var(--y1);
opacity: 0;
}
12%,
82% {
opacity: 1;
}
100% {
translate: var(--x2) var(--y2);
opacity: 0;
}
}
.toaster [data-sonner-toast][data-styled="true"] [data-title] {
font-weight: 600;
color: var(--color-slate-900);
.kt-akis-kare {
translate: var(--x1) var(--y1);
opacity: 0;
animation: kt-akis 2.4s cubic-bezier(0.45, 0, 0.55, 1) infinite;
animation-play-state: paused;
}
.toaster [data-sonner-toast][data-styled="true"] [data-description] {
color: var(--color-slate-600);
[data-oynuyor] .kt-akis-kare {
animation-play-state: running;
}
.toaster [data-sonner-toast][data-styled="true"] [data-button] {
height: 2.25rem;
padding-inline: 0.875rem;
border-radius: 9999px;
font-size: 0.875rem;
font-weight: 600;
color: var(--color-slate-50);
background: var(--color-slate-900);
}
.toaster [data-sonner-toast][data-styled="true"] [data-button]:hover {
background: var(--color-slate-700);
@media (prefers-reduced-motion: reduce) {
.kt-akis-kare {
animation: none;
}
}