Update Next.js configuration and package dependencies
All checks were successful
Deploy / deploy (push) Successful in 9m29s
All checks were successful
Deploy / deploy (push) Successful in 9m29s
- Modified redirects in next.config.ts to change the destination for "/sohbet" to "/listem". - Added new dependencies in package.json: marked, motion, react-markdown, remark-breaks, remark-gfm, shiki, and use-stick-to-bottom. - Updated pnpm-lock.yaml to reflect the new package versions and dependencies. - Removed obsolete stack files for Flutter, Nuxt, Nuxt.js, React Native, and Svelte from the UI/UX Pro Max skill data. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
68
src/app/sonuc/funnel-banner.tsx
Normal file
68
src/app/sonuc/funnel-banner.tsx
Normal file
@@ -0,0 +1,68 @@
|
||||
"use client";
|
||||
|
||||
import Link from "next/link";
|
||||
import { ArrowRight, Sparkles } from "lucide-react";
|
||||
import { Button } from "@/components/ui/button";
|
||||
import { TypingAnimation } from "@/components/ui/typing-animation";
|
||||
|
||||
/** Banner CTA'sının sihirbaz modalını açmak için yayınladığı olay. */
|
||||
export const SIHIRBAZ_AC_EVENT = "kolaytercih:sihirbaz-ac";
|
||||
|
||||
const CUMLELER = [
|
||||
"Seçmekte zorlanıyor musunuz?",
|
||||
"Hangi bölüm size uygun, emin değil misiniz?",
|
||||
"Yapay zekâ 24 tercihlik listenizi kursun.",
|
||||
"Her satırda gerekçe ve yerleşme riski analizi.",
|
||||
];
|
||||
|
||||
/**
|
||||
* Puan türü badge'lerinin hemen altında yaşayan satın alım funnel banner'ı.
|
||||
* Sürekli değişen (yazılıp silinen) cümlelerle adayı sihirbaza; rapor zaten
|
||||
* varsa kilitli listenin durduğu /listem paywall'ına iter.
|
||||
* Tasarım: flat indigo — gradient/gölge yok, CTA funnel turuncusu.
|
||||
*/
|
||||
export function FunnelBanner({ hedefListem }: { hedefListem: boolean }) {
|
||||
const ctaSinif =
|
||||
"h-10 shrink-0 cursor-pointer bg-orange-500 px-5 font-semibold text-white transition-colors duration-200 hover:bg-orange-600 focus-visible:ring-white/70";
|
||||
|
||||
return (
|
||||
<section
|
||||
aria-label="Tercih listeni kur"
|
||||
className="mt-6 flex flex-col gap-4 rounded-2xl bg-indigo-600 p-5 sm:flex-row sm:items-center sm:gap-6"
|
||||
>
|
||||
<div className="flex min-w-0 flex-1 items-center gap-4">
|
||||
<div
|
||||
className="flex size-10 shrink-0 items-center justify-center rounded-xl bg-indigo-500"
|
||||
aria-hidden
|
||||
>
|
||||
<Sparkles className="size-5 text-white" />
|
||||
</div>
|
||||
<TypingAnimation
|
||||
as="p"
|
||||
words={CUMLELER}
|
||||
loop
|
||||
typeSpeed={45}
|
||||
deleteSpeed={20}
|
||||
pauseDelay={2400}
|
||||
className="min-h-14 min-w-0 flex-1 font-heading text-lg font-bold leading-snug text-white sm:min-h-8 sm:text-2xl"
|
||||
/>
|
||||
</div>
|
||||
{hedefListem ? (
|
||||
<Button asChild className={ctaSinif}>
|
||||
<Link href="/listem">
|
||||
Listeni aç
|
||||
<ArrowRight className="size-4" aria-hidden />
|
||||
</Link>
|
||||
</Button>
|
||||
) : (
|
||||
<Button
|
||||
onClick={() => window.dispatchEvent(new Event(SIHIRBAZ_AC_EVENT))}
|
||||
className={ctaSinif}
|
||||
>
|
||||
Listemi oluştur
|
||||
<ArrowRight className="size-4" aria-hidden />
|
||||
</Button>
|
||||
)}
|
||||
</section>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user