Refactor UI components for consistency and clarity across the application
All checks were successful
Deploy / deploy (push) Successful in 18m31s

- Updated AGENTS.md with new guidelines for UI consistency, including badge and modal styles.
- Refactored layout.tsx to improve the placement of the progressive blur effect.
- Enhanced NotFound component text for better user guidance.
- Replaced HeroFocusButton with HeroBaslik and KapanisCta in the Home component for improved clarity.
- Added SiteFooter to multiple pages for consistent footer display.
- Removed ListemSekmeleri component and adjusted ListemPage to streamline functionality.
- Updated various components to ensure consistent styling and user experience.
This commit is contained in:
bilalgursen
2026-08-02 04:28:27 +03:00
parent 6bd210075f
commit b4effc8545
48 changed files with 2173 additions and 1529 deletions

View File

@@ -1,61 +1,40 @@
"use client";
import { TextLoop } from "@/components/core/text-loop";
import { TypingAnimation } from "@/components/ui/typing-animation";
// Sonuç sayfasından gelen funnel'da dönen sempatik mesajlar.
// Kısa tutulmalı — başlıkta tek satır, taşma yok.
// Hepsi aynı şablon: "Giriş yap, çünkü …"
const FUNNEL_MESAJLARI = [
"1 adım kaldı tercihine",
"Listen seni bekliyor 👀",
"24 tercih, hepsi sana göre",
"5 kredin hazır, ya sen?",
", çünkü listen seni bekliyor",
", çünkü tercihine 1 adım kaldı",
", çünkü seçimlerin hazır",
", çünkü 5 kredin yanında",
", çünkü kaçırmak istemezsin",
", çünkü listen hemen üretilsin",
];
/**
* Giriş sayfası başlığı. Kullanıcı sihirbazdan (callback /sonuc'a dönüyorsa)
* geldiyse TextLoop'la funnel mesajları döner; diğer girişlerde sabit başlık.
* geldiyse sabit "Giriş yap" + typewriter hook'ları; diğer girişlerde
* yalnız sabit başlık.
*/
export function GirisBaslik({ funnel }: { funnel: boolean }) {
if (!funnel) {
return <h1 className="font-heading text-2xl font-bold">Giriş yap</h1>;
return <h1 className="font-heading text-xl font-bold">Giriş yap</h1>;
}
return (
<h1 className="font-heading text-2xl font-bold">
<TextLoop
className="overflow-y-clip"
interval={2.5}
transition={{
type: "spring",
stiffness: 900,
damping: 80,
mass: 10,
}}
variants={{
initial: {
y: 20,
rotateX: 90,
opacity: 0,
filter: "blur(4px)",
},
animate: {
y: 0,
rotateX: 0,
opacity: 1,
filter: "blur(0px)",
},
exit: {
y: -20,
rotateX: -90,
opacity: 0,
filter: "blur(4px)",
},
}}
>
{FUNNEL_MESAJLARI.map((mesaj) => (
<span key={mesaj}>{mesaj}</span>
))}
</TextLoop>
<h1 className="flex flex-wrap items-baseline font-heading text-xl font-bold leading-tight">
<span className="shrink-0">Giriş yap</span>
<TypingAnimation
as="span"
words={FUNNEL_MESAJLARI}
loop
startOnView={false}
typeSpeed={42}
deleteSpeed={22}
pauseDelay={2400}
className="min-h-[1.25em] font-heading text-xl font-bold leading-tight tracking-[-0.02em] text-primary"
/>
</h1>
);
}

View File

@@ -5,8 +5,8 @@ import { Skeleton } from "@/components/ui/skeleton";
// içerik gelince zıplama olmaz.
export default function GirisLoading() {
return (
<div className="flex min-h-screen flex-col bg-slate-50">
<main className="mx-auto flex w-full max-w-md flex-1 flex-col items-stretch justify-center px-4 py-16">
<div className="-mb-28 flex min-h-dvh flex-col bg-slate-50">
<main className="mx-auto flex w-full max-w-md flex-1 flex-col items-stretch justify-center px-6 py-8">
<div className="rounded-2xl border border-slate-200 bg-white p-8 shadow-sm">
{/* Başlık + alt metin */}
<Skeleton className="h-8 w-40" />

View File

@@ -27,8 +27,10 @@ export default async function GirisPage({
const funnel = callbackURL.startsWith("/sonuc");
return (
<div className="flex min-h-screen flex-col bg-slate-50 text-slate-900">
<main className="mx-auto flex w-full max-w-md flex-1 flex-col items-stretch justify-center px-5 py-16 sm:px-4">
// -mb-28: layout'taki ScrollFlow sarmalayıcısının pb-28'ini nötrler —
// kart tam dvh içinde ortalanır, sayfa scroll etmez (sığmazsa scroll açılır).
<div className="-mb-28 flex min-h-dvh flex-col bg-slate-50 text-slate-900">
<main className="mx-auto flex w-full max-w-md flex-1 flex-col items-stretch justify-center px-6 py-8">
<div className="relative">
<div className="relative rounded-2xl border border-slate-200 bg-white p-8 shadow-sm">
<GirisBaslik funnel={funnel} />