"use client"; import { startTransition, useEffect, useState } from "react"; import NumberFlow, { NumberFlowGroup } from "@number-flow/react"; import { CalendarDays, Clock3 } from "lucide-react"; const TERCIH_BASLANGICI = new Date("2026-07-29T00:00:00+03:00").getTime(); const TERCIH_BITISI = new Date("2026-08-10T23:59:59+03:00").getTime(); type GeriSayim = { asama: "baslamadi" | "devam-ediyor" | "sona-erdi"; gun: number; saat: number; dakika: number; saniye: number; }; function geriSayimiHesapla(simdi: number): GeriSayim { const asama = simdi < TERCIH_BASLANGICI ? "baslamadi" : simdi <= TERCIH_BITISI ? "devam-ediyor" : "sona-erdi"; const hedef = asama === "baslamadi" ? TERCIH_BASLANGICI : TERCIH_BITISI; const kalan = Math.max(0, hedef - simdi); return { asama, gun: Math.floor(kalan / 86_400_000), saat: Math.floor((kalan % 86_400_000) / 3_600_000), dakika: Math.floor((kalan % 3_600_000) / 60_000), saniye: Math.floor((kalan % 60_000) / 1_000), }; } const BIRIMLER = [ { anahtar: "gun", etiket: "gün" }, { anahtar: "saat", etiket: "sa" }, { anahtar: "dakika", etiket: "dk" }, { anahtar: "saniye", etiket: "sn" }, ] as const; export function SiteTopBanner() { const [geriSayim, setGeriSayim] = useState(null); useEffect(() => { // Saniyelik tik acil değil — layout'ta her sayfada monte; urgent şeritten çık const guncelle = () => startTransition(() => setGeriSayim(geriSayimiHesapla(Date.now()))); guncelle(); const zamanlayici = window.setInterval(guncelle, 1_000); return () => window.clearInterval(zamanlayici); }, []); const asamaMetni = geriSayim?.asama === "baslamadi" ? "Başlamasına" : geriSayim?.asama === "sona-erdi" ? "Tercih dönemi sona erdi" : "Sona ermesine"; return (

2026 YKS tercih dönemi ·

{asamaMetni}
{geriSayim?.asama !== "sona-erdi" ? (
{BIRIMLER.map(({ anahtar, etiket }) => (
{etiket}
{geriSayim ? ( ) : ( "--" )} {etiket}
))}
) : null}
); }