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,12 +1,14 @@
import Link from "next/link";
import type { Metadata } from "next";
import { eq } from "drizzle-orm";
import { CheckCircle2, Sparkles, XCircle } from "lucide-react";
import { ArrowRight, CheckCircle2, XCircle } from "lucide-react";
import { verifySession } from "@/lib/session";
import { appDb, schema } from "@/lib/appdb";
import { odemeyiSonuclandir } from "@/lib/odeme";
import { Button } from "@/components/ui/button";
import { PagePixelDivider } from "@/components/pixel-decor";
import { SiteFooter } from "@/components/site-footer";
import { RaporYokCta } from "./rapor-yok-cta";
export const metadata: Metadata = {
title: "Ödeme Sonucu",
@@ -73,22 +75,24 @@ export default async function OdemeSonucPage({
</p>
<PagePixelDivider seed={79} className="mx-auto mt-5" />
<div className="mt-6 flex flex-col gap-2">
<Button
asChild
className="h-11 cursor-pointer bg-orange-500 text-white transition-colors duration-200 hover:bg-orange-600"
>
<Link href={listeHref ?? "/"}>
<Sparkles className="size-4" aria-hidden />
{listeHref
? "Listeni aç — kilidi kaldırdık"
: "24'lük listeni oluştur"}
</Link>
</Button>
<p className="text-center text-xs text-slate-500">
{listeHref
? "24 tercihin tamamı, gerekçeler, riskler ve PDF artık açık."
: "Sıralamanı girip sonuç sayfasındaki sihirbazla listeni kur."}
</p>
{listeHref ? (
<>
<Button
asChild
className="h-11 cursor-pointer bg-orange-500 text-white transition-colors duration-200 hover:bg-orange-600"
>
<Link href={listeHref}>
Listeni aç — kilidi kaldırdık
<ArrowRight className="size-4" aria-hidden />
</Link>
</Button>
<p className="text-center text-xs text-slate-500">
24 tercihin tamamı, gerekçeler, riskler ve PDF artık açık.
</p>
</>
) : (
<RaporYokCta />
)}
</div>
</div>
) : (
@@ -118,6 +122,7 @@ export default async function OdemeSonucPage({
</div>
)}
</main>
<SiteFooter />
</div>
);
}

View File

@@ -0,0 +1,36 @@
"use client";
import Link from "next/link";
import { ArrowRight } from "lucide-react";
import { Button } from "@/components/ui/button";
import { useTercihProfili } from "@/components/manuel-liste/profil-kapisi-store";
import { sonucHref } from "@/lib/sihirbaz";
/**
* Ödeme başarılı ama henüz AI listesi yokken gösterilen CTA: kayıtlı tercih
* profili olan adayı sihirbazı açık hâlde sonuç sayfasına götürür ve
* "sıralamanı gir" metni gösterilmez; profil yoksa ana sayfadaki sıralama
* formuna yönlendirir.
*/
export function RaporYokCta() {
const profil = useTercihProfili();
return (
<>
<Button
asChild
className="h-11 cursor-pointer bg-orange-500 text-white transition-colors duration-200 hover:bg-orange-600"
>
<Link href={profil ? sonucHref(profil, { sihirbaz: "1" }) : "/"}>
24&apos;lük listeni oluştur
<ArrowRight className="size-4" aria-hidden />
</Link>
</Button>
<p className="text-center text-xs text-slate-500">
{profil
? "Sıralaman kayıtlı — sonuç sayfasındaki sihirbazla listeni kur."
: "Sıralamanı girip sonuç sayfasındaki sihirbazla listeni kur."}
</p>
</>
);
}