GH GambleHub

İkonalar və piktogramlar sistemi

1) Məhsulda ikonaların rolu

Nişanlar məna və vəziyyətin kompakt daşıyıcısıdır. Onlar skaneri sürətləndirir, yerdən qənaət etməyə kömək edir və nümunələrin tanınmasını artırır. Məhsul interfeyslərində ikona mətni və rəngi tamamlayır, onları əvəz etmir.

Prinsiplər:

1. Məna> stil: hər ikonanın dəqiq bir tətbiq ssenarisi olmalıdır.

2. Tutarlılıq: vahid şəbəkə, ştrix, bucaqlar, doldurma ritmi.

3. Əlçatanlıq: Simge tək siqnal deyil; həmişə/tooltip/aria imzası var.

4. Performans: bir SVG paypline, sprite və token rəng/ölçüsü.

2) Grid və açar xətləri

Əsas artbordlar: 16 × 16, 20 × 20, 24 × 24 (əsas), 32 × 32.
Əsas xətt (keyline): optik balans üçün 1-2 px girişi ilə yazılan dairə/kvadrat.
Piksel addımı: bütün koordinatlarda çəkin; stroke kraten 0. 5 px (adətən 1. 5 px 24 × 24).

Optik kompensasiya:
  • «Qalın» diaqonalları daha incə görünür - 0 əlavə edin. 25 px problemli yerlərdə stroke.
  • Kəskin bucaqların zirvələri «gurultulu» olmamaq üçün 1 px-də bir az keylin içərisinə tökülür.
  • Dairələr və nöqtələr tez-tez bərabər vizual kütlə üçün diametrə + 1 px tələb edir.

Klik zonaları: interaktiv zona ≥ 40 × 40 px (mobile), ≥ 32 × 32 px (masaüstü); nişan mərkəzləşdirilmişdir.

3) Dəsti üslubu

Xətti (outline) default:
  • stroke: 1. 5 px (24×24), 1. 25 px (20×20), 1 px (16×16).
  • linecap/linejoin: dostluq üçün 'round' və ya texniki üslub üçün 'miter'.
  • Həndəsədə radius bucaqları: 2-3 px (24 × 24).

Doldurma (filled) - sıx sahələr və status nişanları üçün.
Duotone - illüstrativ boş hallar üçün icazə verilir, lakin kritik UI siqnalları üçün deyil.

Çəki iyerarxiyası:
  • Outline - əsas dövlət.
  • Filled - aktiv/seçmə.
  • Two-tone - dekorativ/yardım.

4) Rəng və kontrast (WCAG)

Əsas rejim 'currentColor' vasitəsilə monoxromdur: ikon mətn/kontekstin rəngini miras alır.

Kritik statuslar (səhv/uğur/xəbərdarlıq) - semantik tokenlər:
  • `icon. error '≥ fon 3:1, imza mətni ilə (yalnız rəng).
  • `icon. on-surface ', fon ≥ 3:1; kiçik ölçülər üçün hədəf 4. 5:1.
  • Rəng lövhələrində 'on-' rənglərdən istifadə edin (rəng sistemindən kontrastın avtomatik seçimi).

5) Vəziyyət və qarşılıqlı əlaqə

Default/Hover/Active/Disabled/Focus: fərq yalnız rəng deyil - qeyri-şəffaflıq/doldurma/qalınlıq/fon-həb dəyişdirin, focus ring əlavə edin.
Badges (sayğaclar): rəqəm kontrastı ≥ 4. 5:1 qıvrım; rəqəm ölçüsü ≥ 10-11 px.
Toggle simvolları (favorit, like): yalnız rəng deyil, doldurma və/və ya daxili nöqtəni dəyişdirin.

6) Simvol + mətn

Nişanlar əsas hərəkətlərdə etiketləri əvəz etmir. Minimum cüt: ikon + qısa mətn (və ya tooltip 'aria-label'). Siyahılar və cədvəllərdə simvol mətnin və baza xəttinin başlığı ilə bərabərləşdirilir.

7) Mövcudluq (A11y)

Dekorativ nişanlar üçün: 'role = "img" aria-hidden = "true' və ya əlçatanlıq axınından çıxarın.
Semantik üçün:' <svg role =» img» aria-labelledby =» id»>' +' <title id = «id «> </title>' və ya 'aria-label 'təsviri.
İkon yeganə status daşıyıcısı olmamalıdır: mətn/ipucu/ikonoqrafik nümunə (forma, ştrix) əlavə edin.
Mətn ölçüsü və imza kontrastı WCAG-a uyğundur (adi ≥ 4. 5:1).

8) SVG-paypline və performans

Niyə SVG: vektor dəqiqliyi, CSS vasitəsilə stilizasiya, optimallaşdırma ilə kiçik çəki.

Tövsiyələr:
  • Əsas faylları Figma-da saxlayın, SVG-yə seçimlərlə ixrac edin: lazımsız 'group' olmadan, defaule 'fill-rule' olmadan, 'viewBox' atributu ilə və sabit 'width/height' olmadan (CSS-də yenidən təyin).
  • SVGO (layihə profili) vasitəsilə qaçış: meta məlumatların silinməsi, koordinatların azaldılması, yolların birləşdirilməsi.
  • İkon şriftlərindən imtina (icon fonts) - əlçatanlıq və render problemləri.
Yerləşdirmə üsulları:

1. SVG-sprite:

html
<svg style="display:none">
<symbol id="icon-upload" viewBox="0 0 24 24">…</symbol>
</svg>
…
<svg class="i"><use href="#icon-upload"></use></svg>

bəzi paylaynlarda «stroke-width» asanlıqla dəyişdirilə bilməyən ucuz təkrar −.
2. Inline-SVG (React komponenti): stillərin və propların çevikliyi, tree-shaking.
3. External '<img>' - yalnız dekorativ/illüstrativ üçün.

CSS-nəzarət:
css
.i { width: 1em; height: 1em; color: var(--icon-color, currentColor); }
.i--muted { opacity:.64; }
.i--danger { color: var(--role-danger); }

9) Komponent API (React nümunəsi)

tsx type IconProps = {
name: 'upload'      'download'      'wallet'      'trophy'      'shield'      string;
size?: number      '1em'      'sm'      'md'      'lg';
stroke?: number;       // 1      1. 25      1. 5 title?: string;        // для a11y decorative?: boolean;     // если true -> aria-hidden className?: string;
};
Davranış:
  • Default olaraq 'size = "1em' və 'stroke = 1. 5`.
  • Əgər 'decorative' - 'aria-hidden =' true 'əlavə edin.
Contact

Bizimlə əlaqə

Hər hansı sualınız və ya dəstək ehtiyacınız varsa — bizimlə əlaqə saxlayın.Həmişə köməyə hazırıq!

Telegram
@Gamble_GC
İnteqrasiyaya başla

Email — məcburidir. Telegram və ya WhatsApp — istəyə bağlıdır.

Adınız istəyə bağlı
Email istəyə bağlı
Mövzu istəyə bağlı
Mesaj istəyə bağlı
Telegram istəyə bağlı
@
Əgər Telegram daxil etsəniz — Email ilə yanaşı orada da cavab verəcəyik.
WhatsApp istəyə bağlı
Format: ölkə kodu + nömrə (məsələn, +994XXXXXXXXX).

Düyməyə basmaqla məlumatların işlənməsinə razılıq vermiş olursunuz.