fix(tasarim): piksel zemin yalnız CTA yüzeylerinde, kabın ölçüsüne göre, küçük kare yok
Bilal (24 Eyl 2026): ana sayfa CTA'sında doku hiç görünmüyordu, bazı kartlarda çok azdı; sonra "çok fazla piksel, küçük olanlar hiç olmasın" ve "/sonuc'taki kartın arkasına da piksel koymuşsun; pikseller CTA'larda olacak sadece". - Kök neden: PixelMasonry sabit 420×120 çizimi kaplayacak şekilde ölçekleniyordu; yüksek kartlarda görünen kısım boş banda düşüyordu. Artık kabın gerçek ölçüsüne göre üretiliyor (ResizeObserver), yalnız kenar çerçevesinde, orta boş; `haric` verilen öğenin (24'lük piksel tablosu) çevresi her genişlikte boş. Sunucuda boş, ölçülünce belirir. - Küçük (tek hücre) kare yok: 4×4 makro hücrede 2–4 hücrelik kareler, iri olan seyrek ve silik. Ölçüm: kapanış kartı 1280 px'te 58 kare (tabloya binen 0), 375 px'te 27 kare. - Beyaz içerik kartlarından zemin geri alındı (tadımlık, /listem üretim ve kilit kartları, boş durum, sıralama-yok, meraklısına, paket kartları, kaydet bandı, katalog üstü kompakt satır, /sonuc "listen hazır"). Kalanlar: CtaBandi, PikselCtaYuzeyi, arama penceresi kartı. PikselZemin'in açık tonu kaldırıldı. DESIGN.md §10.8 güncellendi. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
@@ -1,31 +1,36 @@
|
||||
"use client";
|
||||
|
||||
import type { RefObject } from "react";
|
||||
import { PixelMasonry } from "@/components/pixel-decor";
|
||||
import { cn } from "@/lib/utils";
|
||||
|
||||
/**
|
||||
* CTA yüzeylerinin piksel zemini (DESIGN.md §10.8) — tek kaynak. Bilal'in
|
||||
* kararı (24 Eyl 2026): "piksel arka planları her CTA benzeri kısmın
|
||||
* arkasında olmalı, masonry gibi büyüklü küçüklü." Kap `relative isolate
|
||||
* overflow-hidden` olmalı; zemin ilk çocuk olarak konur.
|
||||
* kararı (24 Eyl 2026): pikseller **yalnız CTA yüzeylerinde** (mavi bant,
|
||||
* kapanış kartı, arama penceresi kartı); beyaz içerik kartlarında değil
|
||||
* ("/sonuc'taki kartın arkasına da piksel koymuşsun; pikseller CTA'larda
|
||||
* olacak sadece"). Beyaz kareler; kap `relative isolate overflow-hidden`
|
||||
* olmalı, zemin ilk çocuk olarak konur.
|
||||
*
|
||||
* - `acik`: beyaz/açık kart — silik mavi kareler.
|
||||
* - `koyu`: mavi bant ya da koyu kart — beyaz kareler.
|
||||
* Doku kabın gerçek ölçüsüne göre üretilir; kenar çerçevesi yoğun, orta
|
||||
* seyrek. Üstünde kreatif ya da iri sayı varsa `haric` ile o öğe verilir,
|
||||
* çevresi boş kalır.
|
||||
*/
|
||||
export function PikselZemin({
|
||||
seed = 7,
|
||||
ton = "acik",
|
||||
bosBant,
|
||||
yogunluk,
|
||||
kenar,
|
||||
haric,
|
||||
className,
|
||||
}: {
|
||||
/** Aynı ekrandaki iki yüzey farklı desen alsın */
|
||||
seed?: number;
|
||||
ton?: "acik" | "koyu";
|
||||
/** Boş bırakılacak yatay bant (varsayılan orta %22–78); bkz. PixelMasonry */
|
||||
bosBant?: [number, number];
|
||||
/** Doluluk çarpanı */
|
||||
/** Doluluk çarpanı (1 varsayılan) */
|
||||
yogunluk?: number;
|
||||
/** Kenar çerçevesinin genişliği, kısa kenarın oranı (0.3 varsayılan) */
|
||||
kenar?: number;
|
||||
/** Çevresi boş bırakılacak öğe */
|
||||
haric?: RefObject<HTMLElement | null>;
|
||||
/** Dikey taşma payı vb. (varsayılan `-inset-y-6`) */
|
||||
className?: string;
|
||||
}) {
|
||||
@@ -33,12 +38,16 @@ export function PikselZemin({
|
||||
<div
|
||||
aria-hidden
|
||||
className={cn(
|
||||
"pointer-events-none absolute inset-x-0 -inset-y-6 -z-10",
|
||||
ton === "acik" ? "text-primary/70" : "text-white",
|
||||
"pointer-events-none absolute inset-x-0 -inset-y-6 -z-10 text-white",
|
||||
className,
|
||||
)}
|
||||
>
|
||||
<PixelMasonry seed={seed} bosBant={bosBant} yogunluk={yogunluk} />
|
||||
<PixelMasonry
|
||||
seed={seed}
|
||||
yogunluk={yogunluk}
|
||||
kenar={kenar}
|
||||
haric={haric}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user