GH GambleHub

Kartochka interfeysi va vizual bloklar

1) Nega kartochkalar

Kartochkalar mohiyatni (o’yin, o’yin, aksiya, maqola) asosiy atributlar va harakatlar bilan o’rab oladi. Yaxshi kartochka:
  • tezda skanerlanadi,
  • bitta asosiy CTA beradi,
  • turli konteyner/kolonkalarga moslashadi,
  • xulq-atvorini oldindan bilish mumkin (hover, press, fokus, kontekstli menyu).

2) Kartochka anatomiyasi

Eng kam tarkib:

1. Media-zona (muqovasi/logotipi/prevyu, 16: 9/4: 3/1: 1).

2. Sarlavha (1-2 satrlar kesilgan holda).

3. Meta maʼlumotlar (sarlavha, tag/toifa, provayder, vaqt).

4. Maqom belgilari (yangilik, live, aksiya, reyting).

5. STA/tezkor harakatlar (tugma yoki ikonkalar).

6. Ikkilamchi matn (qisqa, 2-3 satr max).

7. Nazorat (tanlangan,... ).

Ierarxiya: media → sarlavha → CTA → meta → ikkilamchi. Buzgʻunchi harakatlar yashirin yoki menyuda koʻrsatilgan.

3) To’rlar va joylashtirishlar

Grid (belgilangan ustun): 2-6 ustunlar; auto-fit/auto-fill orqali moslashtiriladi.
Responsive tiles:’minmax (240px, 1fr)’- kartochkalar chegaralargacha o’sadi.
Masonry/oʻzgaruvchan balandlik: ehtiyot boʻling; fokus va o’qish tartibini ta’minlash.
List (ketma-ket): gorizontal tejamkorlik va saralanganlik muhim boʻlganda.

css
.cards {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(240px,1fr));
gap: 16px;
}
.card {
border-radius: 12px;
background: var(--bg-elevated);
box-shadow: var(--elev-2);
display: grid;
grid-template-rows: auto 1fr auto;
overflow: hidden;
}
.card__media { aspect-ratio: 16/9; object-fit: cover; }

4) Zichligi va ritmi

Maydonlar/cheklovlar: 12-16 px ichida; 8-12 px bloklar o’rtasida.
Satr balandligi: 1. 3–1. 5; shriftlar: sarlavha 16-18 px, meta 12-14 px.
Matnning klippingi:’line-clamp: 2-3’; tooltip/tafsilotlarda to’liq matn bo’lishi shart.

5) Holatlar va interaktivlik

Hover/Focus/Active: soya/yoritgich, lekin maketning «sakrashi» yo’q;’: focus-visible’doimo ko’rinadi.
Selectable: chekbox/ramka; havola kartochkasi bilan adashtirmaslik.
Pressed: 98% gacha pasayish + pastga tushish (120 ms ≤).
Busy/Loading: «boʻsh» emas, balki skelet.

css
.card:focus-visible { outline: 2px solid var(--focus-ring); outline-offset: 2px; }
.card:hover { box-shadow: var(--elev-3); transform: translateY(-1px); transition: box-shadow. 16s, transform. 16s; }

6) Tasvirlar va media

Aspect-ratio qattiq oʻrnatilgan; o’yinlar ro’yxatida - 16:9 yoki 4:3.
Dangasa yuklash:’loading =’lazy’’+’decoding =’async’.
Afishaning ustun rangli pleysholder/skeleton.
Yuklab olishda xato roʻy berdi.

html
<img class = "card __ media" src ="..." alt = "Game name" loading =" lazy" onerror =" this. src='/fallback. png'">

7) Nishonlar va belgilar

Qisqa (1-2 so’z): New, Live, -20%, Top 10.
Faqat rangga tayanib boʻlmaydi - ikona/matn qoʻshing.
Joylashuvi: medianing chap yuqori qismi; bir nechta - 4-6 px bo’shliqli stekda.

css
.badge { display:inline-flex; gap:6px; align-items:center; padding:4px 8px; border-radius:8px; font-size:.75rem; }
.badge--live { background: var(--bg-danger); color: var(--on-danger); }

8) CTA va tezkor harakatlar

Kartochkaga bitta primary (masalan, «O’ynash», «Tikish»).
Yordamchi piktogrammalar (tanlangan, baham koʻrish,...) - hover/fokus boʻyicha.
Destruktiv - tasdiqlash yoki undo-panel orqali.

html
<div class="card__actions">
<button class="btn btn--primary">Играть</button>
<button class =" icon" aria-label = "Add to Favorites" title =" B Favorites "> </button>
<button class="icon" aria-haspopup="menu" aria-expanded="false">⋯</button>
</div>

9) Foydalanish imkoniyati (A11y)

Butun havola -’<a>’bilan tushunarli’aria-label’, aks holda: sarlavha havola sifatida, qolganlari - statik.
Tab tartibi vizual; fokus halqa ko’rinadi.
’alt’ rasmlari; dekorativ -’aria-hidden =» true»’.
Holatlar uchun’role = «status» ’/’ aria-live = «polite»’dan foydalaning.
Matn va nishonlar kontrasti ≥ AA; ma’nosi faqat rang emas.

10) Spektakl

Media va roʻyxatlarni dangasa yuklash; sentry-kuzatuvchi bilan paginatsiya yoki infinit-skroll.
Tasma/cheksiz chiqarishlar uchun virtualizatsiya (± 10k elementlar).
Reflow minimallashtiring: faqat’transform/opacity’ni jonlantiring.
Kartochkalarni skeletonlar bilan renderlang va maʼlumotlar yuklangandan keyin kontent bilan almashtiring.

11) Skeletonlar, xatolar, bo’sh

Skeleton kartochka tuzilishini takrorlaydi (media/matn/tugma), agressiv shimmersiz; ’prefers-reduced-motion’ ni hisobga oling.
Error-state: piktogramma + qisqa matn («Oʻyinni yuklab boʻlmadi») + Retry tugmasi.
Empty-state: ikona/rasm, tushuntirish, «Keyingi nima» (filter/qidiruv/obuna).

12) Kontentni boshqarish

Kesish:’line-clamp’+ aniq maslahatlar (tooltip).
Uzun sonlar/summalar: jadval raqamlari:’font-variant-numeric: tabular-nums;’.
Lokalizatsiya: uzun yorliqlar uchun 20-30% kenglikdagi zaxira.
RTL qoʻllab-quvvatlash: bayroqlar/ikonkalarni flip va tekislash.

13) Qorong’u mavzu va kontrast

Soyalar kuchsizroq, chegaralardan (’1px’) shaffoflik bilan foydalaning.
Kichik shriftlar uchun AAAni qoʻllab-quvvatlang; Chayqalishdan saqlaning.
Matnni o’qish uchun media yupqa parda (8-12%) bilan qorayadi.

css
.theme-dark. card { background: var(--bg-elevated-dark); box-shadow: var(--elev-1-dark); }
.theme-dark. card__media::after { content:""; position:absolute; inset:0; background: rgba(0,0,0,.12); }

14) Saralash, filtrlar, paginatsiya

Yuqori/yon filtrlar paneli; natija - kartochkalar to’plami.
Paginatsiya ko’rinadi; cheksiz skroll - faqat «Boshlanish» va pozitsiyani saqlab qolish bilan.
Filtrlar skrollni «tashlamaydi»; tez (100 ms ≤) yoki indikator bilan qo’llaniladi.

15) iGaming xususiyatlari

15. 1 O’yin kartochkasi (slot/table)

Media: poster 16:9, provayder logotipi.
Meta ma’lumotlar: provayder, RTP, o’zgaruvchanlik, toifalar (- faqat axborot bilan, yutuq va’dalarisiz).
Nishonchalar: New, Popular, Tournament, Jackpot.
CTA: «O’ynash» + «Demo». «18 +» konteksti va mas’uliyatli o’yin - ko’rinadi.

15. 2 O’yin/koeffitsiyent kartochkasi

Live nishonchasi; taymer/davr.
Asosiy koeffitsiyentlar (2-3) bilan bir zumda hover/press va xavfsiz undo (agar ruxsat berilsa).
Momaqaldiroqsiz yangilanishlar; kurs o’zgarganda - ehtiyotkorlik bilan yoritish.

15. 3 Turnir/event kartochkasi

Sanalar, mukofot jamg’armasi, qoidalar (havola).
Maqomi («Ro’yxatga olish ochiq/yopiq», «Kelmoqda»).
«Qo’shilish», «Qoidalar» CTA; ishtirok etish taraqqiyoti (ball/joy).

16) Antipatternlar

Butun kartochka + ichida ikkilamchi havolalar (fokus/klik tuzoqlari).
Yaqin atrofdagi ikkita primary-CTA («O’ynash» va «Bonus sotib olish») - e’tibor raqobati.
Pleysholderlar/skeletonlar yo’qligi → «sakrash» setkasi (CLS).
Cheksiz shimmer effektlari; soya/blur (qimmat) animatsiyasi.
Kichik kulrang rangdagi meta maʼlumotlar (kontrast yoʻq).
Ma’noni faqat rang bilan ifodalovchi nishonlar.

17) Dizayn-tizim tokenlari (misol)

json
{
"card": {
"radius": 12,
"gap": 12,
"mediaRatio": "16/9",
"px": "12 12 12 12",
"shadow": { "rest": "var(--elev-2)", "hover": "var(--elev-3)" }
},
"badge": { "radius": 8, "px": "4 8", "icon": 14 },
"grid": { "gap": 16, "min": 240, "max": 1 },
"motion": { "hoverMs": 160, "pressMs": 100, "fadeMs": 160 },
"a11y": { "contrastAA": true, "focusRingWidth": 2, "focusRingOffset": 2 }
}

18) Snippetlar

React: universal kartochka

tsx type CardProps = {
title: string;
subtitle?: string;
mediaUrl?: string;
badges?: string[];
onPrimary?: () => void;
primaryLabel?: string;
onFav?: () => void;
children?: React. ReactNode;
};
export default function Card({
title, subtitle, mediaUrl, badges=[], onPrimary, primaryLabel='Открыть', onFav, children
}: CardProps){
return (
<article className="card group focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2">
<div className="relative">
{mediaUrl? <img className="w-full aspect-[16/9] object-cover" src={mediaUrl} alt={title}/>: <div className="aspect-[16/9] bg-neutral-200"/>}
<div className="absolute top-2 left-2 flex gap-1">
{badges. map(b => <span key={b} className="badge">{b}</span>)}
</div>
</div>
<div className="p-3 grid gap-2">
<h3 className="text-sm font-semibold line-clamp-2" title={title}>{title}</h3>
{subtitle && <p className="text-xs text-neutral-500 line-clamp-2">{subtitle}</p>}
{children}
<div className="flex items-center gap-8">
{onPrimary && <button className="btn btn--primary" onClick={onPrimary}>{primaryLabel}</button>}
{onFav && <button className="icon opacity-0 group-hover:opacity-100" aria-label="В избранное" onClick={onFav}></button>}
</div>
</div>
</article>
);
}

Infinit-skroll sentry

js const sentry = document. querySelector('#sentry');
const io = new IntersectionObserver(entries=>{
if(entries. some(e=>e. isIntersecting)) loadMore();
}, { rootMargin: '200px' });
io. observe(sentry);

19) Metrika va eksperimentlar

CTR primary-CTA и Time-to-Click.
Scroll-depth → click: «burish ustida »/« burish ostida» tugmalarini bosing.
Kartochka → tafsilotlarni ko’rish → konversiya.
Bayroqlarning ko’rinishi va ularning CTRga ta’siri.
Skeleton visible time и CLS.
A/B: kartochkalar o’lchami, meta-ma’lumotlar soni, tezkor harakatlarning ko’rinishi, to’r turi (list/grid).

20) QA-chek-varaq

Foydalanish imkoniyati

  • Fokus halqalari ko’rinadi; Tab tartibi mantiqiy.
  • Alt-matnlar va’aria-label’to’g "ri; matnli maqom-nishonlar.
  • Matn/fon kontrasti ≥ AA.

Xulq-atvori

  • Bitta primary-CTA; tezkor harakatlar asosiy stsenariyni qoplamaydi.
  • Hover/press/selected farqlanadi; kontekstli menyu ishlamoqda.
  • Boʻsh/xato/skeletonlar toʻgʻri; Retry bor.

Spektakl

  • Mediani dangasa yuklash; sxemada keskin sakrash yoʻq.
  • Katta roʻyxatlarni virtuallashtirish; ’transform/opacity’ animatsiyalari.

To’r

  • ’minmax (240px, 1fr)’va’gap’moslashuvchan; Masonry fokus/oʻqish tartibini buzmaydi.
  • RTL/lokalizatsiya kesish va nishonchalarni «sindirmaydi».

21) Dizayn-tizimdagi hujjatlar

Компоненты: `Card`, `GameCard`, `MatchCard`, `TournamentCard`, `StatusBadge`, `SkeletonCard`.
Tokenlar: radius/soyalar/kirishlar/qatlamlar, bayroqlarning ranglari, animatsiyalar.
Patternlar: «Bitta CTA», «Spinner o’rniga skeleton», «Infinit-skroll + pozitsiyani saqlash».
Do/Don’t-galereya: ortiqcha yuklangan kartochka vs minimal, «butun kartochka bosiladi» vs aniq elementlar.

Qisqacha xulosa

Kartochkalar aniq ierarxiya, bitta asosiy CTA, oldindan aytib bo’ladigan holatlar, barqaror to’rlar va spektakl va foydalanishga bo’lgan hurmatga ega bo’lganda ishlaydi. Token va patternlarni tuzating, skeleton va dangasa yuklamadan foydalaning, kontentni lakonik tuting va karta interfeyslari tez, o’qish mumkin va konversion bo’ladi, ayniqsa iGaming stsenariylarida.

Contact

Biz bilan bog‘laning

Har qanday savol yoki yordam bo‘yicha bizga murojaat qiling.Doimo yordam berishga tayyormiz.

Telegram
@Gamble_GC
Integratsiyani boshlash

Email — majburiy. Telegram yoki WhatsApp — ixtiyoriy.

Ismingiz ixtiyoriy
Email ixtiyoriy
Mavzu ixtiyoriy
Xabar ixtiyoriy
Telegram ixtiyoriy
@
Agar Telegram qoldirilgan bo‘lsa — javob Email bilan birga o‘sha yerga ham yuboriladi.
WhatsApp ixtiyoriy
Format: mamlakat kodi va raqam (masalan, +998XXXXXXXX).

Yuborish orqali ma'lumotlaringiz qayta ishlanishiga rozilik bildirasiz.