# FoxUI — design system (v0.99.3)

Uslub va mavzu: `<html data-fx-personality="hard|medium|soft|round" data-fx-edge="auto|line|shadow|hybrid" data-fx-theme="graphite|amber|amethyst|emerald|hilos|ocean|pdp|rose|siyoh|sunset" data-fx-font="system|condensed|editorial|friendly|grotesk|onest|wide" data-fx-body="system|google-sans|inter|jakarta|onest|public|source" data-fx-density="compact|default|comfortable" data-fx-scheme="light|dark">`

## Akkordeon (`accordion`, beta, 0.11.0 dan)

Yiğiladigan bölimlar: native <details>; bir xil name bilan bittasi oçiq qoladi. Strelka (chevron) yopiqda −90°, oçiqda 0°. Kengaytma: data-variant=bordered|separated|fluş, data-chevron=start, .fx-accordion__icon/.fx-accordion__meta, içma-iç, data-focus=inset, bosmada hammasi oçiq.

- Qaçon: FAQ, sozlamalar guruhlari, qöşimça tafsilot.
- Qaçon emas: Bir xil darajadagi körinişlar → `tabs`
- Variantlar: data-variant=bordered|separated|flush; data-chevron=start; data-focus=inset
- Klaviatura: Enter, Space — Oçadi / yopadi
- Tokenlar: --fx-border-color-default, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-md, --fx-ease-standard, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-regular, --fx-motion-base, --fx-motion-fast, --fx-radius-badge, --fx-radius-surface, --fx-size-icon-md, --fx-size-icon-sm, --fx-space-2, --fx-space-3, --fx-space-4, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<div class="fx-accordion">
  <details class="fx-accordion__item" name="faq" open>
    <summary class="fx-accordion__summary">Obuna tugasa nima böladi?</summary>
    <div class="fx-accordion__body">Yuklab olingan versiyalar sizda abadiy qoladi; yangilaniş va MCP töxtaydi.</div>
  </details>
  <details class="fx-accordion__item" name="faq">
    <summary class="fx-accordion__summary">Neçta qurilmada işlaydi?</summary>
    <div class="fx-accordion__body">Bitta litsenziya — bitta odam, 3 ta qurilma.</div>
  </details>
</div>
<div class="fx-accordion" data-variant="separated"><details class="fx-accordion__item" name="b2"><summary class="fx-accordion__summary">Tölov<span class="fx-accordion__meta">3 ta</span></summary><div class="fx-accordion__body">Tafsilot.</div></details></div>
```

- Qilmang: Asosiy mazmunni akkordeonga yaşirmang — faqat qöşimça (FAQ, tafsilot).

## Nişon kartasi (`achievement`, beta, 0.55.0 dan)

Yutuq nişoni: belgi (emoji yoki ikon) + nom + sabab. Oçilgan — töliq rang, yaxlit çegara; yopiq (data-state="locked") — belgi kulrang, uzuq çegara, ostida progress çiziği va «3/5» hisob; yangi oçilgan (data-state="new") — brend halqasi va «Yangi» yorliği. Qoida: yopiq nişonlardan faqat eng yaqin 3 tasi körsatiladi — «uyum» emas. Röyxat — .fx-achievements töri. Manbaa'dan (③, Fox MB topşirdi, 20.10): köriniş — FoxUI, hisob va ma'lumot — loyihada.

- Qaçon: Profil sahifasidagi yutuqlar, hissa nişonlari, öquv kursidagi bosqiçlar. Geymifikatsiya: keyingi nişongaça qança qolganini körsatiş.
- Qaçon emas: Holat yorliği → `badge`; Vazifalar röyxati (bajarildi/yöq) → `checklist`
- Variantlar: data-state=locked|new (standart unlocked)
- Tokenlar: --fx-achievement-value, --fx-bg-brand-solid, --fx-bg-brand-subtle, --fx-bg-muted, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-width-default, --fx-control-h-md, --fx-font-size-2xl, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-semibold, --fx-radius-pill, --fx-radius-surface, --fx-radius-tag, --fx-size-icon-md, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-text-brand, --fx-text-on-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<ul class="fx-achievements" aria-label="Nişonlar" style="inline-size:100%">
  <li class="fx-achievement"><span class="fx-achievement__icon" aria-hidden="true">👣</span><span class="fx-achievement__body"><b class="fx-achievement__title">Birinçi qadam</b><span class="fx-achievement__desc">Birinçi hissa</span></span></li>
  <li class="fx-achievement" data-state="new"><span class="fx-achievement__icon" aria-hidden="true">👑</span><span class="fx-achievement__body"><b class="fx-achievement__title">Faxriy uçlik</b><span class="fx-achievement__desc">Faxriylar reytingida 1-örin</span></span><span class="fx-achievement__new">Yangi</span></li>
  <li class="fx-achievement" data-state="locked" title="Yangi mavzu boşlang"><span class="fx-achievement__icon" aria-hidden="true">⭐</span><span class="fx-achievement__body"><b class="fx-achievement__title">Birinçi manba</b><span class="fx-achievement__desc">Yangi mavzu boşlang · 0/1</span><span class="fx-achievement__bar" role="progressbar" aria-label="Birinçi manba" aria-valuenow="0" aria-valuemin="0" aria-valuemax="1" style="--fx-achievement-value: 0%"></span></span></li>
  <li class="fx-achievement" data-state="locked" title="5 ta izoh etalon tanlansin"><span class="fx-achievement__icon" aria-hidden="true">✍️</span><span class="fx-achievement__body"><b class="fx-achievement__title">Etalon muallifi</b><span class="fx-achievement__desc">Izohingiz etalon tanlansin · 3/5</span><span class="fx-achievement__bar" role="progressbar" aria-label="Etalon muallifi" aria-valuenow="3" aria-valuemin="0" aria-valuemax="5" style="--fx-achievement-value: 60%"></span></span></li>
</ul>
```

- Qilmang: Hamma yopiq nişonni birdan körsatmang — eng yaqin 3 tasi yetarli, qolgani «Hammasi» sahifasida.
- Qilmang: Yopiq nişonni faqat rang bilan ajratmang — uzuq çegara va «0/1» hisob ham bor.
- Qilmang: Sababni yozmasdan nişon bermang: odam nima uçun olganini bilsin.

## Ogohlantiriş (`alert`, beta, 0.10.0 dan)

Bölim yoki sahifadagi muhim xabar: töla tusli yuza, holat belgisi (şakl), sarlavha, matn, bitta havola, ixtiyoriy yopiş. Ohanglar: neytral, info, success, warning, error, brand. Kengaytma: .fx-alert__icon (ikon slot — şakl-belgi örniga ikon).

- Qaçon: Sahifa yoki bölim haqidagi muhim, doimiy xabar.
- Qaçon emas: Amal natijasi (vaqtinçalik) → `toast`; Maydon xatosi → `input`
- Variantlar: data-tone=neutral|info|success|warning|error|brand (standart neutral); data-layout=default|compact (standart default)
- Klaviatura: Tab, Enter — Havola va yopiş tugmasi
- Tokenlar: --fx-bg-brand-subtle, --fx-bg-error-subtle, --fx-bg-info-subtle, --fx-bg-muted, --fx-bg-success-subtle, --fx-bg-warning-subtle, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-fg-error, --fx-fg-info, --fx-fg-success, --fx-fg-warning, --fx-font-size-lg, --fx-font-size-sm, --fx-font-weight-semibold, --fx-radius-badge, --fx-radius-circle, --fx-radius-surface, --fx-size-icon-md, --fx-size-min-target, --fx-size-status-dot, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-text-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<div class="fx-alert" data-tone="warning" role="status">
  <p class="fx-alert__title">Obuna 3 kundan keyin tugaydi</p>
  <p class="fx-alert__text">Yangilanişlar va MCP töxtaydi; yuklab olingan versiyalar qoladi.</p>
  <a class="fx-alert__action" href="#">Uzaytiriş</a>
  <button class="fx-alert__close" type="button" aria-label="Yopiş">×</button>
</div>
<div class="fx-alert" data-tone="info" data-layout="compact"><p class="fx-alert__title">Yangi versiya bor: 0.10.0</p></div>
<div class="fx-alert" data-tone="info" role="status"><svg class="fx-alert__icon" viewBox="0 0 20 20" aria-hidden="true"><circle cx="10" cy="10" r="8" fill="none" stroke="currentColor" stroke-width="1.6"/><path d="M10 9v5M10 6.2v.1" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/></svg><p class="fx-alert__title">Yangilaniş tayyor</p><p class="fx-alert__text">Sahifani yangilang.</p></div>
```

- Qilmang: Bir bölimda ikkitadan ortiq ogohlantiriş qöymang.
- Qilmang: Çap rangli çiziq qöşmang — butun yuza tusli.

## Sarlavha havolasi (`anchor-heading`, beta, 0.23.0 dan)

Hujjat sarlavhasi yonida «#» havolasi: ustiga kelganda yoki fokusda çiqadi, bosilsa şu bölimga manzil. Sensorli qurilmada doim körinadi. Sarlavhaga scroll-margin beriladi — qotib turgan panel ostida qolmaydi.

- Qaçon: Uzun hujjat va maqola sarlavhalari (h2, h3).
- Qaçon emas: Ilova sahifa sarlavhasi → `page-header`
- Klaviatura: Tab, Enter — Bölim manzilini oçadi
- Tokenlar: --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-ease-standard, --fx-font-weight-regular, --fx-motion-fast, --fx-radius-badge, --fx-size-topbar, --fx-space-2, --fx-space-4, --fx-text-brand, --fx-text-tertiary

```html
<h2 class="fx-anchor-heading" id="ornatish">Örnatiş <a class="fx-anchor-heading__link" href="#ornatish" aria-label="Örnatiş bölimiga havola">#</a></h2>
```

- Qilmang: id'siz sarlavhaga havola qöymang.
- Qilmang: Havolaga sarlavha matnini örab qöymang — faqat «#» belgisi.

## API kalitlari (`apikeys`, beta, 0.28.0 dan)

API kalitlari boşqaruvi (naqş): «Yangi kalit» dialogi (nom, muddat, ruxsat) → kalit BIR MARTA körsatiladi (nusxalaş tugmasi va ogohlantiriş bilan) → röyxatda faqat prefiks qoladi. Har kalit: ruxsat, yaratilgan sana, oxirgi işlatilgan vaqt, muddat (tugaşiga oz qolsa «!»), «Bekor qiliş» (fxConfirm bilan).

- Qaçon: SaaS sozlamalarida dasturçilar uçun şaxsiy/jamoa kalitlari va tokenlar. Webhook, bot, sayt formasi kabi integratsiyalarni ulaş.
- Qaçon emas: Bitta matnni nusxalaş → `copy`; Parol yoki maxfiy maydon kiritiş → `input`
- Variantlar: data-state=expiring|revoked|new (standart —)
- Klaviatura: Enter (dialogda) — Kalitni yaratadi; Esc — Dialogni yopadi; Tab — Panel oçilganda: nusxalaş → yopiş tugmasi
- Tokenlar: --fx-bg-surface, --fx-bg-warning-subtle, --fx-border-color-default, --fx-border-width-default, --fx-ease-enter, --fx-fg-warning, --fx-font-adjust-mono, --fx-font-family-mono, --fx-font-size-lg, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-regular, --fx-font-weight-semibold, --fx-motion-base, --fx-radius-control, --fx-radius-surface, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-text-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<section class="fx-apikeys" data-fx-apikeys aria-labelledby="ak-t">
  <header class="fx-apikeys__head">
    <div><h2 class="fx-apikeys__title" id="ak-t">API kalitlari</h2><p class="fx-apikeys__text">Saytingiz, bot yoki skriptlar CRM bilan şu kalitlar orqali işlaydi.</p></div>
    <button class="fx-btn" type="button" data-variant="primary" commandfor="ak-new" command="show-modal">Yangi kalit</button>
  </header>
  <div class="fx-apikeys__reveal" hidden>
    <p class="fx-apikeys__reveal-title">Kalit yaratildi</p>
    <p class="fx-apikeys__warn">Kalitni hozir nusxalab, xavfsiz joyda saqlang — u boşqa körsatilmaydi.</p>
    <div class="fx-apikeys__secret"><code class="fx-apikeys__key" id="ak-key"></code><button class="fx-copy" type="button" data-fx-copy data-copy-target="#ak-key" aria-label="Kalitni nusxalaş"><svg data-fx-icon="copy" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><rect x="9" y="9" width="11" height="11" rx="2"/><path d="M5 15V6a2 2 0 0 1 2-2h9"/></svg><svg data-fx-icon="check" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><path d="M5 12l5 5 9-10"/></svg><span class="fx-copy__status" role="status"></span></button></div>
    <div class="fx-apikeys__reveal-actions"><button class="fx-btn" type="button" data-apikeys-done>Nusxaladim, yopiş</button></div>
  </div>
  <div class="fx-table-scroll"><table class="fx-table fx-apikeys__table">
    <thead><tr><th scope="col">Nomi</th><th scope="col">Kalit</th><th scope="col">Ruxsat</th><th scope="col">Yaratilgan</th><th scope="col">Oxirgi işlatilgan</th><th scope="col">Muddati</th><th scope="col"><span class="fx-sr-only">Amallar</span></th></tr></thead>
    <tbody>
      <tr class="fx-apikeys__row"><td><span class="fx-apikeys__name">Sayt formasi → CRM</span></td><td><span class="fx-apikeys__prefix">fx_live_7Qm2…</span></td><td>Faqat yoziş</td><td class="fx-apikeys__muted">02.09.2026</td><td class="fx-apikeys__muted">Bugun, 10:12</td><td class="fx-apikeys__muted fx-apikeys__expires">02.09.2027</td><td><button class="fx-btn" type="button" data-variant="danger-ghost" data-size="sm" data-apikeys-revoke aria-label="«Sayt formasi → CRM» kalitini bekor qiliş">Bekor qiliş</button></td></tr>
      <tr class="fx-apikeys__row" data-state="expiring"><td><span class="fx-apikeys__name">Telegram bot</span></td><td><span class="fx-apikeys__prefix">fx_live_Hk9a…</span></td><td>Töliq</td><td class="fx-apikeys__muted">14.07.2026</td><td class="fx-apikeys__muted">Keça, 21:40</td><td class="fx-apikeys__muted fx-apikeys__expires">21.10.2026 — 3 kun</td><td><button class="fx-btn" type="button" data-variant="danger-ghost" data-size="sm" data-apikeys-revoke aria-label="«Telegram bot» kalitini bekor qiliş">Bekor qiliş</button></td></tr>
      <tr class="fx-apikeys__row" data-state="revoked"><td><span class="fx-apikeys__name">Eski eksport skripti</span></td><td><span class="fx-apikeys__prefix">fx_live_b3Td…</span></td><td>Faqat öqiş</td><td class="fx-apikeys__muted">11.01.2026</td><td class="fx-apikeys__muted">28.03.2026</td><td class="fx-apikeys__muted fx-apikeys__expires"><span class="fx-status" data-tone="neutral">Bekor qilingan</span></td><td><span class="fx-apikeys__muted">—</span></td></tr>
    </tbody>
  </table></div>
  <dialog class="fx-dialog" id="ak-new" aria-labelledby="ak-new-t">
    <form class="fx-apikeys__form">
      <h2 class="fx-dialog__title" id="ak-new-t">Yangi API kaliti</h2>
      <label class="fx-field"><span class="fx-label" data-required>Nomi</span><input class="fx-input" name="name" required maxlength="60" placeholder="Masalan, Sayt formasi" autofocus></label>
      <label class="fx-field"><span class="fx-label">Amal qiliş muddati</span><span class="fx-select-wrap"><select class="fx-select" name="expires"><option value="30">30 kun</option><option value="90" selected>90 kun</option><option value="365">1 yil</option><option value="0">Muddatsiz (tavsiya etilmaydi)</option></select></span></label>
      <fieldset class="fx-fieldset"><legend class="fx-legend">Ruxsat</legend>
        <label class="fx-check" data-type="radio"><input type="radio" name="scope" value="read" checked><span class="fx-check__box"></span>Faqat öqiş</label>
        <label class="fx-check" data-type="radio"><input type="radio" name="scope" value="write"><span class="fx-check__box"></span>Faqat yoziş</label>
        <label class="fx-check" data-type="radio"><input type="radio" name="scope" value="full"><span class="fx-check__box"></span>Töliq</label>
      </fieldset>
      <div class="fx-dialog__actions"><button class="fx-btn" type="button" commandfor="ak-new" command="close">Bekor qiliş</button><button class="fx-btn" type="submit" data-variant="primary">Yaratiş</button></div>
    </form>
  </dialog>
</section>
```

- Qilmang: Kalitni röyxatda töliq körsatmang — faqat yaratilgan zahoti bir marta, keyin prefiks.
- Qilmang: «Muddatsiz»ni standart qilmang — 90 kun yoki 1 yil xavfsizroq.
- Qilmang: Bekor qilişni tasdiqsiz bajarmang: qaysi integratsiya töxtaşini ayting.

## Tasdiqlaş sörovi (ruxsat / rad) (`approval`, beta, 0.23.0 dan)

Agent xavfli yoki qaytarib bölmaydigan amaldan oldin ruxsat söraydi: savol, nima özgarişi (tafsilot) va Ruxsat beriş / Rad etiş / Har doim ruxsat. Qaror tugmalarni natija satriga (ikon + söz) almaştiradi va fx-approval hodisasini çiqaradi.

- Qaçon: Agent öçiriş, yuboriş, tölov kabi amaldan oldin ruxsat olişi kerak.
- Qaçon emas: Foydalanuvçi boşlagan amalni tasdiqlaş (öçiriş tugmasi) → `dialog`; Oddiy xabar → `toast`
- Variantlar: data-state=approved|denied (standart pending)
- Klaviatura: Tab — Tugmalar orasida; Enter, Space — Qarorni qabul qiladi
- Tokenlar: --fx-bg-muted, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-fg-error, --fx-fg-success, --fx-fg-warning, --fx-font-adjust-mono, --fx-font-family-mono, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-radius-badge, --fx-radius-overlay, --fx-size-icon-lg, --fx-size-icon-md, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-text-primary, --fx-text-secondary

```html
<div style="display:grid;gap:var(--fx-space-3)"><section class="fx-approval" data-autofocus data-fx-approval aria-labelledby="ap-t0">
  <div class="fx-approval__head"><svg data-fx-icon="shield" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 3l8 3v6c0 5-3.5 8-8 9-4.5-1-8-4-8-9V6z"/></svg><h4 class="fx-approval__title" id="ap-t0">Mijozlar bazasidan 12 ta yozuvni öçirişga ruxsat berasizmi?</h4><p class="fx-approval__text">Oxirgi faollik 2 yildan oldin. Amalni qaytarib bölmaydi.</p></div>
  <pre class="fx-approval__detail">crm.yozuvlar.oʻchirish({ holat: "faol", oxirgi_faollik: "&gt; 2 yil" })  →  12 ta yozuv</pre>
  <div class="fx-approval__actions"><button type="button" class="fx-btn" data-variant="primary" data-approve>Ruxsat beriş</button><button type="button" class="fx-btn" data-deny>Rad etiş</button><button type="button" class="fx-btn" data-variant="ghost" data-always>Har doim ruxsat</button></div>
  <p class="fx-approval__result" role="status"></p>
</section><section class="fx-approval" data-fx-approval data-state="approved" aria-labelledby="ap-tapproved">
  <div class="fx-approval__head"><svg data-fx-icon="shield" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 3l8 3v6c0 5-3.5 8-8 9-4.5-1-8-4-8-9V6z"/></svg><h4 class="fx-approval__title" id="ap-tapproved">Mijozlar bazasidan 12 ta yozuvni öçirişga ruxsat berasizmi?</h4><p class="fx-approval__text">Oxirgi faollik 2 yildan oldin. Amalni qaytarib bölmaydi.</p></div>
  <pre class="fx-approval__detail">crm.yozuvlar.oʻchirish({ holat: "faol", oxirgi_faollik: "&gt; 2 yil" })  →  12 ta yozuv</pre>
  <div class="fx-approval__actions"><button type="button" class="fx-btn" data-variant="primary" data-approve>Ruxsat beriş</button><button type="button" class="fx-btn" data-deny>Rad etiş</button><button type="button" class="fx-btn" data-variant="ghost" data-always>Har doim ruxsat</button></div>
  <p class="fx-approval__result" role="status">Ruxsat berildi</p>
</section><section class="fx-approval" data-fx-approval data-state="denied" aria-labelledby="ap-tdenied">
  <div class="fx-approval__head"><svg data-fx-icon="shield" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 3l8 3v6c0 5-3.5 8-8 9-4.5-1-8-4-8-9V6z"/></svg><h4 class="fx-approval__title" id="ap-tdenied">Mijozlar bazasidan 12 ta yozuvni öçirişga ruxsat berasizmi?</h4><p class="fx-approval__text">Oxirgi faollik 2 yildan oldin. Amalni qaytarib bölmaydi.</p></div>
  <pre class="fx-approval__detail">crm.yozuvlar.oʻchirish({ holat: "faol", oxirgi_faollik: "&gt; 2 yil" })  →  12 ta yozuv</pre>
  <div class="fx-approval__actions"><button type="button" class="fx-btn" data-variant="primary" data-approve>Ruxsat beriş</button><button type="button" class="fx-btn" data-deny>Rad etiş</button><button type="button" class="fx-btn" data-variant="ghost" data-always>Har doim ruxsat</button></div>
  <p class="fx-approval__result" role="status">Rad etildi</p>
</section></div>
```

- Qilmang: “Ruxsat”ni xavfsiz tugma qilib birinçi fokusga qöymang — fokus Rad etiş tugmasida (data-autofocus).
- Qilmang: Nima özgarişini yaşirmang — aniq son va nom bilan tafsilot yozing.
- Qilmang: “Har doim”ni qaytarib bölmaydigan amalga taklif qilmang.

## Maqola sahifasi (`article`, beta, 0.29.0 dan)

Blog maqolasi sahifasi (4.178): tepada ortga havola va toifa, sarlavha, lid, muallif qatori (avatar, ism, sana, öqiş vaqti) va muqova; ostida uç ustun — çapda yopişqoq ulaşiş tugmalari (Telegram, Facebook, X, havolani nusxalaş — data-fx-copy), markazda matn (fx-prose, 68 belgi kenglik), öngda mundarija (fx-toc — öqilayotgan bölimni belgilaydi). Oxirida teglar, muallif kartasi va «Öxşaş maqolalar» (fx-blog kartalari). Ixtiyoriy tepada öqiş çiziği — fx-scroll-progress. Tor ekranda mundarija matn tepasida yiğiladigan blok, ulaşiş — matn ostida qator; çop etişda faqat matn qoladi.

- Qaçon: Blog maqolasi, yangilik, keys va qöllanma sahifasi. Hujjat saytidagi uzun maqola (mundarija bilan).
- Qaçon emas: Maqolalar röyxati → `blog`; Huquqiy, raqamlangan hujjat → `legal`; Faqat matn uslubi kerak (sahifa tuzilmasisiz) → `prose`
- Variantlar: data-color=purple|blue|green|yellow (standart none)
- Klaviatura: Tab — Ortga havola → toifa → muallif → ulaşiş tugmalari → matn havolalari → mundarija; Enter, Space (tor ekranda) — Mundarijani oçadi / yopadi
- Tokenlar: --fx-bg-category-blue, --fx-bg-category-green, --fx-bg-category-purple, --fx-bg-category-yellow, --fx-bg-muted, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-strong, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-md, --fx-dialog-width, --fx-ease-standard, --fx-fg-success, --fx-font-adjust-display, --fx-font-family-display, --fx-font-size-display-lg, --fx-font-size-display-sm, --fx-font-size-lg, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xl, --fx-font-size-xs, --fx-font-weight-semibold, --fx-line-height-relaxed, --fx-line-height-tight, --fx-motion-fast, --fx-motion-press, --fx-radius-badge, --fx-radius-control, --fx-radius-surface, --fx-size-icon-sm, --fx-size-topbar, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-space-6, --fx-space-8, --fx-text-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<article class="fx-article" aria-labelledby="ar-t">
  <header class="fx-article__header">
    <p class="fx-article__kicker"><a class="fx-article__back" href="#">Blog</a><a class="fx-article__category" href="#">Qöllanma</a></p>
    <h1 class="fx-article__title" id="ar-t">Tokenlar bilan mavzu yasaş: bitta HEX'dan butun palitragaça</h1>
    <p class="fx-article__lead">Brend rangingizni bergan holda kontrast qöriqçisidan ötadigan yoruğ va qoronği mavzuni qanday oliş mumkin — qadamma-qadam, kod bilan.</p>
    <div class="fx-article__byline"><span class="fx-avatar" data-size="sm" data-color="green" aria-hidden="true">DY</span><a class="fx-article__author" href="#">Dilnoza Yusupova</a><time datetime="2026-10-16">16-oktabr 2026</time><span>9 daqiqa öqiş</span></div>
  </header>
  <figure class="fx-article__cover" data-color="purple" aria-hidden="true"></figure>
  <div class="fx-article__layout">
    <ul class="fx-article__share" aria-label="Ulaşiş">
      <li class="fx-article__share-label" aria-hidden="true">Ulaşiş</li>
      <li><a class="fx-article__share-btn" href="https://t.me/share/url?url=https%3A%2F%2Ffoxui.dev%2Fblog%2Ftokenlar" target="_blank" rel="noopener" aria-label="Telegram'da ulaşiş"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M21 4 3 11l6 2 2 6 3-4 5 4z"/></svg></a></li>
      <li><a class="fx-article__share-btn" href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Ffoxui.dev%2Fblog%2Ftokenlar" target="_blank" rel="noopener" aria-label="Facebook'da ulaşiş"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M15 3h-2a4 4 0 0 0-4 4v3H7v4h2v7h4v-7h3l1-4h-4V7a1 1 0 0 1 1-1h2z"/></svg></a></li>
      <li><a class="fx-article__share-btn" href="https://x.com/intent/post?url=https%3A%2F%2Ffoxui.dev%2Fblog%2Ftokenlar" target="_blank" rel="noopener" aria-label="X'da ulaşiş"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 4l16 16M20 4 4 20"/></svg></a></li>
      <li><button class="fx-article__share-btn" type="button" data-fx-copy data-copy="https://foxui.dev/blog/tokenlar" aria-label="Havolani nusxalaş"><svg data-fx-icon="copy" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="9" y="9" width="11" height="11" rx="2"/><path d="M5 15V6a2 2 0 0 1 2-2h9"/></svg><svg data-fx-icon="check" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m5 12 5 5L20 7"/></svg><span class="fx-copy__status fx-sr-only" role="status"></span></button></li>
    </ul>
    <div class="fx-article__body fx-prose">
      <p>Har bir mijoz brendida bitta-ikkita rang böladi, interfeysga esa önlab rang kerak: fon, çiziq, xato, ogohlantiriş, grafik ranglari. Ularni qölda tanlaş — kontrastni buzişning eng tez yöli.</p>
      <h2 id="ar-1">1. Brend rangidan şkala</h2>
      <p>Generator bitta HEX'dan 50–950 poğonali şkala yasaydi va har poğonani OKLCH'da tekislaydi.</p>
      <pre><code>node scripts/theme.mjs --name zarafshon --brand "#0f766e"</code></pre>
      <h2 id="ar-2">2. Kontrast qöriqçisi</h2>
      <p>Build har mavzu × yoruğ/qoronği juftini WCAG AA böyiça tekşiradi. Matn 4,5:1 dan past bölsa — build töxtaydi.</p>
      <h2 id="ar-3">3. Sahifaga ulaş</h2>
      <p>Mavzu bitta atribut bilan tanlanadi: <code>data-fx-theme="zarafshon"</code>. Komponentlar özgarmaydi.</p>
    </div>
    <details class="fx-article__aside" open>
      <summary>Mundarija</summary>
      <nav class="fx-toc" aria-label="Maqola mundarijasi" data-fx-toc><p class="fx-toc__title">Şu maqolada</p><ul class="fx-toc__list"><li><a class="fx-toc__link" href="#ar-1">Brend rangidan şkala</a></li><li><a class="fx-toc__link" href="#ar-2">Kontrast qöriqçisi</a></li><li><a class="fx-toc__link" href="#ar-3">Sahifaga ulaş</a></li></ul></nav>
    </details>
  </div>
  <footer class="fx-article__footer">
    <ul class="fx-article__tags" aria-label="Teglar"><li><a class="fx-chip" href="#">tokenlar</a></li><li><a class="fx-chip" href="#">mavzular</a></li><li><a class="fx-chip" href="#">kontrast</a></li></ul>
    <div class="fx-article__bio"><span class="fx-avatar" data-size="lg" data-color="green" aria-hidden="true">DY</span><p class="fx-article__bio-name">Dilnoza Yusupova</p><p class="fx-article__bio-role">Dizayn tizimi muhandisi, FoxUI</p><p class="fx-article__bio-text">Tokenlar, mavzular va kontrast qöriqçisi ustida işlaydi. Toşkentda yaşaydi.</p></div>
  </footer>
  <section class="fx-article__related fx-blog" aria-labelledby="ar-rel">
    <h2 class="fx-article__related-title" id="ar-rel">Öxşaş maqolalar</h2>
    <ul class="fx-blog__list">
      <li class="fx-blog__post"><div class="fx-blog__cover" data-color="yellow" aria-hidden="true"></div><div class="fx-blog__content"><a class="fx-blog__category" href="#">Relizlar</a><h3 class="fx-blog__post-title"><a class="fx-blog__link" href="#">0.28: 100 ta yangi naqş va «Işxona»</a></h3><div class="fx-blog__byline"><span class="fx-blog__author"><span><time datetime="2026-10-14">14-oktabr 2026</time> · 5 daq öqiş</span></span></div></div></li>
      <li class="fx-blog__post"><div class="fx-blog__cover" data-color="green" aria-hidden="true"></div><div class="fx-blog__content"><a class="fx-blog__category" href="#">Qöllanma</a><h3 class="fx-blog__post-title"><a class="fx-blog__link" href="#">Klaviatura bilan işlaş: har komponentda nimani tekşiramiz</a></h3><div class="fx-blog__byline"><span class="fx-blog__author"><span><time datetime="2026-10-02">2-oktabr 2026</time> · 6 daq öqiş</span></span></div></div></li>
    </ul>
  </section>
</article>
```

- Qilmang: Matnni 68–75 belgidan keng qilmang — uzun qatorni öqiş qiyin; markaziy ustun şuni uşlab turadi.
- Qilmang: Ulaşiş tugmalarini ikon bilan aria-label'siz qoldirmang va ularni sahifa böylab «suzuvçi» qilib matn ustiga çiqarmang.
- Qilmang: Mundarijani 2–3 bölimli qisqa maqolaga qöymang — 4+ sarlavha bölganda foydali.

## AI yordamçi (widget) (`assistant`, experimental, 0.23.0 dan)

Saytlar uçun AI yordamçi: öng pastda dumaloq tugma (çat ikonkasi yoki ixtiyoriy personaj) → suhbat oynasi. Admin, kabinet, login va checkout sahifalarida çiqmaydi (data-exclude bilan özgartiriladi); salom va tayyor savollar til böyiça (data-greeting-ru, data-suggestions-ru). Har sayt faqat sozlama beradi — nom, rang, endpoint, til (uz/ru/en), salom matni, tayyor savollar, menejer kanallari. Javob kelmasa — qayta uriniş; endpoint handoff qaytarsa (byudjet tugagan yoki odam kerak) — «menejer bilan boğlaning» kartasi. Personaj: tinç «nafas», bir martalik qöl silkitiş; jonli inline SVG personaj bölsa, unga holat sinfi qöyiladi: salom, oylayapti, gapiryapti, uzatyapti (Lottie şart emas). Telefonda suhbat pastdan çiqadigan varaq (72 % balandlik, yozişda 92 %), uzun javob ~7 qatordan keyin yiğiladi («Davomi»), salom pufakçasi 2 qatordan oşmaydi va 10 s da özi yöqoladi. Personaj berilmasa yuz — ovoz şari (fx-orb); eski çat ikonkasi — data-face="icon". Panel foni va matni saytnikidan olinadi: CSS'da --assistant-surface / --assistant-text yoki data-surface / data-text (masalan var(--c-bg)); bölmasa saytdagi --surface/--bg, söng FoxUI. Mustaqil widget'da panel uslubi (assistant-panel.css) birinçi oçilişda yuklanadi. Panel (19.10 redizayni): yoziş maydoni va yuboriş — bitta karta; javob — pufaksiz toza matn (qalin, röyxat, havola), ostida nusxa; boşida tanişuv (şar, salom, savol namunalari röyxati); kutiş — «Öylayapman» ustida yoruğlik; «Yangi suhbat».

- Qaçon: Saytga taşrif buyuruvçining savollariga AI javob beradi, kerak bölsa menejerga ötkazadi.
- Qaçon emas: Içki jamoa çati → `message`; Bir martalik maslahat → `toggletip`
- Variantlar: data-state=idle|open|sending|error|handoff (standart idle); data-mascot=idle|wave|thinking|talking|handoff (standart idle); data-color=light (standart brand)
- Klaviatura: Enter — Yuboradi (Shift+Enter — yangi qator); Esc — Yopadi, fokus tugmaga qaytadi
- Tokenlar: --fx-bg-brand-solid, --fx-bg-error-solid, --fx-bg-page, --fx-bg-static-light, --fx-bg-surface, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-color-black, --fx-control-h-lg, --fx-control-h-md, --fx-control-h-sm, --fx-duration-pulse, --fx-ease-enter, --fx-ease-spring, --fx-ease-standard, --fx-fg-error, --fx-fg-success, --fx-fg-warning, --fx-font-adjust-display, --fx-font-family-display, --fx-font-size-2xl, --fx-font-size-lg, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xl, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-knob-pill, --fx-motion-base, --fx-motion-fast, --fx-motion-instant, --fx-motion-press, --fx-motion-slow, --fx-radius-badge, --fx-radius-circle, --fx-radius-control, --fx-radius-overlay, --fx-radius-pill, --fx-radius-surface, --fx-shadow-lg, --fx-shadow-md, --fx-shadow-sm, --fx-size-icon-lg, --fx-size-icon-md, --fx-size-icon-sm, --fx-size-status-dot-sm, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-space-6, --fx-space-8, --fx-text-error, --fx-text-on-brand, --fx-text-on-category, --fx-text-on-error, --fx-text-on-static-light, --fx-text-primary

```html
<div class="fx-assistant" data-fx-assistant data-site="namuna" data-name="Guli" data-color="pink" data-greet-delay="1500" data-suggestions="Narxlar qancha?|Qancha vaqtda bitadi?|Portfolio" data-handoff-telegram="@namuna_uz" data-handoff-phone="+998 71 200 00 00"></div>
```

- Qilmang: Har saytda alohida çat yozmang — şu ota komponentni sozlang.
- Qilmang: Personaj animatsiyasini doimiy diqqat tortuvçi qilmang: qöl silkitiş sessiyada bir marta.
- Qilmang: Ovoz qöşmang; harakat kamaytirilsa — personaj qimirlamaydi.

## Biriktirma (`attachment`, beta, 0.23.0 dan)

Fayl yoki rasm kartoçkasi: belgi (tur) yoki rasm, nom, hajm, olib taşlaş ×, yuklaniş çiziği. Composer içida ixçam (chip), xabar içida katta (card). Holatlar: yuklanmoqda, tayyor, xato (söz bilan).

- Qaçon: Composer içida biriktirilgan fayllar. Xabardagi fayl/rasm kartoçkasi.
- Qaçon emas: Fayl yuklaş maydoni (tanlaş/taşlaş) → `dropzone`; Fayllar röyxati/jadvali → `file`
- Variantlar: data-variant=card (standart chip); data-state=uploading|error (standart done)
- Klaviatura: Tab — Olib taşlaş tugmasiga; Enter, Space — Olib taşlaydi
- Tokenlar: --fx-bg-brand-solid, --fx-bg-brand-subtle, --fx-bg-error-subtle, --fx-bg-muted, --fx-bg-pressed, --fx-bg-surface, --fx-border-color-default, --fx-border-color-error, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-md, --fx-ease-standard, --fx-fg-error, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-motion-base, --fx-motion-fast, --fx-radius-circle, --fx-radius-control, --fx-size-icon-sm, --fx-size-min-target, --fx-space-1, --fx-space-12, --fx-space-2, --fx-text-brand, --fx-text-error, --fx-text-primary, --fx-text-tertiary

```html
<div style="display:flex;flex-wrap:wrap;gap:var(--fx-space-2)">
<div class="fx-attachment" data-fx-attachment><span class="fx-attachment__thumb" aria-hidden="true">PDF</span><span class="fx-attachment__name">shartnoma.pdf</span><span class="fx-attachment__meta">2,4 MB</span><button type="button" class="fx-attachment__remove" aria-label="shartnoma.pdf ni olib taşlaş"><svg data-fx-icon="x" viewBox="0 0 24 24" aria-hidden="true"><path d="M6 6l12 12M18 6L6 18"/></svg></button></div>
<div class="fx-attachment" data-state="uploading" data-fx-attachment><span class="fx-attachment__thumb" aria-hidden="true">XLS</span><span class="fx-attachment__name">tushum-oktabr.xlsx</span><span class="fx-attachment__meta">Yuklanmoqda… 62 %</span><button type="button" class="fx-attachment__remove" aria-label="tushum-oktabr.xlsx ni olib taşlaş"><svg data-fx-icon="x" viewBox="0 0 24 24" aria-hidden="true"><path d="M6 6l12 12M18 6L6 18"/></svg></button><progress class="fx-attachment__progress" max="100" value="62" aria-label="Yuklaniş"></progress></div>
<div class="fx-attachment" data-state="error" data-fx-attachment><span class="fx-attachment__thumb" aria-hidden="true">MOV</span><span class="fx-attachment__name">katta-video.mov</span><span class="fx-attachment__meta">Fayl 50 MB dan katta</span><button type="button" class="fx-attachment__remove" aria-label="katta-video.mov ni olib taşlaş"><svg data-fx-icon="x" viewBox="0 0 24 24" aria-hidden="true"><path d="M6 6l12 12M18 6L6 18"/></svg></button></div>
</div>
<div class="fx-attachment" data-variant="card" data-fx-attachment style="max-inline-size:20rem"><span class="fx-attachment__thumb" aria-hidden="true">PNG</span><span class="fx-attachment__name">maket-bosh-sahifa.png</span><span class="fx-attachment__meta">860 KB</span><button type="button" class="fx-attachment__remove" aria-label="maket-bosh-sahifa.png ni olib taşlaş"><svg data-fx-icon="x" viewBox="0 0 24 24" aria-hidden="true"><path d="M6 6l12 12M18 6L6 18"/></svg></button></div>
```

- Qilmang: × tugmasiga “fayl nomi + ni olib taşlaş” aria-label bering.
- Qilmang: Xatoni faqat qizil bilan bermang — meta qatorida “!” va sabab matni bor.
- Qilmang: Yuklaniş çiziği uçun <progress> işlating, aria-label bilan.

## Audio pleyer (`audioplayer`, beta, 0.24.0 dan)

Ixçam audio pleyer: ijro tugmasi, sarlavha, tölqinsimon progress (bosib yoki ← → bilan suriladi), vaqt va tezlik (1× · 1,5× · 2×). Çiziqlar balandligi `data-peaks` dan yoki sarlavhadan hosil böladi. Bir vaqtda faqat bitta pleyer yangraydi. Ovozli xabar, podkast qismi, qönğiroq yozuvi uçun.

- Qaçon: Qisqa audio: ovozli xabar, qönğiroq yozuvi, podkast parçasi.
- Qaçon emas: Video → `videoplayer`
- Variantlar: data-size=sm (standart md)
- Klaviatura: Space — Tölqinda: ijro / pauza; ← → — 5 soniya orqaga / oldinga; Home, End — Boşiga / oxiriga
- Tokenlar: --fx-bg-brand-solid, --fx-bg-brand-solid-hover, --fx-bg-muted, --fx-bg-pressed, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-strong, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-ease-standard, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-motion-fast, --fx-motion-instant, --fx-motion-press, --fx-radius-circle, --fx-radius-control, --fx-radius-nav, --fx-radius-surface, --fx-size-control-lg, --fx-size-control-md, --fx-size-control-sm, --fx-space-1, --fx-space-2, --fx-space-3, --fx-text-on-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<div class="fx-audioplayer" data-fx-audioplayer data-peaks="30,55,80,45,60,90,70,35,50,75,95,60,40,55,85,65,30,45,70,50,35,60,80,55">
  <audio preload="metadata" src="https://interactive-examples.mdn.mozilla.net/media/cc0-audio/t-rex-roar.mp3"></audio>
  <div class="fx-audioplayer__meta"><span class="fx-audioplayer__title">Mijoz bilan qönğiroq</span><span class="fx-audioplayer__sub">Guli · 12 oktyabr</span></div>
</div>
```

- Qilmang: Tölqinni haqiqiy ovoz tahlili deb körsatmang — u faqat progress şakli; aniq tahlil kerak bölsa `data-peaks`ni serverda hisoblab bering.
- Qilmang: Sahifa oçilganda avtomatik yangratmang.
- Qilmang: Uzun podkast uçun bobli (chapters) alohida mexanizm kerak — bu pleyer qisqa yozuvlar uçun.

## Audit jurnali (`auditlog`, beta, 0.29.0 dan)

Xavfsizlik va boşqaruv jurnali (4.191): «kim · nima · qaçon · qayerdan». Tepada sarlavha, saqlaş muddati va «Eksport (CSV)»; filtr qatori (qidiruv, foydalanuvçi, amal turi, davr); fx-table asosidagi jadval kunlar böyiça guruhlangan (.fx-auditlog__day). Har qator: vaqt (mono, aniq soniyagaça), aktor (fx-persona yoki «Tizim»), amal (fe'l + obyekt havolasi), IP va joy, muhimlik — data-severity: info, warning (▲ Diqqat), critical (■ Xavfli — qator foni ham). Tafsilot <details> içida: maydon özgarişlari farqi (− oldin, + keyin). Yozuvlar faqat öqiladi — tahrirlaş/öçiriş yöq. Tor ekranda IP ustuni yaşirinadi.

- Qaçon: Admin paneldagi «Xavfsizlik jurnali» / «Faoliyat tarixi». Moliyaviy va ruxsat özgarişlarini tekşiriş (compliance).
- Qaçon emas: Bitta yozuvning oddiy tarixi (izohlar bilan) → `timeline`; Mahsulot versiyalari → `changelogfeed`; Server loglari oqimi → `terminal`
- Variantlar: data-severity=info|warning|critical (standart info)
- Klaviatura: Tab — Filtrlar → obyekt havolalari → «Özgarişlar» → «Köproq yuklaş»; Enter, Space — Özgarişlar farqini oçadi / yopadi
- Tokenlar: --fx-bg-error-subtle, --fx-bg-muted, --fx-bg-page, --fx-bg-subtle, --fx-bg-success-subtle, --fx-border-color-default, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-fg-error, --fx-fg-warning, --fx-font-adjust-mono, --fx-font-family-mono, --fx-font-size-sm, --fx-font-size-xl, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-radius-badge, --fx-radius-control, --fx-radius-surface, --fx-size-avatar-sm, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-5, --fx-space-6, --fx-text-brand, --fx-text-error, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<section class="fx-auditlog" aria-labelledby="au-t">
  <header class="fx-auditlog__head"><div><h2 class="fx-auditlog__title" id="au-t">Audit jurnali</h2><p class="fx-auditlog__text">Hisobdagi barça muhim amallar. Yozuvlar 365 kun saqlanadi va özgartirilmaydi.</p></div><button class="fx-btn" type="button">Eksport (CSV)</button></header>
  <div class="fx-auditlog__filters" role="search" aria-label="Jurnalni filtrlaş">
    <label class="fx-search"><svg viewBox="0 0 20 20" aria-hidden="true"><circle cx="9" cy="9" r="5.5" fill="none" stroke="currentColor" stroke-width="1.5"/><path d="m13.5 13.5 3.5 3.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg><input class="fx-search__input" type="search" placeholder="Obyekt, IP yoki amal" aria-label="Jurnaldan qidiriş"></label>
    <label class="fx-field"><span class="fx-label">Foydalanuvçi</span><span class="fx-select-wrap"><select class="fx-select"><option>Hammasi</option><option>Dilnoza Yusupova</option><option>Aziz Karimov</option><option>Tizim</option></select></span></label>
    <label class="fx-field"><span class="fx-label">Amal turi</span><span class="fx-select-wrap"><select class="fx-select"><option>Hammasi</option><option>Kiriş</option><option>Ruxsatlar</option><option>Tölov</option><option>Ma'lumot</option></select></span></label>
    <label class="fx-field"><span class="fx-label">Davr</span><span class="fx-select-wrap"><select class="fx-select"><option>Oxirgi 7 kun</option><option>Oxirgi 30 kun</option><option>Şu yil</option></select></span></label>
  </div>
  <div class="fx-table-scroll">
  <table class="fx-table fx-auditlog__table" data-density="compact">
    <caption class="fx-sr-only">Audit jurnali yozuvlari, yangilari tepada</caption>
    <thead><tr><th scope="col">Vaqt</th><th scope="col">Kim</th><th scope="col">Amal</th><th scope="col" class="fx-auditlog__col-where">IP va joy</th><th scope="col">Muhimlik</th></tr></thead>
    <tbody>
      <tr class="fx-auditlog__day"><th colspan="5" scope="rowgroup">Bugun, 18-oktabr</th></tr>
      <tr class="fx-auditlog__row" data-severity="critical"><td><time class="fx-auditlog__time" datetime="2026-10-18T14:32:08+05:00">14:32:08</time></td><td><div class="fx-persona" data-size="sm"><span class="fx-avatar" data-size="sm" data-color="coral" aria-hidden="true">AK</span><span class="fx-persona__text"><span class="fx-persona__name">Aziz Karimov</span><span class="fx-persona__meta">Administrator</span></span></div></td><td><div class="fx-auditlog__action"><span><span class="fx-auditlog__verb">API kalitini yaratdi</span> <a class="fx-auditlog__object" href="#">«Hisobot skripti» (töliq ruxsat)</a></span></div></td><td class="fx-auditlog__col-where"><span class="fx-auditlog__where"><code>185.139.12.44</code>Toşkent, Chrome</span></td><td><span class="fx-auditlog__severity">Xavfli</span></td></tr>
      <tr class="fx-auditlog__row" data-severity="warning"><td><time class="fx-auditlog__time" datetime="2026-10-18T11:05:51+05:00">11:05:51</time></td><td><div class="fx-persona" data-size="sm"><span class="fx-avatar" data-size="sm" data-color="green" aria-hidden="true">DY</span><span class="fx-persona__text"><span class="fx-persona__name">Dilnoza Yusupova</span><span class="fx-persona__meta">Egasi</span></span></div></td><td><div class="fx-auditlog__action"><span><span class="fx-auditlog__verb">rolini özgartirdi:</span> <a class="fx-auditlog__object" href="#">Jasur Toshpoʻlatov</a></span><details class="fx-auditlog__details"><summary>Özgarişlar</summary><dl class="fx-auditlog__diff"><dt>Rol</dt><dd><del>Köruvçi</del><ins>Administrator</ins></dd></dl></details></div></td><td class="fx-auditlog__col-where"><span class="fx-auditlog__where"><code>84.54.70.10</code>Samarqand, Safari</span></td><td><span class="fx-auditlog__severity">Diqqat</span></td></tr>
      <tr class="fx-auditlog__row" data-severity="info"><td><time class="fx-auditlog__time" datetime="2026-10-18T09:14:22+05:00">09:14:22</time></td><td><div class="fx-persona" data-size="sm"><span class="fx-avatar" data-size="sm" data-color="green" aria-hidden="true">DY</span><span class="fx-persona__text"><span class="fx-persona__name">Dilnoza Yusupova</span><span class="fx-persona__meta">Egasi</span></span></div></td><td><div class="fx-auditlog__action"><span><span class="fx-auditlog__verb">tarifni yangiladi:</span> <a class="fx-auditlog__object" href="#">Jamoa, yillik</a></span><details class="fx-auditlog__details"><summary>Özgarişlar</summary><dl class="fx-auditlog__diff"><dt>Tarif</dt><dd><del>Pro, oylik</del><ins>Jamoa, yillik</ins></dd><dt>Örinlar</dt><dd><del>3</del><ins>5</ins></dd></dl></details></div></td><td class="fx-auditlog__col-where"><span class="fx-auditlog__where"><code>84.54.70.10</code>Samarqand, Safari</span></td><td><span class="fx-auditlog__severity">Oddiy</span></td></tr>
      <tr class="fx-auditlog__day"><th colspan="5" scope="rowgroup">Keça, 17-oktabr</th></tr>
      <tr class="fx-auditlog__row" data-severity="warning"><td><time class="fx-auditlog__time" datetime="2026-10-17T23:47:03+05:00">23:47:03</time></td><td><span class="fx-auditlog__system">Tizim</span></td><td><div class="fx-auditlog__action"><span><span class="fx-auditlog__verb">5 marta muvaffaqiyatsiz kiriş</span> — <a class="fx-auditlog__object" href="#">aziz@ipakyoli.uz</a> 15 daqiqaga bloklandi</span></div></td><td class="fx-auditlog__col-where"><span class="fx-auditlog__where"><code>91.204.33.7</code>Noma'lum joy</span></td><td><span class="fx-auditlog__severity">Diqqat</span></td></tr>
      <tr class="fx-auditlog__row" data-severity="info"><td><time class="fx-auditlog__time" datetime="2026-10-17T18:02:40+05:00">18:02:40</time></td><td><div class="fx-persona" data-size="sm"><span class="fx-avatar" data-size="sm" data-color="coral" aria-hidden="true">AK</span><span class="fx-persona__text"><span class="fx-persona__name">Aziz Karimov</span><span class="fx-persona__meta">Administrator</span></span></div></td><td><div class="fx-auditlog__action"><span><span class="fx-auditlog__verb">eksport qildi:</span> <a class="fx-auditlog__object" href="#">mijozlar-oktabr.csv</a> (1 284 qator)</span></div></td><td class="fx-auditlog__col-where"><span class="fx-auditlog__where"><code>185.139.12.44</code>Toşkent, Chrome</span></td><td><span class="fx-auditlog__severity">Oddiy</span></td></tr>
    </tbody>
  </table>
  </div>
  <div class="fx-auditlog__more"><span>5 / 1 284 yozuv körsatildi</span><button class="fx-btn" type="button" data-size="sm">Köproq yuklaş</button></div>
</section>
```

- Qilmang: Jurnal yozuvini tahrirlaş yoki öçiriş tugmasini qöymang — audit özgarmas bölişi şart.
- Qilmang: Muhimlikni faqat rang bilan bildirmang — «Diqqat / Xavfli» sözi va belgi bor.
- Qilmang: Nisbiy vaqtni («3 soat oldin») yolğiz bermang — audit uçun aniq vaqt (soniyagaça) va vaqt zonasi kerak.
- Qilmang: Parol, token yoki karta raqamini farqda körsatmang — «özgartirildi» deb yozing.

## Kiriş sahifasi (`auth`, beta, 0.23.0 dan)

Kiriş / röyxatdan ötiş sahifasi qolipi: markazda karta yoki çapda forma + öngda brend paneli (split). Tayyor «havola yuborildi» (magic link) holati — email körsatiladi, «Qayta yuboriş» 30 soniya sanaladi. Ijtimoiy kiriş va «yoki» ajratgiçi bor. Bosqiçlar (4.109): data-step="verify|forgot|reset|done" — SMS/email kodini kiritiş (fx-otp, tölsa özi yuboradi), parolni tiklaş havolasi, yangi parol (talablar röyxati ✓ bilan, takror tekşiruvi) va «Tayyor» — mavjud markaziy/split qolipda.

- Qaçon: Kiriş, röyxatdan ötiş, parolni tiklaş sahifalari.
- Qaçon emas: Ilova içida qayta tasdiqlaş → `dialog`; Köp bosqiçli röyxatdan ötiş → `wizard`
- Variantlar: data-variant=centered|split (standart centered); data-step=form|sent|verify|forgot|reset|done (standart form)
- Klaviatura: Enter — Formani yuboradi (havola yuboriladi); Tab — Bosqiç almaşganda fokus yangi sarlavhada; «Orqaga» havolasi bilan qaytiş; 0–9 — Kod kataklari (fx-otp); oxirgi raqamdan keyin forma özi yuboriladi
- Tokenlar: --fx-bg-brand-solid, --fx-bg-brand-subtle, --fx-bg-page, --fx-bg-success-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-dialog-width, --fx-fg-success, --fx-font-size-display-sm, --fx-font-size-sm, --fx-font-size-xl, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-radius-badge, --fx-radius-overlay, --fx-radius-surface, --fx-shadow-sm, --fx-size-icon-lg, --fx-space-1, --fx-space-10, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-space-6, --fx-space-8, --fx-text-brand, --fx-text-on-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<main class="fx-auth" data-variant="split" data-fx-auth style="min-block-size: 28rem">
  <div class="fx-auth__main">
    <div class="fx-auth__card">
      <a class="fx-auth__brand" href="#"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M3 3l6 5h6l6-5v10c0 5-4 8-9 8s-9-3-9-8z" fill="currentColor"/></svg>Misol</a>
      <div class="fx-auth__view" data-view="form">
        <div class="fx-auth__head"><h1 class="fx-auth__title">Kiriş</h1><p class="fx-auth__text">Emailingizni yozing — kiriş havolasini yuboramiz.</p></div>
        <form class="fx-auth__form" data-auth-form>
          <label class="fx-field"><span class="fx-label" data-required>Email</span><input class="fx-input" type="email" required autocomplete="email" placeholder="siz@misol.uz"></label>
          <button class="fx-btn" type="submit" data-variant="primary" data-width="full">Havola yuboriş</button>
        </form>
        <div class="fx-auth__or">yoki</div>
        <div class="fx-auth__social"><button class="fx-btn" type="button" data-width="full">Google bilan davom etiş</button></div>
        <p class="fx-auth__foot">Hisobingiz yöqmi? <a href="#">Röyxatdan öting</a></p>
      </div>
      <div class="fx-auth__view" data-view="sent" hidden>
        <div class="fx-auth__art"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 6.5h16v11H4zM4.5 7l7.5 6 7.5-6" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg></div>
        <div class="fx-auth__head"><h1 class="fx-auth__title">Poçtangizni tekşiring</h1><p class="fx-auth__text">Kiriş havolasini <span class="fx-auth__email" data-auth-email></span> manziliga yubordik. Havola 15 daqiqa amal qiladi.</p></div>
        <button class="fx-btn" type="button" data-auth-resend data-cooldown="30">Qayta yuboriş<span data-auth-count></span></button>
        <button class="fx-btn" type="button" data-variant="link" data-auth-back>Boşqa email bilan</button>
      </div>
    </div>
  </div>
  <aside class="fx-auth__aside"><span></span><div><blockquote class="fx-auth__quote">«Arizalar endi heç qaçon yöqolmaydi — hammasi bir joyda.»</blockquote><p class="fx-auth__cite">Madina Yusupova, savdo bölimi rahbari</p></div></aside>
</main>
<main class="fx-auth" data-fx-auth data-step="form" style="min-block-size: 34rem">
  <div class="fx-auth__card">
    <div class="fx-auth__view" data-view="form">
      <div class="fx-auth__head"><h1 class="fx-auth__title">Hisobga kiriş</h1><p class="fx-auth__text">Email va parolingizni kiriting.</p></div>
      <form class="fx-auth__form" data-auth-form data-auth-next="verify">
        <label class="fx-field"><span class="fx-label" data-required>Email</span><input class="fx-input" type="email" required autocomplete="username" placeholder="siz@misol.uz"></label>
        <div class="fx-field"><div class="fx-auth__row"><label class="fx-label" for="au-p" data-required>Parol</label><button class="fx-auth__link" type="button" data-auth-go="forgot">Parolni unutdingizmi?</button></div><input class="fx-input" id="au-p" type="password" required autocomplete="current-password"></div>
        <button class="fx-btn" type="submit" data-variant="primary" data-width="full">Kiriş</button>
      </form>
    </div>
    <div class="fx-auth__view" data-view="verify" hidden>
      <div class="fx-auth__art"><svg viewBox="0 0 24 24" aria-hidden="true"><rect x="6" y="2.5" width="12" height="19" rx="2.5" fill="none" stroke="currentColor" stroke-width="1.6"/><path d="M10.5 18.5h3" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/></svg></div>
      <div class="fx-auth__head"><h1 class="fx-auth__title">Kodni kiriting</h1><p class="fx-auth__text">6 xonali kodni <b>+998 90 ••• •• 67</b> raqamiga SMS qilib yubordik.</p></div>
      <form class="fx-auth__form" data-auth-form data-auth-next="done">
        <div class="fx-otp" data-fx-otp><div class="fx-otp__cells" role="group" aria-label="Tasdiqlaş kodi"><input class="fx-otp__cell"><input class="fx-otp__cell"><input class="fx-otp__cell"><span class="fx-otp__sep" aria-hidden="true"></span><input class="fx-otp__cell"><input class="fx-otp__cell"><input class="fx-otp__cell"></div></div>
        <button class="fx-btn" type="submit" data-variant="primary" data-width="full">Tasdiqlaş</button>
      </form>
      <button class="fx-btn" type="button" data-variant="ghost" data-auth-resend data-cooldown="60">Kodni qayta yuboriş<span data-auth-count></span></button>
      <button class="fx-auth__link fx-auth__back" type="button" data-auth-go="form">Orqaga</button>
    </div>
    <div class="fx-auth__view" data-view="forgot" hidden>
      <button class="fx-auth__link fx-auth__back" type="button" data-auth-go="form">Kirişga qaytiş</button>
      <div class="fx-auth__head"><h1 class="fx-auth__title">Parolni tiklaş</h1><p class="fx-auth__text">Hisobingiz emailini yozing — tiklaş havolasini yuboramiz.</p></div>
      <form class="fx-auth__form" data-auth-form data-auth-next="sent">
        <label class="fx-field"><span class="fx-label" data-required>Email</span><input class="fx-input" type="email" required autocomplete="email" placeholder="siz@misol.uz"></label>
        <button class="fx-btn" type="submit" data-variant="primary" data-width="full">Havola yuboriş</button>
      </form>
    </div>
    <div class="fx-auth__view" data-view="sent" hidden>
      <div class="fx-auth__art"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 6.5h16v11H4zM4.5 7l7.5 6 7.5-6" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg></div>
      <div class="fx-auth__head"><h1 class="fx-auth__title">Xat yuborildi</h1><p class="fx-auth__text"><span class="fx-auth__email" data-auth-email></span> manziliga parolni tiklaş havolasi ketdi. Havola 30 daqiqa amal qiladi.</p></div>
      <button class="fx-btn" type="button" data-auth-resend data-cooldown="30">Qayta yuboriş<span data-auth-count></span></button>
      <button class="fx-auth__link" type="button" data-auth-go="reset">Havolani oçdim (namuna)</button>
    </div>
    <div class="fx-auth__view" data-view="reset" hidden>
      <div class="fx-auth__head"><h1 class="fx-auth__title">Yangi parol</h1><p class="fx-auth__text">Eski paroldan farq qilsin.</p></div>
      <form class="fx-auth__form" data-auth-form data-auth-next="done">
        <div class="fx-field" data-fx-field><label class="fx-label" for="au-n" data-required>Yangi parol</label><span class="fx-input-group"><input class="fx-input-group__control" id="au-n" type="password" required minlength="8" autocomplete="new-password" aria-describedby="au-r"><button class="fx-input-group__btn" type="button" data-reveal aria-pressed="false" aria-label="Parolni körsatiş"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M2 10s3-5.5 8-5.5S18 10 18 10s-3 5.5-8 5.5S2 10 2 10z" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round"/><circle cx="10" cy="10" r="2.5" fill="none" stroke="currentColor" stroke-width="1.5"/></svg></button></span>
          <ul class="fx-auth__rules" id="au-r" data-for="#au-n"><li data-rule="len">Kamida 8 belgi</li><li data-rule="digit">Kamida bitta raqam</li><li data-rule="case">Katta va kiçik harf</li></ul></div>
        <label class="fx-field"><span class="fx-label" data-required>Parolni takrorlang</span><input class="fx-input" type="password" required autocomplete="new-password" data-auth-match="#au-n"></label>
        <button class="fx-btn" type="submit" data-variant="primary" data-width="full">Parolni saqlaş</button>
      </form>
    </div>
    <div class="fx-auth__view" data-view="done" hidden>
      <div class="fx-auth__art" data-tone="success"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M5 12.5l4.5 4.5L19 7.5" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg></div>
      <div class="fx-auth__head"><h1 class="fx-auth__title">Tayyor</h1><p class="fx-auth__text">Hammasi tasdiqlandi. Endi işni davom ettirişingiz mumkin.</p></div>
      <a class="fx-btn" data-variant="primary" data-width="full" href="#">Boş sahifaga</a>
    </div>
  </div>
</main>
```

- Qilmang: Brend panelida uzun matn yozmang — bitta fikr yoki iqtibos.
- Qilmang: Parol xatosini «email yoki parol notöğri» deb umumiy yozing — qaysi biri xato ekanini oşkor qilmang.
- Qilmang: Parol talablarini faqat xato çiqqandan keyin körsatmang — yoziş paytida ✓ bilan oçiq tursin.

## Avatar (`avatar`, beta, 0.2.0 dan)

Kvadrat avatar: ikki harf yoki surat, 6 toifa rangi, 3 ölçam (sm 22 · md 36 · lg 56), ixtiyoriy holat nuqtasi (active — puls, waiting, stopped, idle). Yoy = ölçam × 0,28. Guruh: .fx-avatar-group (ustma-ust, kesim yuza rangida), oxirida data-more bilan «+N». Kengaytma: xs · xl · 2xl ölçam; guruh hoverda yoyiladi (data-spread), tör (data-layout=grid), data-max; “+N” — <button>; surat zanjiri (img + onerror yaşiriş → .fx-avatar__fallback initsial/ikon); .fx-avatar__badge (✓/logotip); data-editable + .fx-avatar__edit.

- Qaçon: Odam yoki agentni ikki harf yoki surat bilan körsatiş.
- Qaçon emas: Logotip → `img`
- Variantlar: data-color=yellow|pink|blue|coral|green|purple (standart blue); data-size=sm|md|lg|xs|xl|2xl (standart md); data-status=active|waiting|stopped|idle; data-spread=true; data-layout=grid; data-max=3|4|5|6; data-editable=true
- Tokenlar: --fx-bg-brand-solid, --fx-bg-category-blue, --fx-bg-category-coral, --fx-bg-category-green, --fx-bg-category-pink, --fx-bg-category-purple, --fx-bg-category-yellow, --fx-bg-muted, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-focus, --fx-border-color-strong, --fx-border-width-default, --fx-border-width-focus, --fx-color-neutral-900, --fx-duration-pulse, --fx-ease-standard, --fx-fg-error, --fx-fg-success, --fx-fg-warning, --fx-font-size-display-sm, --fx-font-size-lg, --fx-font-size-xl, --fx-font-size-xs, --fx-font-weight-semibold, --fx-knob-pill, --fx-motion-base, --fx-motion-fast, --fx-motion-instant, --fx-motion-press, --fx-radius-avatar-ratio, --fx-radius-circle, --fx-size-avatar-lg, --fx-size-avatar-md, --fx-size-avatar-sm, --fx-size-icon-sm, --fx-size-status-dot, --fx-size-status-dot-sm, --fx-space-1, --fx-space-2, --fx-text-on-brand, --fx-text-on-category, --fx-text-primary, --fx-text-secondary

```html
<span class="fx-avatar" data-color="yellow" role="img" aria-label="Guli">GU</span>
<span class="fx-avatar" data-color="purple" data-status="active" role="img" aria-label="Mister Fox, işlayapti">MF</span>
<span class="fx-avatar" data-size="lg" data-color="green" data-status="waiting" role="img" aria-label="Tadqiqotçi, kutyapti">TQ</span>
<span class="fx-avatar" data-size="sm" data-color="coral" data-status="stopped" role="img" aria-label="Bot, töxtagan">BT</span>
<span class="fx-avatar-group" role="group" aria-label="5 iştirokçi"><span class="fx-avatar" data-color="yellow" role="img" aria-label="Guli">GU</span><span class="fx-avatar" data-color="purple" role="img" aria-label="Mister Fox">MF</span><span class="fx-avatar" data-color="green" role="img" aria-label="Tadqiqotçi">TQ</span><span class="fx-avatar" data-more role="img" aria-label="yana 2">+2</span></span>
<span class="fx-avatar" data-size="xl" data-color="green" data-editable role="img" aria-label="Surat: Dilnoza"><span class="fx-avatar__fallback">DL</span><img src="/yoq.jpg" alt="" onerror="this.hidden=true"><span class="fx-avatar__edit">Özgartiriş</span></span>
<span class="fx-avatar" data-color="blue" role="img" aria-label="Aziz, tasdiqlangan"><span class="fx-avatar__fallback">AZ</span><span class="fx-avatar__badge" aria-hidden="true">✓</span></span>
<span class="fx-avatar-group" data-spread data-max="3" role="group" aria-label="6 iştirokçi"><span class="fx-avatar" data-color="yellow" role="img" aria-label="Guli">GU</span><span class="fx-avatar" data-color="purple" role="img" aria-label="Mister Fox">MF</span><span class="fx-avatar" data-color="green" role="img" aria-label="Tadqiqotçi">TQ</span><span class="fx-avatar" data-color="pink" role="img" aria-label="Sardor">SR</span><button type="button" class="fx-avatar" data-more aria-label="Yana 3 kişini körsatiş">+3</button></span>
<span class="fx-avatar" data-color="blue" role="img" aria-label="Alisher Navoiy"><span class="fx-avatar__fallback" data-person><svg viewBox="0 0 256 256" aria-hidden="true"><use href="#fx-i-person"/></svg></span></span>
<span class="fx-avatar" data-tone="muted" role="img" aria-label="Marie Curie, tarixiy shaxs"><span class="fx-avatar__fallback" data-person><svg viewBox="0 0 256 256" aria-hidden="true"><use href="#fx-i-person"/></svg></span></span>
```

- Qilmang: Holatni faqat nuqta rangi bilan bildirmang — aria-label yoki yonidagi matnda holat söz bilan bölsin.
- Qilmang: Avatarga öz rangingizni bermang — faqat data-color (6 toifa rangi).
- Qilmang: Kulrang avatar va gradient qilmang.

## Orqaga havolasi (`back-link`, beta, 0.23.0 dan)

Ota sahifaga qaytiş havolasi (#89): chevron + qisqa nom. Brauzerning «orqaga»si emas — doim aniq ota sahifaga. RTL'da chevron oğadi.

- Qaçon: Tafsilot sahifasidan röyxatga qaytiş.
- Qaçon emas: Sahifaning töliq yöli → `breadcrumbs`; Matn içidagi havola → `link`
- Klaviatura: Enter — Ota sahifaga ötadi
- Tokenlar: --fx-border-color-focus, --fx-border-width-focus, --fx-ease-standard, --fx-font-size-sm, --fx-font-weight-medium, --fx-motion-base, --fx-motion-fast, --fx-radius-badge, --fx-size-icon-sm, --fx-space-1, --fx-text-primary, --fx-text-secondary

```html
<a class="fx-back-link" href="#">Barça arizalar</a>
```

- Qilmang: Matnga «Orqaga» deb yozmang — ota sahifa nomini yozing («Barça arizalar»).
- Qilmang: history.back() uchun ishlatmang — haqiqiy havola.

## Yuqoriga qaytiş (`backtotop`, beta, 0.29.0 dan)

Uzun sahifa yoki panelda bir ekrandan köp aylantirilgaç pastki burçakda çiqadigan tugma (4.151). Bosilsa boşiga qaytaradi (harakat kamaytirilsa — darhol) va fokusni sahifa boşidagi nişonga ötkazadi — klaviatura foydalanuvçisi pastda qolib ketmaydi. Yaşirin holatda inert. Variantlar: faqat ikon (standart) yoki yozuvli; joylaşuv end · start · center · inline · sticky (içki panel); data-progress — atrofida öqilgan qism halqasi.

- Qaçon: Uzun röyxat, hujjat, faollik lentasi, katalog. Içki aylanuvçi panel (data-target + data-position="sticky").
- Qaçon emas: Sahifadagi bölimlarga sakraş → `toc`; Asosiy amal tugmasi → `fab`
- Variantlar: data-variant=icon|label (standart icon); data-position=end|start|center|inline|sticky (standart end); data-progress=off|on (standart off)
- Klaviatura: Enter — Boşiga qaytaradi, fokus sahifa boşidagi nişonga
- Tokenlar: --fx-bg-brand-solid, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-focus, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-lg, --fx-ease-enter, --fx-ease-exit, --fx-ease-standard, --fx-elevation-3, --fx-font-size-sm, --fx-font-weight-medium, --fx-motion-base, --fx-motion-exit-fast, --fx-motion-fast, --fx-motion-instant, --fx-motion-press, --fx-motion-shift-md, --fx-radius-pill, --fx-size-icon-md, --fx-space-2, --fx-space-4, --fx-space-5, --fx-space-6, --fx-text-primary, --fx-z-raised, --fx-z-sticky

```html
<div id="faollik" style="max-block-size: 12rem; overflow: auto; padding: var(--fx-space-4); border: var(--fx-border-width-default) solid var(--fx-border-color-default); border-radius: var(--fx-radius-surface)">
  <h3 class="fx-heading" data-size="sm" id="faollik-bosh">Mijoz faolligi — Dilnoza Rahimova</h3>
  <ol class="fx-list">
    <li>18 oktyabr, 10:42 — Taklif yuborildi (12 500 000 söm)</li>
    <li>17 oktyabr, 16:05 — Qönğiroq: narx böyiça savollar</li>
    <li>17 oktyabr, 11:20 — Uçraşuv belgilandi</li>
    <li>16 oktyabr, 09:15 — Ariza saytdan keldi</li>
    <li>15 oktyabr, 18:30 — Yangi kontakt qöşildi</li>
    <li>14 oktyabr, 12:00 — Telegram orqali yozdi</li>
    <li>13 oktyabr, 14:45 — Hisob-faktura körildi</li>
    <li>12 oktyabr, 10:10 — Demo körsatildi</li>
    <li>11 oktyabr, 15:25 — Şartnoma loyihasi tayyorlandi</li>
    <li>10 oktyabr, 09:00 — Birinçi aloqa</li>
  </ol>
  <a class="fx-backtotop" href="#faollik-bosh" data-fx-backtotop data-target="#faollik" data-offset="60" data-position="sticky" data-progress>
    <svg class="fx-backtotop__icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 19V5M5 12l7-7 7 7" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg>
    <span class="fx-backtotop__label">Yuqoriga qaytiş</span>
  </a>
</div>
<!-- Butun sahifa uchun: <a class="fx-backtotop" href="#top" data-fx-backtotop data-variant="label">…<span class="fx-backtotop__label">Yuqoriga</span></a> -->
```

- Qilmang: Qisqa sahifaga qöymang — 3 ekrandan uzun bölmasa kerak emas.
- Qilmang: FAB bilan bir burçakka qöymang — data-position="start" bilan ajrating.
- Qilmang: Ikon-tugmani nomsiz qoldirmang — .fx-backtotop__label (körinmasa ham) yoki aria-label.

## Belgi (badge) (`badge`, beta, 0.1.0 dan)

Holat yoki toifa yorliği. Ohanglar: standart, info, brand, success, warning, error; köriniş: yengil (standart), solid, outline; ölçam sm/lg; ikonli; nuqtali (data-marker="dot") va son (data-type="count").

- Qaçon: Holat yoki toifani qisqa yorliq bilan körsatiş.
- Qaçon emas: Bosiladigan filtr → `tabs`
- Variantlar: data-tone=neutral|info|brand|success|warning|error (standart neutral); data-marker=none|dot (standart none); data-type=label|count (standart label); data-color=none|yellow|pink|blue|coral|green|purple (standart none); data-style=subtle|solid|outline (standart subtle); data-size=sm|md|lg (standart md); data-count=
- Tokenlar: --fx-bg-brand-solid, --fx-bg-brand-subtle, --fx-bg-category-blue-subtle, --fx-bg-category-coral-subtle, --fx-bg-category-green-subtle, --fx-bg-category-pink-subtle, --fx-bg-category-purple-subtle, --fx-bg-category-yellow-subtle, --fx-bg-error-solid, --fx-bg-error-subtle, --fx-bg-info-subtle, --fx-bg-muted, --fx-bg-success-subtle, --fx-bg-surface, --fx-bg-warning-subtle, --fx-border-width-default, --fx-ease-standard, --fx-fg-error, --fx-fg-info, --fx-fg-success, --fx-fg-warning, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-motion-base, --fx-radius-circle, --fx-radius-tag, --fx-size-icon-md, --fx-size-status-dot, --fx-space-1, --fx-space-2, --fx-space-3, --fx-text-brand, --fx-text-on-brand, --fx-text-on-error, --fx-text-primary, --fx-text-secondary

```html
<span class="fx-badge">Qoralama</span>
<span class="fx-badge" data-tone="success">Tölangan</span>
<span class="fx-badge" data-tone="error">Muddati ötgan</span>
<span class="fx-badge" data-tone="success" data-marker="dot">Faol</span>
<span class="fx-badge" data-type="count">12</span>
<span class="fx-badge" data-color="purple">RedFox</span>
<span class="fx-badge" data-color="blue">WebFox</span>
<span class="fx-badge" data-tone="info">Yangi</span>
<span class="fx-badge" data-tone="success" data-style="solid">Faol</span>
<span class="fx-badge" data-tone="error" data-style="solid" data-size="sm">Xato</span>
<span class="fx-badge" data-tone="warning" data-style="outline">Kutilmoqda</span>
<span class="fx-badge" data-style="outline" data-size="lg">Qoralama</span>
```

- Qilmang: Holatni faqat rang bilan bildirmang — matn ham bölsin.
- Qilmang: Kategoriya rangiga ma'no yuklamang (xato, ogohlantiriş) — buning uçun data-tone.

## Banner (`banner`, beta, 0.22.0 dan)

Butun kenglikdagi sayt e'loni (texnik işlar, obuna tugadi): holat belgisi (şakl), qisqa matn, bitta havola, yopiş. Yopilgani eslab qolinadi (data-fx-banner="kalit"). Tonlar: neytral, info, warning, error, brand.

- Qaçon: Butun sayt yoki ilova uçun muhim e'lon (texnik işlar, obuna holati, yangi reliz).
- Qaçon emas: Bitta bölim yoki sahifa içidagi xabar → `alert`; Amal natijasi → `toast`
- Variantlar: data-tone=neutral|info|warning|error|brand (standart neutral); data-sticky=on
- Klaviatura: Tab, Enter — Havola va yopiş tugmasi
- Tokenlar: --fx-bg-brand-solid, --fx-bg-error-subtle, --fx-bg-info-subtle, --fx-bg-muted, --fx-bg-warning-subtle, --fx-border-color-focus, --fx-border-width-focus, --fx-ease-standard, --fx-fg-error, --fx-fg-info, --fx-fg-warning, --fx-font-size-lg, --fx-font-size-sm, --fx-font-weight-semibold, --fx-motion-fast, --fx-motion-press, --fx-radius-badge, --fx-radius-circle, --fx-size-min-target, --fx-size-status-dot, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-text-on-brand, --fx-text-primary, --fx-text-secondary

```html
<div class="fx-banner" data-tone="warning" data-fx-banner="obuna-oktyabr" role="region" aria-label="Obuna e'loni">
  <p class="fx-banner__text">Obunangiz 3 kundan keyin tugaydi.</p>
  <a class="fx-banner__action" href="#">Uzaytiriş</a>
  <button class="fx-banner__close" type="button" aria-label="Yopiş">×</button>
</div>
<div class="fx-banner" data-tone="brand"><p class="fx-banner__text">Yangi: grafiklar oilasi çiqdi.</p><a class="fx-banner__action" href="#">Nima yangi</a></div>
```

- Qilmang: Bir sahifada ikkitadan ortiq banner qöymang.
- Qilmang: Bannerda uzun matn yozmang — bir-ikki qator va bitta havola.
- Qilmang: Şaxsiy xabar (amal natijasi) uçun banner emas — toast.

## Ustunli röyxat (`barlist`, beta, 0.23.0 dan)

Har satrda nom, uluş çiziği va qiymat: eng köp trafik manbalari, şaharlar, mahsulotlar. Çiziq nom ortida (standart) yoki nom ostida ingiçka (track). Qiymat har doim matn bilan; uluş CSS özgaruvçisida (--fx-barlist-value) (#60).

- Qaçon: Toifalar böyiça yetakçilarni taqqoslaş (top-N).
- Qaçon emas: Vaqt böyiça özgariş → `chart`; Aniq qiymatlar jadvali → `table`
- Variantlar: data-variant=track (standart fill); data-role=brand|ink|accent|risk|context (standart brand)
- Klaviatura: Tab, Enter — Nom havola bölsa — ötadi
- Tokenlar: --fx-bg-surface, --fx-border-color-focus, --fx-border-width-focus, --fx-control-h-sm, --fx-ease-standard, --fx-font-size-sm, --fx-motion-slow, --fx-radius-badge, --fx-space-1, --fx-space-2, --fx-space-3, --fx-text-primary, --fx-text-secondary, --fx-viz-accent, --fx-viz-brand, --fx-viz-context, --fx-viz-ink, --fx-viz-risk, --fx-viz-track

```html
<ul class="fx-barlist" aria-label="Trafik manbalari">
  <li class="fx-barlist__item" style="--fx-barlist-value: 100%"><div class="fx-barlist__bar"><a class="fx-barlist__label" href="#">Telegram</a></div><span class="fx-barlist__value">4 820</span></li>
  <li class="fx-barlist__item" style="--fx-barlist-value: 64%"><div class="fx-barlist__bar"><a class="fx-barlist__label" href="#">Qidiruv</a></div><span class="fx-barlist__value">3 090</span></li>
  <li class="fx-barlist__item" style="--fx-barlist-value: 38%"><div class="fx-barlist__bar"><a class="fx-barlist__label" href="#">Instagram</a></div><span class="fx-barlist__value">1 830</span></li>
  <li class="fx-barlist__item" style="--fx-barlist-value: 12%" data-role="context"><div class="fx-barlist__bar"><span class="fx-barlist__label">Boşqa</span></div><span class="fx-barlist__value">576</span></li>
</ul>
<ul class="fx-barlist" data-variant="track" aria-label="Viloyatlar böyiça buyurtmalar">
  <li class="fx-barlist__item" style="--fx-barlist-value: 100%"><div class="fx-barlist__bar"><span class="fx-barlist__label">Toşkent</span></div><span class="fx-barlist__value">312</span></li>
  <li class="fx-barlist__item" style="--fx-barlist-value: 54%"><div class="fx-barlist__bar"><span class="fx-barlist__label">Samarqand</span></div><span class="fx-barlist__value">168</span></li>
</ul>
```

- Qilmang: Satrlarni qiymat böyiça kamayiş tartibida bering; 8 tadan köpini «Boşqa» qatoriga yiğing.
- Qilmang: Qiymatni faqat çiziq bilan bermang — raqam har satrda.
- Qilmang: Bir röyxatda 2 tadan köp rol rangini işlatmang (60/30/10).

## Boğlovçi nur (`beam`, beta, 0.29.0 dan)

Integratsiya va ma'lumot oqimi sxemasi (4.70): tugunlar (logo yoki ikon) orasida yumşoq egri çiziq, ustidan yuguruvçi nur yönalişni körsatadi. Boğlanişlar bitta atributda: data-links="sayt>crm, bot>crm, crm>1c" (`<` — teskari yönaliş). Çiziqlarni foxui.js çizadi va ölçam özgarsa qayta hisoblaydi; oxirida kiçik strelka — harakatsiz rejimda ham yönaliş körinadi. Joylaşuv: 3 ustun (manbalar · markaz · natija) yoki data-layout="row".

- Qaçon: Landing sahifasidagi «integratsiyalar» bölimi: qaysi manbadan qayerga ma'lumot oqadi. Onboarding jarayonida ulaniş holatini körsatiş (bot → CRM).
- Qaçon emas: Bosqiçma-bosqiç jarayon (qadamlar) → `steps`; Bosqiçlar böyiça miqdor oqimi → `chart`
- Variantlar: data-links=a>b, c<d; data-size=lg (standart md); data-tone=accent (standart brand); data-layout=row (standart columns)
- Tokenlar: --fx-bg-brand-solid, --fx-bg-surface, --fx-border-color-strong, --fx-border-color-surface, --fx-border-width-default, --fx-control-h-lg, --fx-duration-pulse, --fx-ease-standard, --fx-font-size-xs, --fx-font-weight-regular, --fx-font-weight-semibold, --fx-radius-circle, --fx-shadow-md, --fx-shadow-sm, --fx-size-icon-lg, --fx-size-icon-md, --fx-space-1, --fx-space-3, --fx-space-4, --fx-space-6, --fx-space-8, --fx-text-primary, --fx-text-tertiary, --fx-viz-accent

```html
<div class="fx-beam" data-fx-beam data-links="sayt>crm, bot>crm, dokon>crm, crm>1c, crm>hisobot" role="img" aria-label="Sayt, Telegram bot va dökon arizalari CRM'ga tuşadi; CRM 1C va hisobotlarga uzatadi">
  <div class="fx-beam__col">
    <span class="fx-beam__node" data-node="sayt"><svg viewBox="0 0 256 256" aria-hidden="true"><path d="M128 24a104 104 0 1 0 104 104A104.12 104.12 0 0 0 128 24Zm87.62 96h-39.83c-1.79-36.51-15.85-62.33-27.38-77.6A88.19 88.19 0 0 1 215.62 120ZM96.23 136h63.54c-2.31 41.61-22.23 67.11-31.77 77-9.55-9.9-29.46-35.4-31.77-77Zm0-16c2.31-41.61 22.23-67.11 31.77-77 9.55 9.93 29.46 35.43 31.77 77Zm52.18 93.6c11.53-15.27 25.59-41.09 27.38-77.6h39.83a88.19 88.19 0 0 1-67.21 77.6Z"/></svg><span class="fx-beam__label">Sayt</span></span>
    <span class="fx-beam__node" data-node="bot"><svg viewBox="0 0 256 256" aria-hidden="true"><path d="M227.32 28.68a16 16 0 0 0-15.66-4.08h-.15L19.57 82.84a16 16 0 0 0-2.49 29.8L102 154l41.3 84.87a15.86 15.86 0 0 0 14.44 9.13q.69 0 1.38-.06a15.88 15.88 0 0 0 14-11.51l58.2-191.94v-.15a16 16 0 0 0-4-15.66ZM157.83 232l-.05.14L118 150.56l40.86-40.85a8 8 0 0 0-11.32-11.32L106.69 139.27 25.82 98.22l.14-.05L216 40Z"/></svg><span class="fx-beam__label">Telegram bot</span></span>
    <span class="fx-beam__node" data-node="dokon"><svg viewBox="0 0 256 256" aria-hidden="true"><path d="M232 96a7.89 7.89 0 0 0-.3-2.2l-14.35-50.2A16.07 16.07 0 0 0 202 32H54a16.07 16.07 0 0 0-15.35 11.6L24.31 93.8A7.89 7.89 0 0 0 24 96v16a40 40 0 0 0 16 32v72a8 8 0 0 0 8 8h160a8 8 0 0 0 8-8v-72a40 40 0 0 0 16-32Zm-16 16a24 24 0 0 1-48 0v-8h48Zm-128-8h64v8a24 24 0 0 1-48 0Zm-48 8v-8h48v8a24 24 0 0 1-48 0Zm160 96H56v-57.39a40.53 40.53 0 0 0 8 .79 40 40 0 0 0 32-16 40 40 0 0 0 64 0 40 40 0 0 0 32 16 40.53 40.53 0 0 0 8-.79Z"/></svg><span class="fx-beam__label">Dökon</span></span>
  </div>
  <span class="fx-beam__node" data-node="crm" data-size="lg">CRM<span class="fx-beam__label">Arizalar</span></span>
  <div class="fx-beam__col">
    <span class="fx-beam__node" data-node="1c">1C<span class="fx-beam__label">Buxgalteriya</span></span>
    <span class="fx-beam__node" data-node="hisobot">PDF<span class="fx-beam__label">Hisobot</span></span>
  </div>
</div>
```

- Qilmang: Bitta sxemada 8 dan ortiq boğlaniş bermang — çiziqlar çalkaşadi.
- Qilmang: Nur rangini ma'no uçun işlatmang (masalan, xato) — u faqat yönaliş urğusi.
- Qilmang: Sxemani bezak deb yaşirmang: ildizga qisqa aria-label yozing — nima qayerga oqadi.

## Bento tör (`bento`, beta, 0.28.0 dan)

Landing xususiyatlarini turli ölçamdagi kataklar mozaikasida körsatiş (4.72): data-span bilan 2×1, 1×2, 2×2 va 3×1 kataklar, böş joylar avtomatik töldiriladi (dense). Har katak — ixtiyoriy ikon, sarlavha, qisqa matn va çetigaça çiqadigan media (illyustratsiya yoki mini UI). Butun katak havola bölişi mumkin (.fx-bento__link) — hover'da media biroz kattalaşadi. Telefonda bitta ustun. Effektlar qatlami bilan (data-fx="spotlight") kursor ortidan nur.

- Qaçon: Landingda 4–7 ta xususiyatni vizual mozaika qilib körsatiş. Mahsulotning bir neçta tomonini mini UI parçalari bilan namoyiş qiliş.
- Qaçon emas: Bir xil vazndagi xususiyatlar röyxati → `features`; Rasm galereyasi → `gallery`
- Variantlar: data-cols=2|4 (standart 3); data-span=2x1|1x2|2x2|3x1 (standart 1x1); data-tone=brand|subtle (standart surface); data-media=top (standart bottom)
- Klaviatura: Tab — Havolali kataklar orasida
- Tokenlar: --fx-bg-brand-solid, --fx-bg-brand-subtle, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-focus, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-ease-emphasized, --fx-font-size-lg, --fx-font-size-sm, --fx-font-weight-semibold, --fx-knob-motion-lift, --fx-motion-slow, --fx-radius-control, --fx-radius-surface, --fx-shadow-sm, --fx-size-control-sm, --fx-size-icon-md, --fx-space-12, --fx-space-2, --fx-space-4, --fx-space-6, --fx-text-brand, --fx-text-on-brand, --fx-text-secondary

```html
<ul class="fx-bento" data-fx-effects>
  <li class="fx-bento__item" data-span="2x1" data-fx="spotlight">
    <h3 class="fx-bento__title">8 rang mavzusi, 4 uslub</h3>
    <p class="fx-bento__text">Brendingizga eng yaqin mavzuni tanlang — pastel, neytral va yordamçi ranglar birga keladi.</p>
    <div class="fx-bento__media" aria-hidden="true"><div style="display:flex;gap:var(--fx-space-3)"><span class="fx-avatar" data-size="lg" data-color="purple">A</span><span class="fx-avatar" data-size="lg" data-color="blue">O</span><span class="fx-avatar" data-size="lg" data-color="green">Z</span><span class="fx-avatar" data-size="lg" data-color="yellow">S</span><span class="fx-avatar" data-size="lg" data-color="coral">Q</span><span class="fx-avatar" data-size="lg" data-color="pink">R</span></div></div>
  </li>
  <li class="fx-bento__item" data-span="1x2" data-tone="brand">
    <h3 class="fx-bento__title">Özbekça — boşidan</h3>
    <p class="fx-bento__text">Har şrift ʻ belgisini töğri çiqaradi, qöriqçi buni har build'da tekşiradi.</p>
    <div class="fx-bento__media" aria-hidden="true"><span style="font-size:var(--fx-font-size-display-md);font-weight:var(--fx-font-weight-semibold);letter-spacing:-0.02em">Ö Ğ</span></div>
  </li>
  <li class="fx-bento__item" data-fx="spotlight">
    <span class="fx-bento__icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3v3M12 18v3M3 12h3M18 12h3M6 6l2 2M16 16l2 2M6 18l2-2M16 8l2-2"/></svg></span>
    <h3 class="fx-bento__title"><a class="fx-bento__link" href="#">AI agent uçun MCP</a></h3>
    <p class="fx-bento__text">Agent komponent va qoidalarni özi oladi.</p>
  </li>
  <li class="fx-bento__item" data-fx="spotlight">
    <span class="fx-bento__icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><circle cx="12" cy="12" r="8"/><path d="M12 4a8 8 0 0 0 0 16z" fill="currentColor"/></svg></span>
    <h3 class="fx-bento__title">Yoruğ va qoronği</h3>
    <p class="fx-bento__text">Har mavzu ikkala rejimda kontrast tekşiruvidan ötgan.</p>
  </li>
  <li class="fx-bento__item" data-span="3x1" data-fx="spotlight" data-media="top">
    <div class="fx-bento__media" style="background:var(--fx-bg-subtle)" aria-hidden="true"><div class="fx-code" data-variant="snippet"><pre class="fx-code__pre"><code>npx foxui update</code></pre></div></div>
    <h3 class="fx-bento__title">Bitta buyruq bilan yangilanadi</h3>
    <p class="fx-bento__text">Yangi versiya taklif bölib keladi: nima özgarganini körasiz va özingiz qabul qilasiz.</p>
  </li>
</ul>
```

- Qilmang: Hamma katakni bir xil ölçamda qilmang — unda oddiy tör (features) yetarli.
- Qilmang: Katak içiga uzun matn yozmang — sarlavha va 1–2 qator.
- Qilmang: Bir törda bittadan ortiq brend rangli katak qöymang.

## Fon: naqş va effektlar (`bg`, beta, 0.28.0 dan)

Hero, böş holat va CTA bloklari orqasidagi bezak fon (4.61): nuqtalar, katak yoki qiya çiziqlar — faqat CSS gradient va mask, rasm faylisiz. Çetga qarab yumşoq sönadi (data-fade: markaz — standart, tepa, past, yöq), data-glow bilan tepadan mavzu rangidagi yumşoq nur qöşiladi. Rang matn rangidan aralaştiriladi — yoruğ va qoronği rejimda, har mavzuda özi moslaşadi. Ota blok position: relative boʻlishi kifoya: fon butun maydonni egallaydi, bosilmaydi va matn ostida qoladi. 5-toʻlqin — fon effektlari: don teksturasi (data-texture="noise", 4.62), avrora — mavzu ranglaridan sekin oqadigan doğlar (data-fx="aurora", 4.63), retro perspektiv tör (data-fx="retro-grid", 4.64), meteorlar (data-fx="meteors", 4.65), tepadan tuşuvçi nur (data-fx="rays", 4.67), miltillovçi tör — canvas, data-interactive bilan kursor yonida yonadi (data-fx="flicker", 4.68) va markazdan tarqaluvçi halqalar (data-fx="ripple", 4.69). Harakatli effektlar foxui.js (data-fx-bg) bilan faqat körinişda harakatlanadi; JS yöq, harakat kamaytirilgan yoki data-fx-motion="calm|none" — statik kadr.

- Qaçon: Landing hero orqasi — sahifa tekis va böş körinmasin. Böş holat, 404 yoki CTA bloki ortida yengil tekstura. Landing hero, işga tuşiriş, «yangi tarif» bannerida harakatli fon (avrora, nur, meteor) — bitta urğu sifatida. Integratsiya yoki bot ulangan holat ortida halqa tölqinlari (ripple).
- Qaçon emas: Kontent kartasi foni → `card`; Rasm yoki illyustratsiya → `image`; Kursorga ta'sirlanuvçi zarraçalar → `particles`; Ikki element orasidagi oqim çiziği → `beam`
- Variantlar: data-pattern=dots|grid|lines (standart none); data-size=sm|lg (standart md); data-fade=top|bottom|none (standart center); data-tone=strong|brand (standart subtle); data-on=brand (standart surface); data-glow=on (standart off); data-texture=noise (standart none); data-fx=aurora|retro-grid|meteors|rays|flicker|ripple (standart none); data-interactive=on (standart off); data-count=N (standart 8)
- Tokenlar: --fx-bg-brand-solid, --fx-bg-category-blue, --fx-bg-category-pink, --fx-border-width-default, --fx-border-width-focus, --fx-duration-pulse, --fx-ease-exit, --fx-ease-standard, --fx-radius-circle, --fx-radius-pill, --fx-space-1, --fx-space-12, --fx-space-4, --fx-space-6, --fx-text-on-brand, --fx-text-primary, --fx-viz-accent

```html
<div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));gap:var(--fx-space-4)">
  <div style="position:relative;isolation:isolate;display:grid;place-items:center;min-block-size:14rem;border:var(--fx-border-width-default) solid var(--fx-border-color-default);border-radius:var(--fx-radius-surface)"><div class="fx-bg" data-pattern="dots" aria-hidden="true"></div><strong>Nuqtalar</strong></div>
  <div style="position:relative;isolation:isolate;display:grid;place-items:center;min-block-size:14rem;border:var(--fx-border-width-default) solid var(--fx-border-color-default);border-radius:var(--fx-radius-surface)"><div class="fx-bg" data-pattern="grid" data-glow aria-hidden="true"></div><strong>Katak + nur</strong></div>
  <div style="position:relative;isolation:isolate;display:grid;place-items:center;min-block-size:14rem;border:var(--fx-border-width-default) solid var(--fx-border-color-default);border-radius:var(--fx-radius-surface)"><div class="fx-bg" data-pattern="lines" data-fade="bottom" aria-hidden="true"></div><strong>Çiziqlar</strong></div>
</div>
<div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));gap:var(--fx-space-4);margin-block-start:var(--fx-space-4)">
  <div style="position:relative;isolation:isolate;overflow:hidden;display:grid;place-items:center;align-content:center;gap:var(--fx-space-1);min-block-size:14rem;padding:var(--fx-space-6);border:var(--fx-border-width-default) solid var(--fx-border-color-default);border-radius:var(--fx-radius-surface);text-align:center"><div class="fx-bg" data-texture="noise" data-glow aria-hidden="true"></div><strong>Don + nur</strong><span style="color:var(--fx-text-secondary);font-size:var(--fx-font-size-sm)">Tekis gradient «jonlanadi»</span></div>
  <div style="position:relative;isolation:isolate;overflow:hidden;display:grid;place-items:center;align-content:center;gap:var(--fx-space-1);min-block-size:14rem;padding:var(--fx-space-6);border:var(--fx-border-width-default) solid var(--fx-border-color-default);border-radius:var(--fx-radius-surface);text-align:center"><div class="fx-bg" data-fx="aurora" data-texture="noise" data-fx-bg aria-hidden="true"></div><strong>Avrora</strong><span style="color:var(--fx-text-secondary);font-size:var(--fx-font-size-sm)">Yangi tarif — 1-noyabrdan</span></div>
  <div style="position:relative;isolation:isolate;overflow:hidden;display:grid;place-items:center;align-content:center;gap:var(--fx-space-1);min-block-size:14rem;padding:var(--fx-space-6);border:var(--fx-border-width-default) solid var(--fx-border-color-default);border-radius:var(--fx-radius-surface);text-align:center"><div class="fx-bg" data-fx="retro-grid" data-tone="brand" data-fx-bg aria-hidden="true"></div><strong>Retro tör</strong><span style="color:var(--fx-text-secondary);font-size:var(--fx-font-size-sm)">Hackathon 2026 · Toşkent</span></div>
  <div style="position:relative;isolation:isolate;overflow:hidden;display:grid;place-items:center;align-content:center;gap:var(--fx-space-1);min-block-size:14rem;padding:var(--fx-space-6);border:var(--fx-border-width-default) solid var(--fx-border-color-default);border-radius:var(--fx-radius-surface);text-align:center"><div class="fx-bg" data-fx="meteors" data-count="10" data-fx-bg aria-hidden="true"></div><strong>Meteorlar</strong><span style="color:var(--fx-text-secondary);font-size:var(--fx-font-size-sm)">Işga tuşiriş kuni</span></div>
  <div style="position:relative;isolation:isolate;overflow:hidden;display:grid;place-items:center;align-content:center;gap:var(--fx-space-1);min-block-size:14rem;padding:var(--fx-space-6);border:var(--fx-border-width-default) solid var(--fx-border-color-default);border-radius:var(--fx-radius-surface);text-align:center"><div class="fx-bg" data-fx="rays" data-fx-bg aria-hidden="true"></div><strong>Nur</strong><span style="color:var(--fx-text-secondary);font-size:var(--fx-font-size-sm)">FoxUI 1.0 çiqdi</span></div>
  <div style="position:relative;isolation:isolate;overflow:hidden;display:grid;place-items:center;align-content:center;gap:var(--fx-space-1);min-block-size:14rem;padding:var(--fx-space-6);border:var(--fx-border-width-default) solid var(--fx-border-color-default);border-radius:var(--fx-radius-surface);text-align:center"><div class="fx-bg" data-fx="flicker" data-interactive data-size="sm" data-fx-bg aria-hidden="true"></div><strong>Miltillovçi tör</strong><span style="color:var(--fx-text-secondary);font-size:var(--fx-font-size-sm)">Kursorni olib keling</span></div>
  <div style="position:relative;isolation:isolate;overflow:hidden;display:grid;place-items:center;align-content:center;gap:var(--fx-space-1);min-block-size:14rem;padding:var(--fx-space-6);border:var(--fx-border-width-default) solid var(--fx-border-color-default);border-radius:var(--fx-radius-surface);text-align:center"><div class="fx-bg" data-fx="ripple" data-fade="none" data-fx-bg aria-hidden="true"></div><span class="fx-avatar" data-size="lg" data-color="blue" role="img" aria-label="Telegram bot">TB</span><strong>Halqalar</strong><span style="color:var(--fx-text-secondary);font-size:var(--fx-font-size-sm)">Bot ulandi</span></div>
</div>
```

- Qilmang: Naqşni matn ustida kuçli qilmang — öqilişi buzilmasin (tone="strong" faqat böş maydonda).
- Qilmang: Bitta sahifada har bölimga naqş qöymang — hero va yakuniy CTA yetarli.
- Qilmang: Fonni ma'no uçun işlatmang — u faqat bezak (aria-hidden).
- Qilmang: Bitta sahifada bittadan ortiq harakatli fon qöymang — hero yetarli; matn ostida harakat öqişni qiyinlaştiradi.
- Qilmang: Harakatli fonni ma'lumot kartalari, jadval yoki forma orqasiga qöymang.

## Tarif va hisob-kitob (`billing`, beta, 0.28.0 dan)

Tarif va hisob-kitob sahifasi (naqş): joriy reja (narx sömda, keyingi tölov sanasi, avtomatik uzaytiriş), foydalaniş meter'lari (çegara yaqin — ogohlantiriş), tölov usuli (karta turi, •••• 4417, muddat) va hisob-fakturalar jadvali (PDF). SaaS sozlamalari uçun — FoxUI obunasining özi ham şu naqşda.

- Qaçon: SaaS sozlamalarida obuna, limit va tölovlar sahifasi. Mijoz kabinetida «Mening tarifim» bölimi.
- Qaçon emas: Tariflarni soliştirib tanlaş (marketing sahifasi) → `card`; Xarid jarayoni — karta va manzil kiritiş → `checkout`
- Variantlar: data-state=expiring (standart —)
- Klaviatura: Tab — Amallar, karta tugmalari va PDF havolalari böylab
- Tokenlar: --fx-bg-muted, --fx-bg-surface, --fx-border-color-default, --fx-border-color-strong, --fx-border-color-surface, --fx-border-width-default, --fx-control-h-md, --fx-fg-warning, --fx-font-size-display-sm, --fx-font-size-lg, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-radius-badge, --fx-radius-control, --fx-radius-surface, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-space-6, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<div class="fx-billing">
  <div class="fx-billing__grid">
    <section class="fx-billing__panel fx-billing__plan" aria-labelledby="bl-p">
      <p class="fx-billing__eyebrow">Joriy tarif</p>
      <h2 class="fx-billing__name" id="bl-p">Biznes <span class="fx-badge" data-tone="success" data-marker="dot">Faol</span></h2>
      <p class="fx-billing__price"><span class="fx-billing__amount">11 880 000 söm</span><span class="fx-billing__period">/ yil</span></p>
      <ul class="fx-billing__meta"><li>Keyingi tölov: <b>17.10.2027</b> — avtomatik uzaytiriladi</li><li>Oyiga hisoblaganda: <b>990 000 söm</b> (2 oy tejaldi)</li></ul>
      <div class="fx-billing__actions"><button class="fx-btn" type="button" data-variant="primary">Tarifni özgartiriş</button><button class="fx-btn" type="button" data-variant="ghost">Obunani bekor qiliş</button></div>
    </section>
    <section class="fx-billing__panel" aria-labelledby="bl-u">
      <h2 class="fx-billing__title" id="bl-u">Foydalaniş</h2>
      <div class="fx-billing__usage">
      <div class="fx-meter" data-size="sm" style="--fx-meter-value: 50%">
        <div class="fx-meter__head"><span class="fx-meter__label" id="bl-m1">Foydalanuvçilar</span><span class="fx-meter__value">5 / 10</span></div>
        <div class="fx-meter__track" role="meter" aria-labelledby="bl-m1" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100" aria-valuetext="5 / 10"><div class="fx-meter__fill"></div></div>
      </div>
      <div class="fx-meter" data-size="sm" style="--fx-meter-value: 34%">
        <div class="fx-meter__head"><span class="fx-meter__label" id="bl-m2">Mijozlar yozuvlari</span><span class="fx-meter__value">8 420 / 25 000</span></div>
        <div class="fx-meter__track" role="meter" aria-labelledby="bl-m2" aria-valuenow="34" aria-valuemin="0" aria-valuemax="100" aria-valuetext="8 420 / 25 000"><div class="fx-meter__fill"></div></div>
      </div>
      <div class="fx-meter" data-tone="warning" data-size="sm" style="--fx-meter-value: 93%">
        <div class="fx-meter__head"><span class="fx-meter__label" id="bl-m3">SMS xabarlar (oktabr)</span><span class="fx-meter__value">1 860 / 2 000 — 93 %</span></div>
        <div class="fx-meter__track" role="meter" aria-labelledby="bl-m3" aria-valuenow="93" aria-valuemin="0" aria-valuemax="100" aria-valuetext="1 860 / 2 000 — 93 %"><div class="fx-meter__fill"></div></div>
      </div>
      <div class="fx-meter" data-size="sm" style="--fx-meter-value: 32%">
        <div class="fx-meter__head"><span class="fx-meter__label" id="bl-m4">Fayl xotirasi</span><span class="fx-meter__value">3,2 GB / 10 GB</span></div>
        <div class="fx-meter__track" role="meter" aria-labelledby="bl-m4" aria-valuenow="32" aria-valuemin="0" aria-valuemax="100" aria-valuetext="3,2 GB / 10 GB"><div class="fx-meter__fill"></div></div>
      </div>
      </div>
    </section>
  </div>
  <section class="fx-billing__section" aria-labelledby="bl-c">
    <h2 class="fx-billing__title" id="bl-c">Tölov usuli</h2>
    <div class="fx-billing__grid">
      <div class="fx-billing__method"><span class="fx-billing__brand" aria-hidden="true">UZCARD</span><span class="fx-billing__card"><span class="fx-billing__number"><span class="fx-sr-only">Uzcard, oxirgi raqamlari </span>•••• 4417</span><span class="fx-billing__exp">Amal qiliş muddati 09/28</span></span><span class="fx-badge" data-size="sm">Asosiy</span><button class="fx-btn" type="button" data-variant="ghost" data-size="sm">Özgartiriş</button></div>
      <div class="fx-billing__method" data-state="expiring"><span class="fx-billing__brand" aria-hidden="true">HUMO</span><span class="fx-billing__card"><span class="fx-billing__number"><span class="fx-sr-only">Humo, oxirgi raqamlari </span>•••• 0932</span><span class="fx-billing__exp">Muddati tugayapti: 11/26</span></span><button class="fx-btn" type="button" data-variant="ghost" data-size="sm">Yangilaş</button></div>
    </div>
    <button class="fx-btn fx-billing__add" type="button" data-size="sm">+ Karta qöşiş</button>
  </section>
  <section class="fx-billing__section" aria-labelledby="bl-i">
    <h2 class="fx-billing__title" id="bl-i">Hisob-fakturalar</h2>
    <div class="fx-table-scroll"><table class="fx-table fx-billing__invoices">
      <thead><tr><th scope="col">Sana</th><th scope="col">Raqam</th><th scope="col">Davr</th><th scope="col" data-type="num">Summa</th><th scope="col">Holat</th><th scope="col"><span class="fx-sr-only">Yuklab oliş</span></th></tr></thead>
      <tbody>
      <tr><td>17.10.2026</td><td><span class="fx-code-inline">HF-2026-0417</span></td><td>17.10.2026 – 16.10.2027</td><td data-type="num">11 880 000 söm</td><td data-type="nowrap"><span class="fx-status" data-tone="success">Tölangan</span></td><td><a class="fx-link" href="#" aria-label="HF-2026-0417 hisob-fakturasini PDF yuklab oliş">PDF</a></td></tr>
      <tr><td>03.09.2026</td><td><span class="fx-code-inline">HF-2026-0311</span></td><td>Qöşimça 2 000 SMS</td><td data-type="num">240 000 söm</td><td data-type="nowrap"><span class="fx-status" data-tone="success">Tölangan</span></td><td><a class="fx-link" href="#" aria-label="HF-2026-0311 hisob-fakturasini PDF yuklab oliş">PDF</a></td></tr>
      <tr><td>17.10.2025</td><td><span class="fx-code-inline">HF-2025-0388</span></td><td>17.10.2025 – 16.10.2026</td><td data-type="num">9 900 000 söm</td><td data-type="nowrap"><span class="fx-status" data-tone="success">Tölangan</span></td><td><a class="fx-link" href="#" aria-label="HF-2025-0388 hisob-fakturasini PDF yuklab oliş">PDF</a></td></tr>
      <tr><td>17.09.2025</td><td><span class="fx-code-inline">HF-2025-0352</span></td><td>Oylik, sentabr</td><td data-type="num">990 000 söm</td><td data-type="nowrap"><span class="fx-status" data-tone="error">Qaytarilgan</span></td><td><a class="fx-link" href="#" aria-label="HF-2025-0352 hisob-fakturasini PDF yuklab oliş">PDF</a></td></tr>
      </tbody>
    </table></div>
  </section>
</div>
```

- Qilmang: Narxni oyma-oy yaşirib, faqat yillik summani körsatmang — «oyiga hisoblaganda» qatori işonç beradi.
- Qilmang: Karta raqamini töliq körsatmang — faqat oxirgi 4 raqam va muddat.
- Qilmang: Çegaraga yaqin limitni faqat rang bilan bildirmang — foiz va söz (93 %) yozilsin.
- Qilmang: «Obunani bekor qiliş»ni yaşirmang yoki asosiy tugma qilmang — ikkinçi darajali, lekin körinadigan bölsin.

## Bleed (manfiy çet) (`bleed`, beta, 0.29.0 dan)

Içki elementni ota konteyner içki çetidan (padding) çiqarib, töliq enga yoyadi (4.19): karta içidagi jadval, rasm, ajratuvçi. .fx-card va .fx-container içida çet miqdori özi aniqlanadi; boşqa joyda data-space (ota içki çeti) bilan. Tomon: inline (standart) · top / bottom (rasm karta tepasida yoki pastida, yoyi kartaga mos) · all · start · end · viewport (ekran enigaça).

- Qaçon: Karta içida jadval yoki röyxat çekkadan çekkaga çizilişi kerak. Karta tepasidagi rasm (media) yoki bölim orasidagi töliq en çiziq. Landing: konteyner içidagi bitta banner ekran enigaça.
- Qaçon emas: Kartaning standart rasm qismi → `card`; Butun sahifa bölimi töliq en → `layout`
- Variantlar: data-side=inline|top|bottom|all|start|end|viewport (standart inline); data-space=3|4|5|6|8 (standart 5)
- Tokenlar: --fx-border-width-default, --fx-radius-surface, --fx-space-3, --fx-space-4, --fx-space-5, --fx-space-6, --fx-space-8

```html
<article class="fx-card" style="max-inline-size: 26rem">
  <div class="fx-bleed" data-side="top">
    <img alt="Ombor içki körinişi" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20640%20260%22%3E%3Crect%20width%3D%22640%22%20height%3D%22260%22%20fill%3D%22%23d9cbb8%22/%3E%3Ctext%20x%3D%22320%22%20y%3D%22140%22%20font-family%3D%22sans-serif%22%20font-size%3D%2236%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EOmbor%20%E2%84%962%3C/text%3E%3C/svg%3E">
  </div>
  <h3 class="fx-card__title">Ombor № 2 — Sergeli</h3>
  <div class="fx-bleed">
    <table class="fx-table">
      <thead><tr><th>Mahsulot</th><th>Qoldiq</th></tr></thead>
      <tbody>
        <tr><td>Paxta tolasi</td><td>1 240 kg</td></tr>
        <tr><td>Ip kalava</td><td>380 dona</td></tr>
      </tbody>
    </table>
  </div>
  <p class="fx-text" data-tone="secondary">Oxirgi inventarizatsiya: 12 oktyabr</p>
</article>
```

- Qilmang: Ota içki çetidan (padding) katta çet bermang — element kartadan taşqariga çiqib ketadi (data-space ota bilan bir xil bölsin).
- Qilmang: viewport tomonini ota overflow-x: clip bölmagan joyda işlatmang — gorizontal scroll çiqadi.
- Qilmang: Bleed'ni oraliq örniga işlatmang — u faqat çetga tegiş uçun.

## Blog röyxati (`blog`, beta, 0.29.0 dan)

Blog boş sahifasi yoki bölimi (4.178): sarlavha, toifa filtri (fx-chip), ixtiyoriy «Tanlangan» katta maqola (data-featured — töliq kenglikda, rasm yonida), kartalar töri va sahifalaş (fx-pagination). Har karta: muqova (rasm yoki pastel fon), toifa havolasi, sarlavha (havola butun kartani bosiladigan qiladi — toifa havolasi ustida qoladi), 3 qatorgaça qisqartirilgan matn, muallif, sana va öqiş vaqti. data-layout: grid (standart) yoki list (rasm çapda — arxiv va qidiruv sahifasi). Maqolaning özi — fx-article.

- Qaçon: Blog boş sahifasi, toifa va muallif arxivi. Landing'da «Sönggi maqolalar» bölimi (3 karta, filtrsiz).
- Qaçon emas: Maqolaning özi → `article`; Versiyalar va özgarişlar lentasi → `changelogfeed`
- Variantlar: data-layout=grid|list (standart grid); data-featured=on (standart off); data-color=yellow|pink|blue|coral|green|purple (standart none)
- Klaviatura: Tab — Filtr, keyin har karta (toifa va sarlavha), oxirida sahifalaş; Enter — Maqolani oçadi
- Tokenlar: --fx-bg-category-blue, --fx-bg-category-coral, --fx-bg-category-green, --fx-bg-category-pink, --fx-bg-category-purple, --fx-bg-category-yellow, --fx-bg-muted, --fx-border-color-default, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-dialog-width, --fx-ease-standard, --fx-font-adjust-display, --fx-font-family-display, --fx-font-size-display-sm, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xl, --fx-font-size-xs, --fx-font-weight-semibold, --fx-line-height-snug, --fx-line-height-tight, --fx-motion-slow, --fx-radius-surface, --fx-space-10, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-6, --fx-space-8, --fx-text-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<section class="fx-blog" aria-labelledby="bl-t">
  <header class="fx-blog__head"><p class="fx-blog__eyebrow">Blog</p><h2 class="fx-blog__title" id="bl-t">Dizayn tizimlari haqida özbekça</h2><p class="fx-blog__text">Har payşanba: amaliy maqolalar, reliz tafsilotlari va mijozlar tajribasi.</p></header>
  <ul class="fx-blog__filters" aria-label="Toifalar">
    <li><button class="fx-chip" type="button" aria-pressed="true">Hammasi</button></li>
    <li><button class="fx-chip" type="button" aria-pressed="false">Qöllanma</button></li>
    <li><button class="fx-chip" type="button" aria-pressed="false">Relizlar</button></li>
    <li><button class="fx-chip" type="button" aria-pressed="false">Mijoz tajribasi</button></li>
  </ul>
  <ul class="fx-blog__list">
    <li class="fx-blog__post" data-featured><div class="fx-blog__cover" data-color="purple" aria-hidden="true"></div><div class="fx-blog__content"><a class="fx-blog__category" href="#">Qöllanma</a><h3 class="fx-blog__post-title"><a class="fx-blog__link" href="#">Tokenlar bilan mavzu yasaş: bitta HEX'dan butun palitragaça</a></h3><p class="fx-blog__excerpt">Brend rangingizni bergan holda kontrast qöriqçisidan ötadigan yoruğ va qoronği mavzuni qanday oliş mumkin — qadamma-qadam, kod bilan.</p><div class="fx-blog__byline"><span class="fx-avatar" data-size="sm" data-color="green" aria-hidden="true">DY</span><span class="fx-blog__author"><b>Dilnoza Yusupova</b><span><time datetime="2026-10-16">16-oktabr 2026</time> · 9 daq öqiş</span></span></div></div></li>
    <li class="fx-blog__post"><div class="fx-blog__cover" data-color="yellow" aria-hidden="true"></div><div class="fx-blog__content"><a class="fx-blog__category" href="#">Relizlar</a><h3 class="fx-blog__post-title"><a class="fx-blog__link" href="#">0.28: 100 ta yangi naqş va «Işxona»</a></h3><p class="fx-blog__excerpt">Tipografiya rollari, z-qatlamlar, narx jadvali, xato sahifalari va yana 96 ta band — nima özgardi va qanday yangilaş kerak.</p><div class="fx-blog__byline"><span class="fx-avatar" data-size="sm" data-color="purple" aria-hidden="true">RS</span><span class="fx-blog__author"><b>Rahim Sadiy</b><span><time datetime="2026-10-14">14-oktabr 2026</time> · 5 daq öqiş</span></span></div></div></li>
    <li class="fx-blog__post"><div class="fx-blog__cover" data-color="blue" aria-hidden="true"></div><div class="fx-blog__content"><a class="fx-blog__category" href="#">Mijoz tajribasi</a><h3 class="fx-blog__post-title"><a class="fx-blog__link" href="#">«Ipak Yöli Savdo» admin panelini 3 haftada qanday yangiladi</a></h3><p class="fx-blog__excerpt">Eski Bootstrap'dan FoxUI'ga ötiş: jadval, filtrlar va forma — qaysi qismi oson, qaysi biri vaqt oldi.</p><div class="fx-blog__byline"><span class="fx-avatar" data-size="sm" data-color="coral" aria-hidden="true">AK</span><span class="fx-blog__author"><b>Aziz Karimov</b><span><time datetime="2026-10-09">9-oktabr 2026</time> · 7 daq öqiş</span></span></div></div></li>
    <li class="fx-blog__post"><div class="fx-blog__cover" data-color="green" aria-hidden="true"></div><div class="fx-blog__content"><a class="fx-blog__category" href="#">Qöllanma</a><h3 class="fx-blog__post-title"><a class="fx-blog__link" href="#">Klaviatura bilan işlaş: har komponentda nimani tekşiramiz</a></h3><p class="fx-blog__excerpt">Tab tartibi, roving tabindex, Esc va fokusni qaytariş — WAI-ARIA naqşlari böyiça qisqa röyxat.</p><div class="fx-blog__byline"><span class="fx-avatar" data-size="sm" data-color="blue" aria-hidden="true">JT</span><span class="fx-blog__author"><b>Jasur Toshpoʻlatov</b><span><time datetime="2026-10-02">2-oktabr 2026</time> · 6 daq öqiş</span></span></div></div></li>
  </ul>
  <nav class="fx-blog__pager fx-pagination" aria-label="Blog sahifalari"><a class="fx-pagination__page" aria-disabled="true" aria-label="Oldingi">‹</a><a class="fx-pagination__page" href="#" aria-current="page">1</a><a class="fx-pagination__page" href="#">2</a><a class="fx-pagination__page" href="#">3</a><a class="fx-pagination__page" href="#" aria-label="Keyingi">›</a></nav>
</section>
```

- Qilmang: Kartaga içma-iç köp havola qöymang — sarlavha havolasi butun kartani qoplaydi; faqat toifa havolasi ustida qoladi.
- Qilmang: Muqovasiz kartani böş joy bilan qoldirmang — pastel fon (data-color) yoki toifa rasmi qöying, tör tekis tursin.
- Qilmang: Sana va öqiş vaqtini yaşirmang — öquvçi maqola eskirganmi, qança vaqt olişini birinçi qaraydi.

## Doska (kanban) (`board`, beta, 0.22.0 dan)

Holat ustunlari va kartalar. Karta siçqonça bilan yoki klaviaturada sudraladi (Space — kötariş, strelkalar — suriş, Space — qöyiş, Esc — bekor). WIP çegarasi oşsa — ogohlantiriş; ustun yiğiladi (tor vertikal). Har köçişda fx-board-move hodisasi.

- Qaçon: Oqim bosqiçlari böyiça işlar (vazifa, savdo voronkasi, qabul).
- Qaçon emas: Köp maydonli taqqoslaş → `table`; Uzun röyxat va ommaviy amallar → `row`
- Variantlar: data-collapsed=
- Klaviatura: Enter (kartada) — Kartani oçadi — sarlavhadagi havola (butun karta bosiladi); Space — Kartani kötaradi / qöyadi; ← → — Boşqa ustunga; ↑ ↓ — Ustun içida tartib; Esc — Bekor qiladi
- Tokenlar: --fx-bg-brand-subtle, --fx-bg-subtle, --fx-bg-surface, --fx-bg-warning-subtle, --fx-border-color-focus, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-lg, --fx-control-h-sm, --fx-ease-standard, --fx-fg-warning, --fx-font-adjust-mono, --fx-font-family-mono, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-regular, --fx-font-weight-semibold, --fx-knob-motion-press, --fx-motion-fast, --fx-radius-badge, --fx-radius-control, --fx-radius-surface, --fx-shadow-lg, --fx-shadow-md, --fx-shadow-sm, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-text-primary, --fx-text-tertiary

```html
<div class="fx-board" data-fx-board>
  <section class="fx-board__col" aria-label="Qilinadi"><header class="fx-board__head"><span class="fx-flow" data-state="todo" aria-hidden="true"></span><span class="fx-board__title">Qilinadi</span><span class="fx-board__count"></span></header><ul class="fx-board__list"><li class="fx-board__card"><div class="fx-board__top"><span>FX-221</span><span class="fx-prio" data-level="2" role="img" aria-label="Ustuvorlik"><i></i></span></div><p class="fx-board__title"><a href="#karta-1">Çat namunasi: composer</a></p><div class="fx-board__foot"><span class="fx-badge" data-color="blue">Komponent</span><span class="fx-avatar" data-size="sm" data-color="yellow" role="img" aria-label="Guli">GU</span></div></li><li class="fx-board__card"><div class="fx-board__top"><span>FX-224</span><span class="fx-prio" data-level="1" role="img" aria-label="Ustuvorlik"><i></i></span></div><p class="fx-board__title"><a href="#karta-2">Sana tanlagiç</a></p><div class="fx-board__foot"><span class="fx-badge" data-color="blue">Komponent</span><span class="fx-avatar" data-size="sm" data-color="blue" role="img" aria-label="Sardor">SA</span></div></li></ul></section>
  <section class="fx-board__col" data-wip="2" aria-label="Jarayonda"><header class="fx-board__head"><span class="fx-flow" data-state="progress" aria-hidden="true"></span><span class="fx-board__title">Jarayonda</span><span class="fx-board__count"></span></header><ul class="fx-board__list"><li class="fx-board__card"><div class="fx-board__top"><span>FX-214</span><span class="fx-prio" data-level="urgent" role="img" aria-label="Ustuvorlik"><i></i></span></div><p class="fx-board__title"><a href="#karta-3">Grafik tooltipi klaviaturada</a></p><div class="fx-board__foot"><span class="fx-badge" data-color="blue">Komponent</span><span class="fx-avatar" data-size="sm" data-color="purple" role="img" aria-label="Mister Fox">MI</span></div></li><li class="fx-board__card"><div class="fx-board__top"><span>FX-218</span><span class="fx-prio" data-level="3" role="img" aria-label="Ustuvorlik"><i></i></span></div><p class="fx-board__title"><a href="#karta-4">Dashboard namunasi</a></p><div class="fx-board__foot"><span class="fx-badge" data-color="blue">Sayt</span><span class="fx-avatar" data-size="sm" data-color="green" role="img" aria-label="Fox UI">FO</span></div></li><li class="fx-board__card"><div class="fx-board__top"><span>FX-219</span><span class="fx-prio" data-level="2" role="img" aria-label="Ustuvorlik"><i></i></span></div><p class="fx-board__title"><a href="#karta-5">Doska: klaviatura bilan sudraş</a></p><div class="fx-board__foot"><span class="fx-badge" data-color="blue">Komponent</span><span class="fx-avatar" data-size="sm" data-color="yellow" role="img" aria-label="Guli">GU</span></div></li></ul></section>
  <section class="fx-board__col" aria-label="Bajarildi" data-collapsed><header class="fx-board__head"><span class="fx-flow" data-state="done" aria-hidden="true"></span><span class="fx-board__title">Bajarildi</span><span class="fx-board__count">12</span></header><ul class="fx-board__list"></ul></section>
</div>
```

- Qilmang: Kartaga 2 qatordan uzun sarlavha va köp yorliq qöymang — tafsilot panelda.
- Qilmang: Ustunlar 7 tadan oşmasin — guruhlang yoki röyxat körinişi.

## Yöl satri (`breadcrumbs`, beta, 0.13.0 dan)

Breadcrumbs: ota bölimlar xira havola, joriy sahifa asosiy rangda (aria-current), ajratgiç «/». Uzun oxirgi nom «…» bilan. Ortiqça bölimlar «…» tugmasi ostidagi menyuda (2.100); ota bölimni almaştirgiç — tugma + menyu (2.101).

- Qaçon: Içma-iç sahifalarda qayerdaligini körsatiş.
- Qaçon emas: Bir darajali sahifalar → `nav`
- Klaviatura: Tab, Enter — Ota bölimga ötadi; Enter, Space, ↑ ↓ — «…» yoki almaştirgiç menyusini oçadi va band tanlaydi (fx-menu)
- Tokenlar: --fx-bg-muted, --fx-bg-pressed, --fx-border-color-focus, --fx-border-color-strong, --fx-border-width-default, --fx-border-width-focus, --fx-ease-standard, --fx-font-size-sm, --fx-font-weight-medium, --fx-motion-fast, --fx-radius-badge, --fx-size-icon-sm, --fx-space-1, --fx-space-2, --fx-text-primary, --fx-text-tertiary

```html
<nav aria-label="Yöl"><ol class="fx-breadcrumbs">
  <li><a href="#">Mijozlar</a></li>
  <li><a href="#">Obunaçilar</a></li>
  <li><span aria-current="page">Aziz Karimov</span></li>
</ol></nav>

<nav aria-label="Yöl (qisqartirilgan)"><ol class="fx-breadcrumbs">
  <li><a href="#">Boş sahifa</a></li>
  <li><button class="fx-breadcrumbs__more" popovertarget="bc-more" aria-haspopup="menu" aria-label="Yaşirin bölimlar">…</button>
    <div class="fx-menu" id="bc-more" role="menu" popover data-fx-menu>
      <a class="fx-menu__item" role="menuitem" href="#">Mijozlar</a>
      <a class="fx-menu__item" role="menuitem" href="#">Obunaçilar</a>
    </div></li>
  <li><a href="#">2026</a></li>
  <li><button class="fx-breadcrumbs__switch" popovertarget="bc-sw" aria-haspopup="menu">Arizalar <svg viewBox="0 0 16 16" aria-hidden="true"><path d="m4 6 4 4 4-4" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
    <div class="fx-menu" id="bc-sw" role="menu" popover data-fx-menu>
      <a class="fx-menu__item" role="menuitem" href="#">Arizalar</a>
      <a class="fx-menu__item" role="menuitem" href="#">Buyurtmalar</a>
      <a class="fx-menu__item" role="menuitem" href="#">Tölovlar</a>
    </div></li>
  <li><span aria-current="page">Aziz Karimov</span></li>
</ol></nav>
```

- Qilmang: Joriy sahifani havola qilmang.
- Qilmang: «…» ostiga joriy sahifani yaşirmang — u doim körinadi.

## Ommaviy panel (`bulkbar`, beta, 0.22.0 dan)

Tanlov bölsa pastda markazda suzib çiqadigan panel: son, summa (ixtiyoriy), amallar, ×. Esc tanlovni bekor qiladi.

- Qaçon: Röyxat yoki jadvalda bir neçta qator tanlanganda amallar.
- Qaçon emas: Jadval içidagi tepadagi panel → `table`
- Klaviatura: Esc — Tanlovni bekor qiladi
- Tokenlar: --fx-bg-page, --fx-border-width-default, --fx-ease-exit, --fx-font-size-sm, --fx-font-weight-semibold, --fx-motion-exit-fast, --fx-motion-shift-md, --fx-radius-overlay, --fx-shadow-lg, --fx-size-icon-sm, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-8, --fx-text-primary

```html
<details class="fx-rows__group" open><summary><span class="fx-flow" data-state="progress" aria-hidden="true"></span>Jarayonda <span class="fx-rows__count">2</span></summary>
<ul class="fx-rows" id="bb-list">
  <li class="fx-row"><span class="fx-row__lead"><span class="fx-prio" data-level="urgent" role="img" aria-label="Şoşilinç"><i></i></span><label class="fx-check fx-row__sel"><input type="checkbox" aria-label="Tanlaş: FX-214"><span class="fx-check__box"></span></label></span><span class="fx-row__id">FX-214</span><span class="fx-flow" data-state="progress" role="img" aria-label="Jarayonda"></span><a class="fx-row__title" href="#">Grafik tooltipi klaviaturada</a><span class="fx-row__end"><span class="fx-badge" data-color="blue">Komponent</span><span class="fx-row__due" data-tone="late">Keça</span><span class="fx-avatar" data-size="sm" data-color="purple" role="img" aria-label="Mister Fox">MF</span></span></li>
  <li class="fx-row"><span class="fx-row__lead"><span class="fx-prio" data-level="2" role="img" aria-label="Örta"><i></i></span><label class="fx-check fx-row__sel"><input type="checkbox" aria-label="Tanlaş: FX-219"><span class="fx-check__box"></span></label></span><span class="fx-row__id">FX-219</span><span class="fx-flow" data-state="review" role="img" aria-label="Tekşiruvda"></span><a class="fx-row__title" href="#">Doska: klaviatura bilan sudraş</a><span class="fx-row__end"><span class="fx-row__due" data-tone="soon">Bugun</span><span class="fx-avatar" data-size="sm" data-color="yellow" role="img" aria-label="Guli">GU</span></span></li>
</ul></details>
<div class="fx-bulkbar" data-fx-bulkbar="#bb-list" hidden><span class="fx-bulkbar__count"><span data-count>0</span> ta tanlandi</span><span class="fx-bulkbar__sep"></span><button class="fx-btn" data-size="sm" type="button">Holat</button><button class="fx-btn" data-size="sm" type="button">Bajaruvçi</button><button class="fx-btn" data-size="sm" type="button">Öçiriş</button><button class="fx-btn" data-size="sm" data-shape="icon" type="button" data-clear aria-label="Tanlovni bekor qiliş">×</button></div>
```

- Qilmang: Panelda 4 tadan köp amal qöymang — qolgani menyuda.

## Portlaş va konfetti (`burst`, beta, 0.29.0 dan)

Yoqtiriş va muvaffaqiyat uçun qisqa, bir martalik quvonç effektlari (Magic UI Confetti, Twitter «yoqdi»). data-fx-burst — tugma yoqilganda (aria-pressed="true") ikon atrofida halqa va 8 ta rangli nuqta tarqaladi, ikon prujina bilan sakraydi; öçirilganda — jim. data-toggle — tugma holatni özi almaştiradi va içidagi [data-count] ni ±1 qiladi; reactbar kabi guruhga qöyilsa — guruh xulqi holatni almaştiradi, portlaş natijaga qaraydi. data-fx-burst="confetti" — bosilganda tugmadan konfetti otiladi. Global: fxConfetti({ origin, count }) — masalan tölov muvaffaqiyatli bölganda. Ranglar — toifa ranglaridan. Harakat kamaytirilsa, calm yoki none rejimda heç narsa uçmaydi — holat baribir aria-pressed'da.

- Qaçon: «Yoqdi», «Saqlab qöyiş» kabi yoqiladigan tugmalar (ijtimoiy, kontent). Onboarding yakuni, birinçi sotuv, tölov muvaffaqiyati — konfetti.
- Qaçon emas: Oddiy amal natijasi haqida xabar → `toast`; Reaksiyalar paneli (portlaşsiz) → `reactbar`
- Variantlar: data-fx-burst=like|confetti (standart like)
- Klaviatura: Enter / Space — Yoqadi/öçiradi (yoki konfetti)
- Tokenlar: --fx-bg-brand-solid, --fx-bg-category-blue, --fx-bg-category-green, --fx-bg-category-pink, --fx-bg-category-purple, --fx-bg-category-yellow, --fx-border-width-focus, --fx-ease-bounce, --fx-ease-enter, --fx-ease-exit, --fx-ease-standard, --fx-motion-fast, --fx-motion-slow, --fx-motion-slower, --fx-radius-badge, --fx-radius-circle, --fx-size-icon-md, --fx-space-1, --fx-space-2, --fx-text-primary, --fx-text-secondary, --fx-z-toast

```html
<div style="display:flex;flex-wrap:wrap;align-items:center;gap:var(--fx-space-3)">
  <button type="button" class="fx-btn" data-fx-burst data-toggle aria-pressed="false" aria-label="Yoqdi"><span class="fx-burst__icon"><svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round" aria-hidden="true"><path d="M12 20s-7-4.4-7-10a4 4 0 0 1 7-2.6A4 4 0 0 1 19 10c0 5.6-7 10-7 10Z"/></svg></span><span data-count>128</span></button>
  <div class="fx-reactbar" role="group" aria-label="Reaksiyalar" data-fx-reactbar data-fx-burst>
    <button class="fx-reactbar__item" type="button" aria-pressed="false" data-label="Yoqdi"><span class="fx-reactbar__emoji" aria-hidden="true">👍</span><span class="fx-reactbar__count">12</span></button>
    <button class="fx-reactbar__item" type="button" aria-pressed="false" data-label="Tabriklayman"><span class="fx-reactbar__emoji" aria-hidden="true">🎉</span><span class="fx-reactbar__count">4</span></button>
  </div>
</div>
<div class="fx-card" style="margin-block-start:var(--fx-space-4);max-inline-size:24rem">
  <h3 class="fx-card__title">Birinçi loyihangiz tayyor!</h3>
  <p class="fx-card__text">«Samarqand Grand» sayti e'lon qilindi. Jamoangizga xabar bering.</p>
  <button type="button" class="fx-btn" data-variant="primary" data-fx-burst="confetti" style="justify-self:start">Nişonlaş</button>
</div>
```

- Qilmang: Konfettini tez-tez takrorlanadigan amalga qöymang (saqlaş, yuboriş) — faqat haqiqiy yutuq: birinçi loyiha, tölov, maqsadga yetiş.
- Qilmang: Portlaşni yagona javob qilmang — holat (aria-pressed, son) ham özgarsin.
- Qilmang: Bir ekranda bir neçta konfetti tugmasi qöymang.

## Tugma (`button`, beta, 0.1.0 dan)

Amal tugmasi. Variantlar: primary (bölimda bitta), secondary, ghost, danger, link. Faqat ikonka (data-shape="icon" + aria-label), töliq en, bosilgan holat (aria-pressed), yuklaniş (aria-busy — matn joyida qoladi, ustida aylana). Qöşimça: xs/xl ölçam, tonal, outline, danger-ghost/outline variantlari; guruh (fx-btn-group) va split; menyu chevron (fx-btn__chev); ikon almaşinuvi (fx-btn__on/off); matn bilan yuklaniş (data-loading="text"); içki halqa (data-focus="inset"). Holatli tugma (data-state="success|error"): yuklanişdan keyin qisqa ✓ yoki ✕ belgisi (data-state-label bilan söz ham), ~1,6 s dan keyin özi asl körinişga qaytadi; xatoda yengil silkiniş.

- Qaçon: Amalni bajariş: saqlaş, yuboriş, öçiriş, oynani oçiş.
- Qaçon emas: Boşqa sahifaga ötiş → `link`; Bir neçta holatdan birini tanlaş → `tabs`
- Variantlar: data-variant=secondary|primary|ghost|danger|link|tonal|outline|danger-ghost|danger-outline (standart secondary); data-size=xs|sm|md|lg|xl (standart md); data-shape=text|icon (standart text); data-width=auto|full (standart auto); data-loading=spinner|text (standart spinner); data-focus=outside|inset (standart outside); data-orientation=horizontal|vertical (standart horizontal); data-state=idle|success|error (standart idle)
- Klaviatura: Enter, Space — Bosiladi
- Tokenlar: --fx-bg-brand-solid, --fx-bg-brand-solid-active, --fx-bg-brand-solid-hover, --fx-bg-brand-subtle, --fx-bg-brand-subtle-active, --fx-bg-brand-subtle-hover, --fx-bg-error-solid, --fx-bg-error-solid-active, --fx-bg-error-solid-hover, --fx-bg-error-subtle, --fx-bg-error-subtle-active, --fx-bg-muted, --fx-bg-muted-hover, --fx-bg-pressed, --fx-bg-success-subtle, --fx-bg-surface, --fx-border-color-focus, --fx-border-color-strong, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-lg, --fx-control-h-md, --fx-control-h-sm, --fx-duration-pulse, --fx-duration-spin, --fx-ease-spring, --fx-ease-standard, --fx-fg-error, --fx-fg-success, --fx-font-size-lg, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-knob-field-fill, --fx-knob-motion-lift, --fx-knob-outline, --fx-knob-pill, --fx-motion-base, --fx-motion-fast, --fx-motion-instant, --fx-motion-press, --fx-motion-scale-enter, --fx-motion-shift-sm, --fx-motion-slow, --fx-radius-circle, --fx-radius-control, --fx-size-icon-md, --fx-size-icon-sm, --fx-size-min-target, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-space-6, --fx-text-brand, --fx-text-disabled, --fx-text-on-brand, --fx-text-on-error, --fx-text-primary

```html
<button class="fx-btn" data-variant="primary">Saqlaş</button>
<button class="fx-btn">Bekor qiliş</button>
<button class="fx-btn" data-variant="ghost" data-size="sm">Yana</button>
<button class="fx-btn" data-variant="danger">Öçiriş</button>
<button class="fx-btn" data-variant="link">Barçasini köriş</button>
<button class="fx-btn" data-variant="primary" aria-busy="true">Yuborilmoqda</button>
<button class="fx-btn" data-shape="icon" aria-label="Qidiriş">⌕</button>
<button class="fx-btn" aria-pressed="true">Sevimli</button>
<div class="fx-btn-group"><button class="fx-btn" aria-pressed="true">Kun</button><button class="fx-btn">Hafta</button><button class="fx-btn">Oy</button></div>
<div class="fx-btn-group" role="group" aria-label="Saqlaş"><button class="fx-btn" data-variant="primary">Saqlaş</button><button class="fx-btn" data-variant="primary" data-shape="icon" aria-label="Boşqa variantlar" aria-haspopup="menu" aria-expanded="false"><svg class="fx-btn__chev" viewBox="0 0 16 16" aria-hidden="true"><path d="M4 6l4 4 4-4" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></button></div>
<button class="fx-btn" data-variant="tonal">Tonal</button>
<button class="fx-btn" data-variant="outline" data-size="xs">Outline</button>
<button class="fx-btn" data-variant="danger-ghost" data-size="sm">Öçiriş</button>
<button class="fx-btn" data-variant="primary" aria-busy="true" data-loading="text">Saqlanmoqda…</button>
<a class="fx-btn" href="#" aria-disabled="true" tabindex="-1">Havola-tugma</a>
<button class="fx-btn" data-variant="primary" data-state="success" data-state-label="Saqlandi">Saqlaş</button>
<button class="fx-btn" data-state="error" data-state-label="Yuborilmadi">Yuboriş</button>
```

- Qilmang: Bir bölimda ikkita primary tugma qöymang.
- Qilmang: Faqat ikonkali tugmani aria-label'siz qoldirmang.
- Qilmang: Yuklanayotganda tugma matnini «...» ga almaştirmang — aria-busy qöying.
- Qilmang: Guruhdagi tugmalar orasiga qölda oraliq qöymang — fx-btn-group çegarani birlaştiradi.
- Qilmang: Natija holatini faqat rang bilan bildirmang va doimiy qoldirmang — data-state qisqa tasdiq; xato sababi forma yonida yozilsin.

## Kalendar (`calendar`, beta, 0.23.0 dan)

Oy töri: kun tanlaş, oraliq (2 oy yonma-yon), oy va yil körinişi. Hafta Duşanbadan, oy va kun nomlari özbekça. Bugun — halqa, tanlangan — töldirilgan, öçirilgan kun — çizilgan, oraliq — tasma. APG sana töri klaviaturasi; xulq foxui.js'da çizadi. Içida fx-datepicker va fx-daterange işlatiladi. Bir neçta sana (4.99): data-mode="multiple" — dam oliş kunlari, smenalar: har kun bosilganda qöşiladi yoki olinadi, pastda «N kun tanlandi». Hafta raqamlari (4.98): data-weeknums — çapda ISO hafta raqami (sprint, iş rejasi). Yil va ön yillik (4.100): data-mode="year" — faqat yil tanlanadi (qiymat «2026»); data-level="decade|year|month" — boşlanğiç köriniş: tuğilgan sanani ön yilliklardan (1990–1999) → yil → oy → kun tez tanlaş. Yillar sarlavhasi bosilsa — ön yilliklar (120 yil).

- Qaçon: Sanani köz bilan tanlaş, oy va hafta kunlari kontekstida. Hisobot davri (oraliq rejimi).
- Qaçon emas: Maydon içida sana tanlaş → `datepicker`; Tayyor oraliqlar (Bugun, 7 kun) bilan davr tanlaş → `daterange`; Faqat soat va daqiqa → `timefield`
- Variantlar: data-mode=single|range|month|multiple|year (standart single); data-size=md|sm (standart md); data-weeknums=; data-level=decade|year|month (standart day)
- Klaviatura: ← → — Oldingi/keyingi kun; ↑ ↓ — Oldingi/keyingi hafta; Home / End — Haftaning boşi / oxiri (Du / Ya); PageUp / PageDown — Oldingi/keyingi oy; Shift + PageUp / PageDown — Oldingi/keyingi yil; Enter / Boʻshliq — Kunni tanlaydi; Esc — Oy/yil körinişidan kunlarga qaytadi; ← → ↑ ↓ (oʻn yilliklarda) — 10 / 30 yil; PageUp/PageDown — 120 yil
- Tokenlar: --fx-bg-brand-solid, --fx-bg-brand-subtle, --fx-bg-muted, --fx-bg-pressed, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-strong, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-md, --fx-control-h-sm, --fx-ease-standard, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-regular, --fx-font-weight-semibold, --fx-knob-pill, --fx-motion-base, --fx-motion-fast, --fx-motion-instant, --fx-motion-press, --fx-radius-control, --fx-size-icon-md, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-6, --fx-text-disabled, --fx-text-on-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<div class="fx-calendar" data-fx-calendar data-value="2026-10-17" data-min="2026-10-05" data-disabled="2026-10-21" data-off-days="7" aria-label="Uçraşuv sanasi"></div>
<div class="fx-calendar" data-fx-calendar data-mode="range" data-months="2" data-start="2026-10-12" data-end="2026-10-19" aria-label="Hisobot davri"></div>
<div class="fx-calendar" data-fx-calendar data-mode="month" data-value="2026-10" aria-label="Hisobot oyi"></div>
<div class="fx-calendar" data-fx-calendar data-mode="multiple" data-value="2026-11-02,2026-11-03,2026-11-09,2026-11-16" data-footer="clear" aria-label="Smena kunlari, noyabr"></div>
<!-- Hafta raqamlari (4.98) -->
<div class="fx-calendar" data-fx-calendar data-weeknums data-value="2026-10-21" aria-label="Sprint rejasi — hafta raqamlari bilan"></div>
<!-- Yil (4.100): faqat yil -->
<div class="fx-calendar" data-fx-calendar data-mode="year" data-value="2024" data-max="2026-12-31" data-footer="today" aria-label="Moliyaviy yil"></div>
<!-- Oʻn yilliklardan boshlab: tugʻilgan sana -->
<div class="fx-calendar" data-fx-calendar data-level="decade" data-value="1994-05-12" data-max="2008-12-31" aria-label="Tuğilgan sana"></div>
```

- Qilmang: Tuğilgan sana kabi 20+ yil orqaga ketadigan sana uçun faqat kalendar qöymang — fx-dateinput (yozib kiritiş) bering.
- Qilmang: Öçirilgan kunni yaşirmang — sababini hint bilan yozing.

## Callout (`callout`, beta, 0.22.0 dan)

Hujjat içidagi eslatma: alert'dan yengilroq — yengil tus, çap çiziq, sarlavha sözi + şakl. Turlar: note, tip, important, warning, caution.

- Qaçon: Hujjat/maqola içida eslatma, maslahat, ogohlantiriş.
- Qaçon emas: Sahifa holati haqida muhim xabar → `alert`; Sayt böylab e'lon → `banner`
- Variantlar: data-tone=tip|important|warning|caution (standart note)
- Tokenlar: --fx-border-width-focus, --fx-fg-error, --fx-fg-success, --fx-fg-warning, --fx-font-size-sm, --fx-font-weight-semibold, --fx-radius-badge, --fx-radius-circle, --fx-radius-control, --fx-size-status-dot-sm, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-text-brand, --fx-text-primary, --fx-text-secondary

```html
<aside class="fx-callout" data-tone="tip">
  <p class="fx-callout__title">Maslahat</p>
  <div class="fx-callout__body"><p>Mavzuni <code>data-fx-theme</code> bilan almaştiring — komponentlar özgarmaydi.</p></div>
</aside>
<aside class="fx-callout" data-tone="caution">
  <p class="fx-callout__title">Ehtiyot böling</p>
  <div class="fx-callout__body"><p>Bu buyruq mijoz bazasini tozalaydi.</p></div>
</aside>
```

- Qilmang: Bir ekranda uçtadan ortiq callout qöymang — e'tibor yöqoladi.
- Qilmang: Sarlavhasiz tonni faqat rangga tayantirmang — sarlavha sözi yoki matn holatni aytsin.
- Qilmang: Vaqtinçalik yoki yopiladigan xabar uçun callout emas.

## AI artefakt paneli (`canvas`, beta, 0.29.0 dan)

Suhbat yonidagi AI yaratgan hujjat, kod yoki sahifa paneli (4.203, Vercel AI Elements «Artifact», Claude Artifacts, ChatGPT Canvas). Sarlavha qatori: tur belgisi, nom va meta («2 daqiqa oldin»), versiyalar («‹ v2 / 2 ›» — har tahrir yangi versiya), Köriniş ↔ Kod yorliqlari (role="tab"), nusxalaş, töliq ekran va yopiş. Tana: har versiya .fx-canvas__version — içida natija (.fx-canvas__preview) va manba (.fx-canvas__code). data-state="streaming" — AI hali yozmoqda: tepada yuguruvçi çiziq va «Yozilmoqda…». Xulq (data-fx-canvas): yorliqlar ← → bilan, versiyalar va natija jonli hududda aytiladi, töliq ekrandan Esc bilan çiqiladi, yopilsa fokus oçuvçi tugmaga ([data-canvas-open="id"], aria-expanded) qaytadi. Hodisalar: fx-canvas-view, fx-canvas-version, fx-canvas-close; API: el.fxCanvas.add(versiya), .open(), .close(). Suhbat bilan yonma-yon — fx-split yoki ikki ustunli grid.

- Qaçon: AI çat yonida yaratilgan hujjat, kod, jadval yoki sahifani körsatiş va tahrirlaş. Bir natijaning bir neçta versiyasini soliştiriş.
- Qaçon emas: Suhbat içidagi qisqa kod parçasi → `code`; Vosita çaqiruvi natijasi → `toolcall`; Oddiy yon panel → `sheet`
- Variantlar: data-view=preview|code (standart preview); data-state=streaming (standart idle); data-expanded=on (standart off)
- Klaviatura: ← → Home End (yorliqlarda) — Köriniş ↔ Kod; Enter, Space — Versiya, nusxa, töliq ekran, yopiş tugmalari; Esc (toʻliq ekranda) — Oddiy holatga qaytadi
- Tokenlar: --fx-bg-brand-solid, --fx-bg-category-purple, --fx-bg-muted, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-sm, --fx-duration-indeterminate, --fx-ease-emphasized, --fx-ease-standard, --fx-fg-success, --fx-font-adjust-mono, --fx-font-family-mono, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-knob-motion-loop, --fx-line-height-relaxed, --fx-motion-fast, --fx-motion-press, --fx-motion-shift-lg, --fx-motion-slow, --fx-radius-control, --fx-radius-overlay, --fx-shadow-lg, --fx-shadow-md, --fx-shadow-sm, --fx-size-icon-sm, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-6, --fx-text-disabled, --fx-text-on-category, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary, --fx-z-modal

```html
<button class="fx-btn" type="button" data-canvas-open="cv1" aria-expanded="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="4" width="18" height="16" rx="2"/><path d="M13 4v16"/></svg> «Narx bölimi» artefakti</button>
<aside class="fx-canvas" id="cv1" data-fx-canvas data-view="preview" aria-labelledby="cv1-t" style="margin-block-start: var(--fx-space-4); block-size: 26rem">
  <header class="fx-canvas__head">
    <span class="fx-canvas__type" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m8 8-4 4 4 4M16 8l4 4-4 4M14 4l-4 16"/></svg></span>
    <div class="fx-canvas__heading"><h2 class="fx-canvas__title" id="cv1-t">Narx bölimi — «Tong maktabi»</h2><span class="fx-canvas__meta">HTML · 2 daqiqa oldin</span><span class="fx-canvas__status"><span class="fx-shimmer-text">Yozilmoqda…</span></span></div>
    <div class="fx-canvas__versions" role="group" aria-label="Versiyalar"><button class="fx-canvas__btn" type="button" data-canvas="prev" aria-label="Oldingi versiya"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m15 6-6 6 6 6"/></svg></button><span data-canvas-label>v2 / 2</span><button class="fx-canvas__btn" type="button" data-canvas="next" aria-label="Keyingi versiya"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m9 6 6 6-6 6"/></svg></button></div>
    <div class="fx-canvas__tabs" role="tablist" aria-label="Köriniş"><button class="fx-canvas__tab" type="button" role="tab" data-canvas-view="preview" aria-selected="true" aria-controls="cv1-b">Köriniş</button><button class="fx-canvas__tab" type="button" role="tab" data-canvas-view="code" aria-selected="false" aria-controls="cv1-b" tabindex="-1">Kod</button></div>
    <div class="fx-canvas__actions"><button class="fx-canvas__btn" type="button" data-canvas="copy" aria-label="Kodni nusxalaş"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="9" y="9" width="11" height="11" rx="2"/><path d="M5 15V6a2 2 0 0 1 2-2h9"/></svg></button><button class="fx-canvas__btn" type="button" data-canvas="expand" aria-pressed="false" aria-label="Töliq ekran"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M14 4h6v6M10 20H4v-6M20 4l-7 7M4 20l7-7"/></svg></button><button class="fx-canvas__btn" type="button" data-canvas="close" aria-label="Panelni yopiş"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 6l12 12M18 6 6 18"/></svg></button></div>
  </header>
  <div class="fx-canvas__body" id="cv1-b" role="tabpanel" aria-labelledby="cv1-t">
    <article class="fx-canvas__version" data-version="1" hidden><div class="fx-canvas__preview"><h3>Tariflar</h3><p>Oylik: 149 000 söm</p></div><pre class="fx-canvas__code" tabindex="0"><code>&lt;section class="fx-pricing"&gt;
  &lt;h2&gt;Tariflar&lt;/h2&gt;
  &lt;p&gt;Oylik: 149 000 soʻm&lt;/p&gt;
&lt;/section&gt;</code></pre></article>
    <article class="fx-canvas__version" data-version="2" data-current><div class="fx-canvas__preview"><h3>Tariflar</h3><p><span class="fx-badge" data-tone="success">Yillik −20%</span></p><p><strong>Jamoa</strong> — 1 200 000 söm / yil, 5 örin, MCP va yangilanişlar.</p></div><pre class="fx-canvas__code" tabindex="0"><code>&lt;section class="fx-pricing"&gt;
  &lt;h2&gt;Tariflar&lt;/h2&gt;
  &lt;div class="fx-segment"&gt;Oylik · Yillik −20%&lt;/div&gt;
  &lt;article data-popular&gt;
    &lt;h3&gt;Jamoa&lt;/h3&gt;
    &lt;p&gt;1 200 000 soʻm / yil&lt;/p&gt;
  &lt;/article&gt;
&lt;/section&gt;</code></pre></article>
  </div>
</aside>
```

- Qilmang: Har kiçik javobni artefaktga çiqarmang — faqat foydalanuvçi qayta işlatadigan, tahrirlanadigan natija (hujjat, kod, jadval, sahifa).
- Qilmang: Eski versiyani ustidan yozmang — har tahrir yangi versiya, orqaga qaytiş mumkin bölsin.
- Qilmang: Yaratilgan HTML'ni sahifaga töğridan-töğri joylamang — natija iframe sandbox içida yoki tozalangan holda körsatilsin.

## Captcha ramkasi (`captcha`, beta, 0.29.0 dan)

«Men robot emasman» (4.110, #27): uçinçi tomon captcha'si (Cloudflare Turnstile, reCAPTCHA, hCaptcha yoki öz serveringiz) uçun FoxUI ramkasi — forma içida begona körinmaydi, holatlar hamma provayderda bir xil: böş → «Tekşirilmoqda…» (halqa) → ✓ «Tasdiqlandi» / ! xato / ⟳ «Muddati tugadi». Belgi bosilganda «fx-captcha-verify» hodisasi çiqadi — integratsiya vidjetni .fx-captcha__slot'ga çaqiradi va natijani done(token) yoki fail(matn) bilan qaytaradi. Token yaşirin inputda; tasdiqsiz forma yuborilmaydi. data-expires — tokenning amal muddati (soniya). data-mode="invisible" — körinmas tekşiruv uçun faqat xabar qatori.

- Qaçon: SMS kod yuboriş, röyxatdan ötiş, parolni tiklaş, oçiq aloqa formasi. Bir xil körinişda turli captcha provayderlarini almaştiriş.
- Qaçon emas: Oddiy rozilik belgisi → `check`; SMS orqali tasdiqlaş kodi → `otp`
- Variantlar: data-state=idle|loading|verified|error|expired (standart idle); data-mode=checkbox|invisible (standart checkbox); data-size=normal|compact (standart normal)
- Klaviatura: Boʻshliq / Enter — Tekşiruvni boşlaydi; Tab — Belgi → brend havolalari
- Tokenlar: --fx-bg-brand-solid, --fx-bg-field, --fx-bg-subtle, --fx-border-color-error, --fx-border-color-field, --fx-border-color-focus, --fx-border-color-strong, --fx-border-width-default, --fx-border-width-focus, --fx-duration-pulse, --fx-duration-spin, --fx-ease-standard, --fx-fg-success, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-bold, --fx-motion-fast, --fx-motion-instant, --fx-motion-press, --fx-popover-width, --fx-radius-badge, --fx-radius-checkbox-ratio, --fx-radius-circle, --fx-radius-control, --fx-size-control-sm, --fx-size-min-target, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-text-error, --fx-text-on-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<form class="fx-card" style="padding:var(--fx-space-6);display:grid;gap:var(--fx-space-4);max-inline-size:26rem" onsubmit="event.preventDefault()">
  <label class="fx-field"><span class="fx-label">Telefon</span><input class="fx-input" type="tel" value="+998 90 123 45 67" autocomplete="tel"></label>
  <div class="fx-captcha" data-fx-captcha data-name="captcha_token" data-demo data-expires="120">
    <button type="button" class="fx-captcha__check"><span class="fx-captcha__box" aria-hidden="true"></span><span>Men robot emasman</span></button>
    <span class="fx-captcha__brand"><span>Bot himoyasi</span><a href="#">Maxfiylik · Şartlar</a></span>
    <div class="fx-captcha__slot"></div>
    <p class="fx-captcha__msg" aria-live="polite"></p>
  </div>
  <button class="fx-btn" data-variant="primary" type="submit">SMS kod yuboriş</button>
</form>
<div style="display:grid;gap:var(--fx-space-3);margin-block-start:var(--fx-space-4)">
  <div class="fx-captcha" data-fx-captcha data-state="verified"><button type="button" class="fx-captcha__check"><span class="fx-captcha__box" aria-hidden="true"></span><span>Men robot emasman</span></button><span class="fx-captcha__brand"><span>Bot himoyasi</span><a href="#">Maxfiylik · Şartlar</a></span><p class="fx-captcha__msg" aria-live="polite"></p></div>
  <div class="fx-captcha" data-fx-captcha data-state="error"><button type="button" class="fx-captcha__check"><span class="fx-captcha__box" aria-hidden="true"></span><span>Men robot emasman</span></button><span class="fx-captcha__brand"><span>Bot himoyasi</span><a href="#">Maxfiylik · Şartlar</a></span><p class="fx-captcha__msg" aria-live="polite"></p></div>
  <div class="fx-captcha" data-fx-captcha data-state="expired" data-size="compact"><button type="button" class="fx-captcha__check"><span class="fx-captcha__box" aria-hidden="true"></span><span>Men robot emasman</span></button><span class="fx-captcha__brand"><span>Bot himoyasi</span><a href="#">Maxfiylik · Şartlar</a></span><p class="fx-captcha__msg" aria-live="polite"></p></div>
  <div class="fx-captcha" data-fx-captcha data-mode="invisible" data-state="loading"><span class="fx-captcha__brand"><span>Sahifa bot himoyasi bilan tekşirilmoqda</span></span><p class="fx-captcha__msg" aria-live="polite"></p></div>
</div>
```

- Qilmang: Har formaga captcha qöymang — faqat SMS yuboriş, röyxatdan ötiş, parolni tiklaş kabi suiiste'mol qilinadigan joyga.
- Qilmang: Rasmli «svetoforni toping» captcha'sini asosiy yöl qilmang — köriş qiyin odam uçun tösiq; körinmas tekşiruv yoki audio muqobil bölsin.
- Qilmang: Muddati tugagan tokenni jimgina yubormang — holat «Muddati tugadi» deb aytilsin.

## Karta (`card`, beta, 0.1.0 dan)

Yuza: içki çet 20, içidagi oraliq 16. Bir qatordagi kartalar böyi teng (WDS r181). Anatomiya: sarlavha qatori (+amal), media, tana, pastki qator, amallar. Variantlar: gorizontal, ixçam, tanlanadigan (içida belgilaş katagi). Kengaytma: data-stretched + .fx-card__link (butun karta havola), aria-pressed (tanlanadigan), data-variant=outline|filled|ghost, <details class=fx-card> + .fx-card__summary, aria-busy, data-flush (jadval kartasi), .fx-card__well.

- Qaçon: Bir mavzudagi ma'lumotni alohida yuzaga yiğiş.
- Qaçon emas: Butun sahifa bölagi → `section`
- Variantlar: data-variant=default|raised|outline|filled|ghost (standart default); data-layout=vertical|horizontal (standart vertical); data-density=default|compact (standart default); data-stretched=true; data-flush=true
- Klaviatura: Space — Tanlanadigan kartada katakni almaştiradi
- Tokenlar: --fx-bg-brand-solid, --fx-bg-brand-subtle, --fx-bg-muted, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-strong, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-duration-pulse, --fx-ease-enter, --fx-ease-standard, --fx-font-size-lg, --fx-font-size-md, --fx-font-size-sm, --fx-font-weight-semibold, --fx-knob-motion-lift, --fx-motion-base, --fx-motion-instant, --fx-motion-lift, --fx-motion-press, --fx-radius-badge, --fx-radius-control, --fx-radius-surface, --fx-shadow-md, --fx-shadow-sm, --fx-size-icon-sm, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-text-primary, --fx-text-secondary

```html
<article class="fx-card">
  <div class="fx-card__media" style="aspect-ratio:16/7"></div>
  <header class="fx-card__header">
    <div class="fx-card__heading"><h3 class="fx-card__title">Yillik obuna</h3><p class="fx-card__text">Hisob-kitob: har yili 17-oktabrda</p></div>
    <span class="fx-status" data-tone="success">Faol</span>
  </header>
  <div class="fx-card__body"><p class="fx-card__text">Barça komponentlar, MCP va yangilanişlar. 3 qurilma.</p></div>
  <footer class="fx-card__footer"><span>1 200 000 söm</span><div class="fx-card__actions"><button class="fx-btn" type="button">Tahrirlaş</button></div></footer>
</article>
<label class="fx-card" data-selectable data-density="compact">
  <span class="fx-check fx-card__check"><input type="checkbox" aria-label="Boşlanğiç rejani tanlaş"><span class="fx-check__box"></span></span>
  <h3 class="fx-card__title">Boşlanğiç</h3>
  <p class="fx-card__text">1 loyiha, 1 dasturçi.</p>
</label>
<article class="fx-card" data-stretched><h3 class="fx-card__title"><a class="fx-card__link" href="#">Loyiha: Çorsu</a></h3><p class="fx-card__text">Butun karta bosiladi.</p><div class="fx-card__well">Oxirgi yangilaniş: 3 soat oldin</div></article>
<details class="fx-card" data-variant="outline"><summary class="fx-card__summary">Qöşimça sozlamalar</summary><p class="fx-card__text">Bu yerda yaşirin tafsilot.</p></details>
<section class="fx-card" data-flush aria-busy="true"><header class="fx-card__header"><h3 class="fx-card__title">Buyurtmalar</h3></header><div class="fx-card__body">Yuklanmoqda…</div><footer class="fx-card__footer">1–10 / 240</footer></section>
```

- Qilmang: Karta içida aylantiriş (scroll) qilmang.
- Qilmang: Tanlanadigan kartada içida alohida havola yoki tugma qöymang — butun karta bitta belgilaş maydoni.
- Qilmang: Media rasmiga muhim matnni yozib qöymang — alt va matn alohida.

## Kartalar dastasi (`cardstack`, beta, 0.29.0 dan)

Ustma-ust turgan kartalar (4.80): oldingisi töliq, orqadagilari biroz yuqorida va kiçikroq — «yana bor» hissi. Avtomatik (data-autoplay, ms) yoki tugmalar va ← → bilan almaşadi; oldingi karta pastga sirpanib ketadi. Mijozlar fikri, yangilik va e'lonlar uçun. Avtomatik almaşiş faqat körinişda, siçqonça yoki fokus ustida töxtaydi, harakat kamaytirilganda öçadi.

- Qaçon: Landing sahifasidagi mijozlar fikri — bir vaqtda bittasi, «yana bor» körinib tursin. Dashboard'dagi e'lonlar yoki maslahatlar dastasi.
- Qaçon emas: Köp rasm yoki mahsulotlarni varaqlaş → `carousel`; Hamma fikrlar bir vaqtda körinsin → `testimonials`
- Variantlar: data-autoplay=ms (standart 0); data-depth=1|2|3 (standart 0)
- Klaviatura: ← → — Oldingi / keyingi karta; Tab — Oldingi kartadagi havolalar va tugmalar
- Tokenlar: --fx-bg-surface, --fx-border-color-surface, --fx-border-width-default, --fx-ease-emphasized, --fx-ease-standard, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xs, --fx-line-height-relaxed, --fx-motion-base, --fx-motion-exit-base, --fx-motion-slow, --fx-radius-overlay, --fx-shadow-md, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-6, --fx-space-8, --fx-text-tertiary

```html
<div class="fx-cardstack" data-fx-cardstack data-autoplay="6000" role="region" aria-roledescription="kartalar dastasi" aria-label="Mijozlar fikri">
  <ul class="fx-cardstack__list">
    <li class="fx-cardstack__card">
      <blockquote class="fx-cardstack__quote">«Arizalar endi bitta oynada: sayt, bot va qönğiroqlar. Menejerlar javob beriş vaqti 2 soatdan 15 daqiqaga tuşdi.»</blockquote>
      <div class="fx-cardstack__author"><span class="fx-avatar" data-color="pink" role="img" aria-label="Dilnoza Rahimova">DR</span><div><strong>Dilnoza Rahimova</strong><small>Savdo bölimi rahbari, «Mebel Uy»</small></div></div>
    </li>
    <li class="fx-cardstack__card">
      <blockquote class="fx-cardstack__quote">«Ombor qoldiği har kuni ertalab özi hisoblanadi — Excel'dan butunlay voz keçdik.»</blockquote>
      <div class="fx-cardstack__author"><span class="fx-avatar" data-color="green" role="img" aria-label="Javlon Toshmatov">JT</span><div><strong>Javlon Toshmatov</strong><small>Boş hisobçi, «Agro Savdo»</small></div></div>
    </li>
    <li class="fx-cardstack__card">
      <blockquote class="fx-cardstack__quote">«Bemorlar navbatni Telegram orqali oladi, qabulxonada tirbandlik yöq.»</blockquote>
      <div class="fx-cardstack__author"><span class="fx-avatar" data-color="blue" role="img" aria-label="Malika Yusupova">MY</span><div><strong>Malika Yusupova</strong><small>Klinika administratori</small></div></div>
    </li>
    <li class="fx-cardstack__card">
      <blockquote class="fx-cardstack__quote">«Öqituvçilar davomatni telefondan belgilaydi, ota-onalar şu zahoti xabar oladi.»</blockquote>
      <div class="fx-cardstack__author"><span class="fx-avatar" data-color="yellow" role="img" aria-label="Bobur Aliyev">BA</span><div><strong>Bobur Aliyev</strong><small>Direktor, «Tong maktabi»</small></div></div>
    </li>
  </ul>
  <div class="fx-cardstack__nav">
    <button class="fx-btn" data-variant="ghost" data-shape="icon" data-stack="prev" aria-label="Oldingi fikr"><svg viewBox="0 0 256 256" aria-hidden="true"><path d="M165.66 202.34a8 8 0 0 1-11.32 11.32l-80-80a8 8 0 0 1 0-11.32l80-80a8 8 0 0 1 11.32 11.32L91.31 128Z"/></svg></button>
    <span class="fx-cardstack__count" aria-live="polite">1 / 4</span>
    <button class="fx-btn" data-variant="ghost" data-shape="icon" data-stack="next" aria-label="Keyingi fikr"><svg viewBox="0 0 256 256" aria-hidden="true"><path d="M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z"/></svg></button>
  </div>
</div>
```

- Qilmang: Muhim ma'lumotni faqat orqadagi kartalarga qoldirmang — foydalanuvçi ularni körmasligi mumkin.
- Qilmang: Avtomatik almaşişni 5 soniyadan tez qilmang va töxtatiş imkonini olib taşlamang.
- Qilmang: 6 tadan köp karta qöymang — röyxat yoki karusel işlating.

## Karyera sahifasi (`careers`, beta, 0.29.0 dan)

Marketing saytining «Karyera / Vakansiyalar» sahifasi (4.177): sarlavha, afzalliklar töri (nega biz bilan işlaş), bölim filtri (fx-chip, aria-pressed — saralaşni ilova qiladi) va bölimlar böyiça guruhlangan vakansiyalar röyxati. Har qator — lavozim (havola butun qatorni bosiladigan qiladi), şahar, iş turi, tajriba va maoş oraliği; yangi vakansiya data-new bilan «Yangi» belgisini oladi. Oçiq vakansiya yöq bölsa — .fx-careers__empty (rezyume yuboriş taklifi). data-variant: list (standart) yoki cards.

- Qaçon: Kompaniya saytining «Karyera» sahifasi. Landing'da «Biz bilan işlang» bölimi (1–3 vakansiya).
- Qaçon emas: Ilova içidagi nomzodlar va bosqiçlar (ATS) → `board`; Bitta vakansiyaning töliq matni → `prose`
- Variantlar: data-variant=list|cards (standart list); data-new=on (standart off)
- Klaviatura: Tab — Filtr chip'lari, keyin har vakansiya — bitta töxtaş; Enter — Vakansiya sahifasini oçadi
- Tokenlar: --fx-bg-brand-subtle, --fx-bg-muted, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-strong, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-dialog-width, --fx-ease-standard, --fx-font-adjust-display, --fx-font-family-display, --fx-font-size-display-sm, --fx-font-size-lg, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-regular, --fx-font-weight-semibold, --fx-line-height-tight, --fx-motion-fast, --fx-motion-shift-sm, --fx-radius-badge, --fx-radius-control, --fx-radius-surface, --fx-shadow-sm, --fx-space-1, --fx-space-10, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-space-6, --fx-space-8, --fx-text-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<section class="fx-careers" aria-labelledby="cr-t">
  <header class="fx-careers__head"><p class="fx-careers__eyebrow">Karyera</p><h2 class="fx-careers__title" id="cr-t">Özbekistonning dizayn tizimini birga quraylik</h2><p class="fx-careers__text">Kiçik jamoa, katta ta'sir: siz yozgan komponentni minglab dasturçi işlatadi.</p></header>
  <ul class="fx-careers__perks">
    <li class="fx-careers__perk"><strong>Masofaviy yoki ofisda</strong>Toşkent ofisi yoki uydan — özingiz tanlaysiz.</li>
    <li class="fx-careers__perk"><strong>Öqiş byudjeti</strong>Yiliga 6 000 000 sömgaça kurs va konferensiyalar.</li>
    <li class="fx-careers__perk"><strong>Tibbiy suğurta</strong>Siz va oilangiz uçun, birinçi oydan.</li>
  </ul>
  <ul class="fx-careers__filters" aria-label="Bölim böyiça">
    <li><button class="fx-chip" type="button" aria-pressed="true">Hammasi <span class="fx-chip__count">4</span></button></li>
    <li><button class="fx-chip" type="button" aria-pressed="false">Muhandislik <span class="fx-chip__count">2</span></button></li>
    <li><button class="fx-chip" type="button" aria-pressed="false">Dizayn <span class="fx-chip__count">1</span></button></li>
    <li><button class="fx-chip" type="button" aria-pressed="false">Qöllab-quvvatlaş <span class="fx-chip__count">1</span></button></li>
  </ul>
  <div class="fx-careers__groups">
    <section class="fx-careers__group" aria-labelledby="cr-g1">
      <h3 class="fx-careers__group-title" id="cr-g1">Muhandislik <span class="fx-careers__group-count">2 ta</span></h3>
      <ul class="fx-careers__list">
        <li class="fx-careers__job" data-new><h4 class="fx-careers__job-title"><a class="fx-careers__link" href="#">Senior front-end dasturçi</a></h4><ul class="fx-careers__meta"><li>Toşkent</li><li>Töliq stavka</li><li>Gibrid</li></ul><span class="fx-careers__salary">25–35 mln söm</span></li>
        <li class="fx-careers__job"><h4 class="fx-careers__job-title"><a class="fx-careers__link" href="#">Node.js dasturçi (CLI va MCP)</a></h4><ul class="fx-careers__meta"><li>Masofaviy</li><li>Töliq stavka</li><li>3+ yil tajriba</li></ul><span class="fx-careers__salary">20–28 mln söm</span></li>
      </ul>
    </section>
    <section class="fx-careers__group" aria-labelledby="cr-g2">
      <h3 class="fx-careers__group-title" id="cr-g2">Dizayn <span class="fx-careers__group-count">1 ta</span></h3>
      <ul class="fx-careers__list">
        <li class="fx-careers__job"><h4 class="fx-careers__job-title"><a class="fx-careers__link" href="#">Mahsulot dizayneri</a></h4><ul class="fx-careers__meta"><li>Toşkent</li><li>Töliq stavka</li></ul><span class="fx-careers__salary">18–24 mln söm</span></li>
      </ul>
    </section>
    <section class="fx-careers__group" aria-labelledby="cr-g3">
      <h3 class="fx-careers__group-title" id="cr-g3">Qöllab-quvvatlaş <span class="fx-careers__group-count">1 ta</span></h3>
      <ul class="fx-careers__list">
        <li class="fx-careers__job" data-new><h4 class="fx-careers__job-title"><a class="fx-careers__link" href="#">Mijozlar bilan işlaş mutaxassisi</a></h4><ul class="fx-careers__meta"><li>Samarqand</li><li>Yarim stavka</li><li>Özbek va rus tillari</li></ul><span class="fx-careers__salary">8–10 mln söm</span></li>
      </ul>
    </section>
  </div>
  <div class="fx-careers__empty" hidden><strong>Hozirça oçiq vakansiya yöq</strong><p>Rezyumengizni yuboring — mos örin oçilganda birinçi bölib yozamiz.</p><a class="fx-btn" href="mailto:ish@foxui.dev">Rezyume yuboriş</a></div>
</section>
```

- Qilmang: Maoşni yaşirmang, agar imkon bölsa — oraliq (25–35 mln söm) körsatilgan vakansiyaga köproq ariza keladi.
- Qilmang: Vakansiya qatorida içma-iç tugmalar qöymang — butun qator bitta havola (::after qoplama), ikkinçi bosiladigan narsa bölmasin.
- Qilmang: Yopilgan vakansiyani röyxatda qoldirmang — olib taşlang yoki böş holatni körsating.

## Karusel (`carousel`, beta, 0.24.0 dan)

Slaydlar karuseli (APG carousel): scroll-snap — barmoq bilan suriş brauzerning özida; oldingi/keyingi tugmalar, nuqtalar (tab), ixtiyoriy avto-öynatiş (data-autoplay, siçqonça/fokus ustida pauza, «Pauza» tugmasi). Kamaytirilgan harakatda avto-öynatiş yöq. Kiçik rasmlar navigatsiyasi (4.159): .fx-carousel__thumbs — nuqtalar örnida pastdagi rasmlar qatori (mahsulot sahifasi), joriysi çegara bilan. M3 turlari (4.160, data-layout): multi — bir vaqtda bir neçta slayd (katta + kiçik), hero — bitta katta slayd va yonida tor köriniş, full — çetdan çetga (ekran eni); çekkaga yaqinlaşgan slayd torayadi (scroll-driven, harakat kamaytirilsa — öçadi).

- Qaçon: Bir joyda bir neçta teng huquqli slayd (suratlar, tavsiyalar) ketma-ket körsatilganda.
- Qaçon emas: Rasmlarni birdan körsatiş va kattalaştiriş → `gallery`; Bölimlar orasida almaşiş → `tabs`
- Variantlar: data-peek=on (standart off); data-autoplay=ms (standart off); data-layout=single|multi|hero|full (standart single)
- Klaviatura: ← → — Oldingi/keyingi slayd (viewport yoki nuqtalarda); Home End — Birinçi/oxirgi slayd (nuqtalarda); Tab — Tugmalar va nuqtalar orasida
- Tokenlar: --fx-bg-brand-solid, --fx-bg-muted, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-strong, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-lg, --fx-control-h-sm, --fx-ease-emphasized, --fx-ease-standard, --fx-font-size-md, --fx-font-size-xs, --fx-motion-base, --fx-motion-fast, --fx-motion-instant, --fx-motion-press, --fx-radius-circle, --fx-radius-control, --fx-radius-surface, --fx-size-status-dot, --fx-space-1, --fx-space-2, --fx-space-3, --fx-text-disabled, --fx-text-primary

```html
<div class="fx-carousel" data-fx-carousel data-autoplay="6000" data-loop aria-label="Loyiha suratlari" style="max-inline-size: 30rem">
  <div class="fx-carousel__viewport">
    <div class="fx-carousel__slide"><figure class="fx-image" data-ratio="16/9"><div class="fx-image__frame"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23e8875a%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23c2410c%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EBozor%3C%2Ftext%3E%3C%2Fsvg%3E" alt="Bozor"></div></figure></div>
    <div class="fx-carousel__slide"><figure class="fx-image" data-ratio="16/9"><div class="fx-image__frame"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%235a8be8%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%231d4ed8%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EOmbor%3C%2Ftext%3E%3C%2Fsvg%3E" alt="Ombor"></div></figure></div>
    <div class="fx-carousel__slide"><figure class="fx-image" data-ratio="16/9"><div class="fx-image__frame"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%234fb286%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23047857%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EOfis%3C%2Ftext%3E%3C%2Fsvg%3E" alt="Ofis"></div></figure></div>
    <div class="fx-carousel__slide"><figure class="fx-image" data-ratio="16/9"><div class="fx-image__frame"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23a78bfa%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%236d28d9%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EStudiya%3C%2Ftext%3E%3C%2Fsvg%3E" alt="Studiya"></div></figure></div>
  </div>
  <div class="fx-carousel__controls">
    <button class="fx-carousel__btn" type="button" data-dir="prev" aria-label="Oldingi slayd">‹</button>
    <div class="fx-carousel__dots"></div>
    <button class="fx-carousel__btn" type="button" data-dir="next" aria-label="Keyingi slayd">›</button>
    <button class="fx-carousel__btn fx-carousel__play" type="button">Pauza</button>
  </div>
</div>
<!-- Kichik rasmlar (4.159) -->
<div class="fx-carousel" data-fx-carousel aria-label="Çarm sumka suratlari" style="max-inline-size: 30rem">
  <div class="fx-carousel__viewport">
    <div class="fx-carousel__slide"><figure class="fx-image" data-ratio="16/9"><div class="fx-image__frame"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22%23d9cbb8%22/%3E%3Ccircle%20cx%3D%22320%22%20cy%3D%22200%22%20r%3D%22110%22%20fill%3D%22%23a8916f%22/%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2240%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EOld%20tomoni%3C/text%3E%3C/svg%3E" alt="Çarm sumka — old tomoni"></div></figure></div>
    <div class="fx-carousel__slide"><figure class="fx-image" data-ratio="16/9"><div class="fx-image__frame"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22%23c9d3dc%22/%3E%3Ccircle%20cx%3D%22320%22%20cy%3D%22200%22%20r%3D%22110%22%20fill%3D%22%237d8fa1%22/%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2240%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EYon%20tomoni%3C/text%3E%3C/svg%3E" alt="Çarm sumka — yon tomoni"></div></figure></div>
    <div class="fx-carousel__slide"><figure class="fx-image" data-ratio="16/9"><div class="fx-image__frame"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22%23d6d0e4%22/%3E%3Ccircle%20cx%3D%22320%22%20cy%3D%22200%22%20r%3D%22110%22%20fill%3D%22%238f84ad%22/%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2240%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EIchki%20qismi%3C/text%3E%3C/svg%3E" alt="Çarm sumka — içki qismi"></div></figure></div>
    <div class="fx-carousel__slide"><figure class="fx-image" data-ratio="16/9"><div class="fx-image__frame"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22%23cfdccb%22/%3E%3Ccircle%20cx%3D%22320%22%20cy%3D%22200%22%20r%3D%22110%22%20fill%3D%22%237f9b78%22/%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2240%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EO%CA%BBlchami%3C/text%3E%3C/svg%3E" alt="Çarm sumka — ölçami"></div></figure></div>
  </div>
  <div class="fx-carousel__thumbs" aria-label="Suratni tanlaş">
    <button class="fx-carousel__thumb" type="button"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22%23d9cbb8%22/%3E%3Ccircle%20cx%3D%22320%22%20cy%3D%22200%22%20r%3D%22110%22%20fill%3D%22%23a8916f%22/%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2240%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EOld%20tomoni%3C/text%3E%3C/svg%3E" alt="Old tomoni"></button>
    <button class="fx-carousel__thumb" type="button"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22%23c9d3dc%22/%3E%3Ccircle%20cx%3D%22320%22%20cy%3D%22200%22%20r%3D%22110%22%20fill%3D%22%237d8fa1%22/%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2240%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EYon%20tomoni%3C/text%3E%3C/svg%3E" alt="Yon tomoni"></button>
    <button class="fx-carousel__thumb" type="button"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22%23d6d0e4%22/%3E%3Ccircle%20cx%3D%22320%22%20cy%3D%22200%22%20r%3D%22110%22%20fill%3D%22%238f84ad%22/%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2240%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EIchki%20qismi%3C/text%3E%3C/svg%3E" alt="Içki qismi"></button>
    <button class="fx-carousel__thumb" type="button"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22%23cfdccb%22/%3E%3Ccircle%20cx%3D%22320%22%20cy%3D%22200%22%20r%3D%22110%22%20fill%3D%22%237f9b78%22/%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2240%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EO%CA%BBlchami%3C/text%3E%3C/svg%3E" alt="Ölçami"></button>
  </div>
</div>
<!-- M3 turlari (4.160): multi-browse — chekkadagi slaydlar torayadi -->
<div class="fx-carousel" data-fx-carousel data-layout="multi" aria-label="Sayohat paketlari" style="max-inline-size: 36rem">
  <div class="fx-carousel__viewport">
    <div class="fx-carousel__slide"><figure class="fx-image" data-ratio="4/3"><div class="fx-image__frame"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20400%20300%22%3E%3Crect%20width%3D%22400%22%20height%3D%22300%22%20fill%3D%22%23b4876a%22/%3E%3Ctext%20x%3D%22200%22%20y%3D%22160%22%20font-family%3D%22sans-serif%22%20font-size%3D%2230%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3ESamarqand%3C/text%3E%3C/svg%3E" alt="Samarqand — sayohat paketi"></div></figure></div>
    <div class="fx-carousel__slide"><figure class="fx-image" data-ratio="4/3"><div class="fx-image__frame"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20400%20300%22%3E%3Crect%20width%3D%22400%22%20height%3D%22300%22%20fill%3D%22%236a8fb4%22/%3E%3Ctext%20x%3D%22200%22%20y%3D%22160%22%20font-family%3D%22sans-serif%22%20font-size%3D%2230%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EBuxoro%3C/text%3E%3C/svg%3E" alt="Buxoro — sayohat paketi"></div></figure></div>
    <div class="fx-carousel__slide"><figure class="fx-image" data-ratio="4/3"><div class="fx-image__frame"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20400%20300%22%3E%3Crect%20width%3D%22400%22%20height%3D%22300%22%20fill%3D%22%237aa37a%22/%3E%3Ctext%20x%3D%22200%22%20y%3D%22160%22%20font-family%3D%22sans-serif%22%20font-size%3D%2230%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EXiva%3C/text%3E%3C/svg%3E" alt="Xiva — sayohat paketi"></div></figure></div>
    <div class="fx-carousel__slide"><figure class="fx-image" data-ratio="4/3"><div class="fx-image__frame"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20400%20300%22%3E%3Crect%20width%3D%22400%22%20height%3D%22300%22%20fill%3D%22%23a383b8%22/%3E%3Ctext%20x%3D%22200%22%20y%3D%22160%22%20font-family%3D%22sans-serif%22%20font-size%3D%2230%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EFarg%CA%BBona%3C/text%3E%3C/svg%3E" alt="Farğona — sayohat paketi"></div></figure></div>
    <div class="fx-carousel__slide"><figure class="fx-image" data-ratio="4/3"><div class="fx-image__frame"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20400%20300%22%3E%3Crect%20width%3D%22400%22%20height%3D%22300%22%20fill%3D%22%23c49a4e%22/%3E%3Ctext%20x%3D%22200%22%20y%3D%22160%22%20font-family%3D%22sans-serif%22%20font-size%3D%2230%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3ETermiz%3C/text%3E%3C/svg%3E" alt="Termiz — sayohat paketi"></div></figure></div>
  </div>
  <div class="fx-carousel__controls">
    <button class="fx-carousel__btn" type="button" data-dir="prev" aria-label="Oldingi slayd">‹</button>
    <button class="fx-carousel__btn" type="button" data-dir="next" aria-label="Keyingi slayd">›</button>
  </div>
</div>
```

- Qilmang: Muhim mazmunni faqat karuselga yaşirmang — hamma ham keyingi slaydgaça yetmaydi.
- Qilmang: Avto-öynatişni foydalanuvçi töxtata olmaydigan qilmang.

## Kaskad tanlov (`cascader`, beta, 0.24.0 dan)

Içma-iç tanlov (viloyat → tuman → mahalla): tugma bosilsa ustunlar ketma-ket yonma-yon oçiladi, oxirgi bandni tanlaş butun yölni (“Samarqand / Urgut”) yozadi. Menyu naqşi: ↓ ↑ band, → içkariga, ← orqaga, Esc yopadi. Hodisa `fx-cascader-change`.

- Qaçon: Ierarxik tanlov: manzil, toifa → quyi toifa, mahsulot daraxti (2–3 daraja).
- Qaçon emas: Bir darajali röyxat → `select`; Çuqur yoki qidiriladigan daraxt → `treeselect`
- Klaviatura: Enter, Space, ↓ — Tugmada: oçadi; ↓ ↑ — Daraja içida band; → — Içki daraja oçiladi; ← — Bir daraja orqaga; Enter, Space — Barg bandni tanlaydi; Esc — Yopadi, fokus tugmaga; Home, End — Birinçi / oxirgi band
- Tokenlar: --fx-bg-field, --fx-bg-muted, --fx-bg-pressed, --fx-bg-surface, --fx-border-color-error, --fx-border-color-field, --fx-border-color-focus, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-md, --fx-control-h-sm, --fx-font-size-md, --fx-font-size-sm, --fx-font-weight-medium, --fx-knob-field-fill, --fx-popover-width, --fx-radius-control, --fx-radius-nav, --fx-radius-overlay, --fx-shadow-lg, --fx-size-icon-sm, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-text-brand, --fx-text-primary, --fx-text-tertiary

```html
<div class="fx-cascader" data-fx-cascader>
  <button type="button" class="fx-cascader__trigger" aria-label="Hudud tanlaş"><span class="fx-cascader__value" data-empty>Hududni tanlang</span></button>
  <input type="hidden" name="hudud">
  <div class="fx-cascader__popup">
    <ul class="fx-cascader__list">
      <li role="none"><button class="fx-cascader__item" data-value="tk">Toşkent</button>
        <ul class="fx-cascader__list"><li role="none"><button class="fx-cascader__item" data-value="tk-ch">Çilonzor</button></li><li role="none"><button class="fx-cascader__item" data-value="tk-yu">Yunusobod</button></li><li role="none"><button class="fx-cascader__item" data-value="tk-mi">Mirzo Ulugʻbek</button></li></ul></li>
      <li role="none"><button class="fx-cascader__item" data-value="sm">Samarqand</button>
        <ul class="fx-cascader__list"><li role="none"><button class="fx-cascader__item" data-value="sm-sh">Samarqand şahri</button></li><li role="none"><button class="fx-cascader__item" data-value="sm-ur">Urgut</button>
          <ul class="fx-cascader__list"><li role="none"><button class="fx-cascader__item" data-value="sm-ur-1">Dahbed</button></li><li role="none"><button class="fx-cascader__item" data-value="sm-ur-2">Qoraboğ</button></li></ul></li></ul></li>
      <li role="none"><button class="fx-cascader__item" data-value="bx">Buxoro</button></li>
    </ul>
  </div>
</div>
```

- Qilmang: 3–4 darajadan çuqur qilmang; çuqur daraxt uçun `treeselect` (qidiruv bilan).
- Qilmang: Tanlangan yölni faqat oxirgi nom bilan körsatmang — qaysi tumanligi noaniq qoladi.
- Qilmang: Hover'ga tayanmang: sensorli qurilmada bosiş oçadi (komponent şunday).

## Changelog lentasi (`changelogfeed`, beta, 0.29.0 dan)

«Nima yangi» sahifasi (4.179) — har mijoz saytiga: versiyalar lentasi. Har yozuv — çapda versiya va sana (keng ekranda scroll'da yopişib turadi), öngda sarlavha (doimiy havola — #id), qisqa xulosa, ixtiyoriy rasm va özgarişlar röyxati. Har özgariş turi söz va belgi bilan, faqat rang emas: data-type="new" (Yangi, +), "improved" (Yaxşilandi, ↑), "fixed" (Tuzatildi, ✓), "breaking" (Muhim — yangilaşda e'tibor, !). Yozuvlar vaqt öqi bilan boğlanadi, eng sönggisi data-latest bilan brend nuqtasini oladi. Tepada obuna havolalari (RSS, Telegram). data-density="compact" — rasmlarsiz, ziçroq (ilova içidagi panel uçun). Bitta changelog manbasidan (JSON) çiziladi.

- Qaçon: Mahsulot va mijoz saytlarining «Nima yangi» sahifasi. Ilova içidagi «Yangiliklar» paneli (compact).
- Qaçon emas: Hodisalar tarixi (kim nima qildi) → `auditlog`; Bitta yozuvning bosqiçlari → `timeline`; Maqolalar röyxati → `blog`
- Variantlar: data-type=new|improved|fixed|breaking (standart new); data-density=comfortable|compact (standart comfortable); data-latest=on (standart off)
- Klaviatura: Tab — Obuna havolalari, keyin har versiya sarlavhasi (doimiy havola)
- Tokenlar: --fx-bg-brand-solid, --fx-bg-brand-subtle, --fx-bg-info-subtle, --fx-bg-muted, --fx-bg-subtle, --fx-bg-success-subtle, --fx-bg-surface, --fx-bg-warning-subtle, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-strong, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-fg-info, --fx-fg-success, --fx-fg-warning, --fx-font-adjust-display, --fx-font-adjust-mono, --fx-font-adjust-numeric, --fx-font-family-display, --fx-font-family-mono, --fx-font-family-numeric, --fx-font-size-display-sm, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xl, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-line-height-normal, --fx-line-height-snug, --fx-line-height-tight, --fx-radius-badge, --fx-radius-circle, --fx-radius-surface, --fx-size-topbar, --fx-space-1, --fx-space-10, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-space-6, --fx-space-8, --fx-text-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<section class="fx-changelogfeed" aria-labelledby="cl-t">
  <header class="fx-changelogfeed__head"><div><h2 class="fx-changelogfeed__title" id="cl-t">Nima yangi</h2><p class="fx-changelogfeed__text">FoxUI'dagi har bir özgariş — sana va versiya bilan.</p></div><div class="fx-changelogfeed__subscribe"><a class="fx-btn" data-size="sm" href="#">RSS</a><a class="fx-btn" data-size="sm" href="#">Telegram kanal</a></div></header>
  <ol class="fx-changelogfeed__list" reversed>
    <li class="fx-changelogfeed__entry" data-latest>
      <div class="fx-changelogfeed__when"><p class="fx-changelogfeed__version">0.28.0</p><time class="fx-changelogfeed__date" datetime="2026-10-18">18-oktabr 2026</time></div>
      <article class="fx-changelogfeed__body" aria-labelledby="v0280">
        <h3 class="fx-changelogfeed__entry-title" id="v0280"><a href="#v0280">100 ta yangi naqş va «Işxona»</a></h3>
        <p class="fx-changelogfeed__summary">Jahon dizayn tizimlari tadqiqotidan 4-tölqin: poydevor qatlamlari, forma, navigatsiya va marketing naqşlari.</p>
        <figure class="fx-changelogfeed__media" aria-hidden="true"></figure>
        <ul class="fx-changelogfeed__changes">
          <li class="fx-changelogfeed__change" data-type="new"><span class="fx-changelogfeed__type">Yangi</span><span>Narx jadvali, FAQ, CTA va xato sahifalari naqşlari</span></li>
          <li class="fx-changelogfeed__change" data-type="new"><span class="fx-changelogfeed__type">Yangi</span><span>Tipografiya rollari: <code>--fx-type-*</code> tokenlari</span></li>
          <li class="fx-changelogfeed__change" data-type="improved"><span class="fx-changelogfeed__type">Yaxşilandi</span><span>Jadval: ustunlarni qadab qöyiş va ziçlik tanlovi</span></li>
          <li class="fx-changelogfeed__change" data-type="breaking"><span class="fx-changelogfeed__type">Muhim</span><span><code>data-fx-tone</code> öqi olib taşlandi — örniga <code>data-fx-theme</code></span></li>
        </ul>
      </article>
    </li>
    <li class="fx-changelogfeed__entry">
      <div class="fx-changelogfeed__when"><p class="fx-changelogfeed__version">0.27.5</p><time class="fx-changelogfeed__date" datetime="2026-10-15">15-oktabr 2026</time></div>
      <article class="fx-changelogfeed__body" aria-labelledby="v0275">
        <h3 class="fx-changelogfeed__entry-title" id="v0275"><a href="#v0275">Namuna loyihalar: ERP, Helpdesk, LMS</a></h3>
        <ul class="fx-changelogfeed__changes">
          <li class="fx-changelogfeed__change" data-type="new"><span class="fx-changelogfeed__type">Yangi</span><span>«Zarafşon Tekstil» ERP va «Mehr Klinikasi» helpdesk namunalari</span></li>
          <li class="fx-changelogfeed__change" data-type="fixed"><span class="fx-changelogfeed__type">Tuzatildi</span><span>Telefonda rels menyusi ekrandan çiqib ketmaydi</span></li>
        </ul>
      </article>
    </li>
  </ol>
  <a class="fx-btn fx-changelogfeed__more" data-variant="ghost" href="#">Eski versiyalar</a>
</section>
```

- Qilmang: Texnik commit xabarlarini töğridan-töğri köçirmang — foydalanuvçi tilida: nima özgardi va unga nima foyda.
- Qilmang: Turini faqat rang bilan bildirmang — «Yangi / Yaxşilandi / Tuzatildi / Muhim» sözi va belgi doim tursin.
- Qilmang: «Muhim» (breaking) özgarişni röyxat oxiriga yaşirmang — yangilaşda nima qiliş kerakligini yozing.

## Grafik (`chart`, beta, 0.20.0 dan)

Grafik oilasi: ustun (guruh, ustma-ust), gorizontal ustun, çiziq (yakka seriyada sönuvçi maydon), mini-çiziq, donut (≤ 4 bölak), uluş çiziği, çiziqli ölçagiç va issiqlik xaritasi. Faqat ma'lumot API'si: mahsulot içiga jadval qöyadi, çiziş, öqlar, tooltip, klaviatura va «Jadval» körinişi — komponentda. Ranglar rol bilan: siyoh, brend, aksent, xavf, kontekst (60/30/10). Donut markazida — jami yoki data-center matni. 4-tölqin: köp seriyali va ustma-ust maydon (data-type="area", data-stacked, data-stacked="percent"), voronka (data-type="funnel" — ötiş foizi va eng katta yöqotiş), maqsad/çegara çiziği (data-ref="100:Reja") va bitta izoh (<td data-note>), interaktiv legenda (data-legend="interactive") hamda taşqaridan seriyani yaşiriş (data-hidden — fx-legend, fx-stat tanlovi). 5-tölqin: radar — köp mezonli profil (data-type="radar"), nuqtali va pufakli (data-type="scatter": X, Y va ixtiyoriy hajm ustunlari), kombinatsiya — ikki panel, umumiy X (data-type="combo", yuqorida çiziq data-unit2, pastda ustun; ikki Y öqi bitta panelda yöq), treemap (≤ 8 katak + «Boşqa»), şarşara (data-type="waterfall", <tr data-total> — jami), sankey (manba → maqsad → qiymat), bullet (fakt, reja tayoqçasi va kulrang zonalar) hamda zoom/brush — line, area va bar ostida mini-grafik va ikki tutqiçli oraliq (data-brush, data-brush="12" — oxirgi 12 nuqta).

- Qaçon: Vaqt böyiça özgariş, toifalar taqqoslaş, uluş yoki maqsadga yaqinlikni körsatiş. Ikki ölçov boğliqligi (scatter), özgarişlar yiğindisi (waterfall), oqim taqsimoti (sankey), plan va fakt (bullet), uzun qatorda oraliq tanlaş (data-brush).
- Qaçon emas: Aniq qiymatlarni soliştiriş va qidiriş → `table`; Bitta raqam va özgariş → `stat`
- Variantlar: data-type=bar|hbar|line|spark|donut|share|gauge|heatmap|area|funnel|radar|scatter|combo|treemap|waterfall|sankey|bullet (standart bar); data-stacked=true|percent; data-legend=interactive; data-ref=qiymat:yorliq; …; data-hidden=seriya nomlari, vergul bilan; data-brush=N; data-unit2=%
- Klaviatura: ← →, Home, End — Nuqtalar böylab yuradi, tooltip çiqadi; Esc — Tooltip yopiladi; Tab, Enter/Boʻsh joy (legenda) — Interaktiv legendada seriya yaşiriladi yoki qaytadi (aria-pressed); ← → (tutqichda), PageUp/PageDown, Home/End — Brush: oraliq boşi yoki oxirini suradi (role=slider)
- Tokenlar: --fx-bg-muted, --fx-bg-pressed, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-strong, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-duration-pulse, --fx-ease-emphasized, --fx-ease-standard, --fx-font-adjust-display, --fx-font-family-display, --fx-font-family-sans, --fx-font-size-display-sm, --fx-font-size-lg, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-regular, --fx-font-weight-semibold, --fx-knob-motion, --fx-motion-fast, --fx-motion-slow, --fx-radius-badge, --fx-radius-control, --fx-shadow-md, --fx-size-min-target, --fx-space-1, --fx-space-10, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-8, --fx-text-error, --fx-text-on-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary, --fx-viz-accent, --fx-viz-brand, --fx-viz-context, --fx-viz-grid, --fx-viz-ink, --fx-viz-risk, --fx-viz-track

```html
<figure class="fx-chart" data-fx-chart data-type="bar" data-unit="mln söm">
  <figcaption><span class="fx-chart__title">Tuşum oktyabrda 18 % ösdi</span><span class="fx-chart__sub">mln söm · 2026 · CRM</span></figcaption>
  <table class="fx-chart__data">
    <thead><tr><th>Oy</th><th>Tuşum</th></tr></thead>
    <tbody>
      <tr><th>May</th><td>62</td></tr><tr><th>Iyun</th><td>71</td></tr><tr><th>Iyul</th><td>58</td></tr>
      <tr><th>Avg</th><td>80</td></tr><tr><th>Sen</th><td>94</td></tr><tr><th>Okt</th><td data-role="accent">111</td></tr>
    </tbody>
  </table>
</figure>
<figure class="fx-chart" data-fx-chart data-type="line" data-roles="ink,context">
  <figcaption><span class="fx-chart__title">Arizalar: bu yil va ötgan yil</span><span class="fx-chart__sub">dona · haftalik</span></figcaption>
  <table class="fx-chart__data">
    <thead><tr><th>Hafta</th><th>2026</th><th>2025</th></tr></thead>
    <tbody>
      <tr><th>1</th><td>12</td><td>9</td></tr><tr><th>2</th><td>18</td><td>11</td></tr><tr><th>3</th><td>15</td><td>13</td></tr>
      <tr><th>4</th><td>24</td><td>12</td></tr><tr><th>5</th><td>29</td><td>16</td></tr><tr><th>6</th><td>27</td><td>18</td></tr>
    </tbody>
  </table>
</figure>
<figure class="fx-chart" data-fx-chart data-type="share">
  <figcaption><span class="fx-chart__title">Tölov keçikişi</span><span class="fx-chart__sub">buyurtmalar soni</span></figcaption>
  <table class="fx-chart__data">
    <thead><tr><th>Kun</th><th>Soni</th></tr></thead>
    <tbody><tr><th>0–30</th><td>14</td></tr><tr><th>31–60</th><td>6</td></tr><tr><th>61–90</th><td>3</td></tr><tr><th>90+</th><td data-role="risk">2</td></tr></tbody>
  </table>
</figure>
<figure class="fx-chart" data-fx-chart data-type="gauge" data-unit="%" data-target="90">
  <figcaption><span class="fx-chart__title">Davomat</span></figcaption>
  <table class="fx-chart__data"><thead><tr><th>Guruh</th><th>Davomat</th></tr></thead><tbody><tr><th>Frontend 12</th><td>86</td></tr><tr><th>Dizayn 7</th><td>93</td></tr></tbody></table>
</figure>
<figure class="fx-chart" data-fx-chart data-type="funnel" data-unit="ta">
  <figcaption><span class="fx-chart__title">Savdo voronkasi: eng köp yöqotiş — taklifdan keyin</span><span class="fx-chart__sub">bitimlar · oktyabr · CRM</span></figcaption>
  <table class="fx-chart__data">
    <thead><tr><th>Bosqiç</th><th>Bitimlar</th></tr></thead>
    <tbody><tr><th>Yangi lid</th><td>480</td></tr><tr><th>Aloqa</th><td>312</td></tr><tr><th>Taklif</th><td>190</td></tr><tr><th>Muzokara</th><td>74</td></tr><tr><th>Yutildi</th><td>51</td></tr></tbody>
  </table>
</figure>
<figure class="fx-chart" data-fx-chart data-type="area" data-stacked data-legend="interactive" data-roles="ink,brand,context" data-ref="160:Reja" data-unit="mln söm">
  <figcaption><span class="fx-chart__title">Tuşum kanallar böyiça</span><span class="fx-chart__sub">mln söm · 2026</span></figcaption>
  <table class="fx-chart__data">
    <thead><tr><th>Oy</th><th>Dökon</th><th>Sayt</th><th>Telegram</th></tr></thead>
    <tbody>
      <tr><th>May</th><td>60</td><td>28</td><td>12</td></tr><tr><th>Iyun</th><td>64</td><td>34</td><td>14</td></tr><tr><th>Iyul</th><td>58</td><td>41</td><td>15</td></tr>
      <tr><th>Avg</th><td>66</td><td data-note="Sayt aksiyasi">55</td><td>18</td></tr><tr><th>Sen</th><td>70</td><td>52</td><td>21</td></tr><tr><th>Okt</th><td>72</td><td>60</td><td>24</td></tr>
    </tbody>
  </table>
</figure>
<figure class="fx-chart" data-fx-chart data-type="radar" data-roles="brand,context" data-max="5">
  <figcaption><span class="fx-chart__title">Menejer baholari: Aziz jamoa örtaçasidan kuçliroq</span><span class="fx-chart__sub">ball, 0–5 · oktyabr</span></figcaption>
  <table class="fx-chart__data">
    <thead><tr><th>Mezon</th><th>Aziz Karimov</th><th>Jamoa örtaçasi</th></tr></thead>
    <tbody>
      <tr><th>Javob tezligi</th><td>4.6</td><td>3.8</td></tr>
      <tr><th>Konversiya</th><td>4.1</td><td>3.5</td></tr>
      <tr><th>Örtaça çek</th><td>3.2</td><td>3.6</td></tr>
      <tr><th>Takroriy savdo</th><td>4.4</td><td>3.1</td></tr>
      <tr><th>Mijoz bahosi</th><td>4.8</td><td>4.2</td></tr>
      <tr><th>Hisobot intizomi</th><td>3.6</td><td>3.9</td></tr>
    </tbody>
  </table>
</figure>
<figure class="fx-chart" data-fx-chart data-type="scatter" data-unit="mln söm">
  <figcaption><span class="fx-chart__title">Reklama xarajati va tuşum: Telegram eng samarali</span><span class="fx-chart__sub">kanallar · pufak — lidlar soni</span></figcaption>
  <table class="fx-chart__data">
    <thead><tr><th>Kanal</th><th>Xarajat, mln söm</th><th>Tuşum, mln söm</th><th>Lidlar</th></tr></thead>
    <tbody>
      <tr><th>Instagram</th><td>12</td><td>48</td><td>310</td></tr>
      <tr><th>Telegram</th><td data-role="accent">6</td><td>52</td><td>280</td></tr>
      <tr><th>Google</th><td>18</td><td>61</td><td>190</td></tr>
      <tr><th>Yandex</th><td>9</td><td>22</td><td>120</td></tr>
      <tr><th>Billboard</th><td>25</td><td>30</td><td>60</td></tr>
      <tr><th>Radio</th><td>7</td><td>11</td><td>40</td></tr>
      <tr><th>Körgazma</th><td>15</td><td>44</td><td>95</td></tr>
    </tbody>
  </table>
</figure>
<figure class="fx-chart" data-fx-chart data-type="combo" data-unit="mln söm" data-unit2="%">
  <figcaption><span class="fx-chart__title">Tuşum ösdi, marja barqaror</span><span class="fx-chart__sub">2026 · CRM</span></figcaption>
  <table class="fx-chart__data">
    <thead><tr><th>Oy</th><th>Tuşum</th><th>Marja</th></tr></thead>
    <tbody>
      <tr><th>May</th><td>62</td><td>21</td></tr>
      <tr><th>Iyun</th><td>71</td><td>22</td></tr>
      <tr><th>Iyul</th><td>58</td><td>19</td></tr>
      <tr><th>Avg</th><td>80</td><td>23</td></tr>
      <tr><th>Sen</th><td>94</td><td>24</td></tr>
      <tr><th>Okt</th><td>111</td><td>23</td></tr>
    </tbody>
  </table>
</figure>
<figure class="fx-chart" data-fx-chart data-type="treemap" data-unit="mln söm">
  <figcaption><span class="fx-chart__title">Tuşum tarkibi: mebel — yarmidan köpi</span><span class="fx-chart__sub">toifalar · oktyabr</span></figcaption>
  <table class="fx-chart__data">
    <thead><tr><th>Toifa</th><th>Tuşum</th></tr></thead>
    <tbody>
      <tr><th>Mebel</th><td data-role="brand">184</td></tr>
      <tr><th>Maişiy texnika</th><td>96</td></tr>
      <tr><th>Yoritgiçlar</th><td>41</td></tr>
      <tr><th>Gilam</th><td>38</td></tr>
      <tr><th>Oşxona</th><td>27</td></tr>
      <tr><th>Tekstil</th><td>19</td></tr>
      <tr><th>Bolalar</th><td>12</td></tr>
      <tr><th>Boğ</th><td>8</td></tr>
      <tr><th>Sovğalar</th><td>6</td></tr>
      <tr><th>Boşqa mayda</th><td>4</td></tr>
    </tbody>
  </table>
</figure>
<figure class="fx-chart" data-fx-chart data-type="waterfall" data-unit="mln söm">
  <figcaption><span class="fx-chart__title">Sof foyda: tuşumdan qolgani</span><span class="fx-chart__sub">oktyabr · mln söm</span></figcaption>
  <table class="fx-chart__data">
    <thead><tr><th>Modda</th><th>Summa</th></tr></thead>
    <tbody>
      <tr><th>Tuşum</th><td>420</td></tr>
      <tr><th>Tannarx</th><td>-238</td></tr>
      <tr><th>Iş haqi</th><td>-64</td></tr>
      <tr><th>Ijara</th><td>-22</td></tr>
      <tr><th>Reklama</th><td>-18</td></tr>
      <tr><th>Boşqa daromad</th><td>9</td></tr>
      <tr data-total><th>Sof foyda</th><td></td></tr>
    </tbody>
  </table>
</figure>
<figure class="fx-chart" data-fx-chart data-type="sankey" data-unit="ta">
  <figcaption><span class="fx-chart__title">Arizalar qayerdan kelib, qanday tugadi</span><span class="fx-chart__sub">oktyabr · 600 ariza</span></figcaption>
  <table class="fx-chart__data">
    <thead><tr><th>Manba</th><th>Natija</th><th>Soni</th></tr></thead>
    <tbody>
      <tr><th>Sayt</th><td>Aloqa</td><td>180</td></tr>
      <tr><th>Telegram</th><td>Aloqa</td><td>150</td></tr>
      <tr><th>Qönğiroq</th><td>Aloqa</td><td>90</td></tr>
      <tr><th>Sayt</th><td>Rad etildi</td><td>60</td></tr>
      <tr><th>Telegram</th><td>Rad etildi</td><td>40</td></tr>
      <tr><th>Qönğiroq</th><td>Rad etildi</td><td>20</td></tr>
      <tr><th>Instagram</th><td>Aloqa</td><td>40</td></tr>
      <tr><th>Instagram</th><td>Rad etildi</td><td>20</td></tr>
      <tr><th>Aloqa</th><td>Yutildi</td><td data-role="brand">150</td></tr>
      <tr><th>Aloqa</th><td>Yutqazildi</td><td>310</td></tr>
    </tbody>
  </table>
</figure>
<figure class="fx-chart" data-fx-chart data-type="bullet" data-unit="mln söm">
  <figcaption><span class="fx-chart__title">Filiallar: oylik reja</span><span class="fx-chart__sub">fakt / reja · zonalar: yomon · örta · yaxşi</span></figcaption>
  <table class="fx-chart__data">
    <thead><tr><th>Filial</th><th>Fakt</th><th>Reja</th><th>Yomon</th><th>Örta</th><th>Yaxşi</th></tr></thead>
    <tbody>
      <tr><th>Toşkent</th><td>312</td><td>300</td><td>200</td><td>280</td><td>360</td></tr>
      <tr><th>Samarqand</th><td>148</td><td>180</td><td>120</td><td>160</td><td>220</td></tr>
      <tr><th>Farğona</th><td>96</td><td>140</td><td>90</td><td>120</td><td>170</td></tr>
      <tr><th>Buxoro</th><td>71</td><td>80</td><td>50</td><td>70</td><td>100</td></tr>
    </tbody>
  </table>
</figure>
<figure class="fx-chart" data-fx-chart data-type="line" data-brush="12" data-unit="ta">
  <figcaption><span class="fx-chart__title">Kunlik arizalar: duşanba çöqqisi</span><span class="fx-chart__sub">oxirgi 30 kun · pastdagi oraliqni suring</span></figcaption>
  <table class="fx-chart__data">
    <thead><tr><th>Kun</th><th>Arizalar</th></tr></thead>
    <tbody>
      <tr><th>19.09</th><td>40</td></tr>
      <tr><th>20.09</th><td>31</td></tr>
      <tr><th>21.09</th><td>78</td></tr>
      <tr><th>22.09</th><td>61</td></tr>
      <tr><th>23.09</th><td>66</td></tr>
      <tr><th>24.09</th><td>67</td></tr>
      <tr><th>25.09</th><td>55</td></tr>
      <tr><th>26.09</th><td>52</td></tr>
      <tr><th>27.09</th><td>27</td></tr>
      <tr><th>28.09</th><td>50</td></tr>
      <tr><th>29.09</th><td>38</td></tr>
      <tr><th>30.09</th><td>33</td></tr>
      <tr><th>1.10</th><td>42</td></tr>
      <tr><th>2.10</th><td>53</td></tr>
      <tr><th>3.10</th><td>55</td></tr>
      <tr><th>4.10</th><td>46</td></tr>
      <tr><th>5.10</th><td>92</td></tr>
      <tr><th>6.10</th><td>75</td></tr>
      <tr><th>7.10</th><td>79</td></tr>
      <tr><th>8.10</th><td>80</td></tr>
      <tr><th>9.10</th><td>67</td></tr>
      <tr><th>10.10</th><td>64</td></tr>
      <tr><th>11.10</th><td>28</td></tr>
      <tr><th>12.10</th><td>63</td></tr>
      <tr><th>13.10</th><td>52</td></tr>
      <tr><th>14.10</th><td>47</td></tr>
      <tr><th>15.10</th><td>56</td></tr>
      <tr><th>16.10</th><td>68</td></tr>
      <tr><th>17.10</th><td>70</td></tr>
      <tr><th>18.10</th><td>60</td></tr>
    </tbody>
  </table>
</figure>
```

- Qilmang: SVG qölda çizilmaydi va HEX bermang — jadval va rol kaliti (data-roles, data-role) bering.
- Qilmang: Ikki y öqi, halqa (foiz uçun), spidometr işlatmang — çiziqli ölçagiç yoki ikki panel.
- Qilmang: Donutda 4 dan köp bölak, bitta dashboard'da 3 dan köp grafik turi bölmasin.
- Qilmang: Aksentni ingiçka belgida (çiziq, nuqta, matn) işlatmang — faqat yaxlit ustun, bölak, maydon.
- Qilmang: Ustma-ust maydonda 3 dan köp seriya bermang; voronkada bitta seriya, eng katta yöqotişdan boşqa urğu qöymang.
- Qilmang: Punktirni faqat maqsad, çegara va prognoz uçun işlating; izoh (data-note) grafikda bitta.
- Qilmang: Ikki öqli grafik örniga combo: bitta panelda ikki Y öqi yöq — çiziq va ustun alohida panelda, umumiy X.
- Qilmang: Radarni dashboard'da asosiy grafik qilmang — u profil taqqoslaş uçun (≤ 3 seriya, ≥ 3 mezon).
- Qilmang: Treemap'da 8 tadan köp katak bermang — qolgani «Boşqa»ga yiğiladi; sankey faqat hisobot sahifasida.
- Qilmang: Şarşarada kamayişni faqat rang bilan bildirmang — yorliqdagi − belgisi qoladi; qizil (risk) faqat bitta muhim moddaga.

## Grafik kartasi (`chartcard`, beta, 0.23.0 dan)

Grafikni örab turuvçi karta: sarlavha + izoh + amallar (davr segmenti, menyu), grafik, pastda legenda va manba. Grafik öz tuzilmasini saqlaydi (fx-chart), karta faqat qobiq va joylaşuv. Holatlar: yuklanmoqda, böş (#66).

- Qaçon: Dashboard'da grafikni sarlavha, davr va legenda bilan joylaş.
- Qaçon emas: Yagona raqam → `stat`; Hujjat içidagi sodda grafik → `chart`
- Variantlar: data-variant=flat (standart card); data-state=loading|empty (standart ready)
- Tokenlar: --fx-bg-surface, --fx-border-color-default, --fx-border-color-surface, --fx-border-width-default, --fx-control-h-lg, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-semibold, --fx-radius-surface, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-text-primary, --fx-text-tertiary

```html
<section class="fx-chartcard" aria-labelledby="cc1">
  <div class="fx-chartcard__head">
    <div class="fx-chartcard__titles"><h3 class="fx-chartcard__title" id="cc1">Tuşum</h3><span class="fx-chartcard__sub">mln söm · sönggi 6 oy</span></div>
    <div class="fx-chartcard__actions"><div class="fx-segment" data-size="sm" role="group" aria-label="Davr"><button class="fx-segment__item" type="button" aria-pressed="false">3 oy</button><button class="fx-segment__item" type="button" aria-pressed="true">6 oy</button></div></div>
  </div>
  <div class="fx-chartcard__body">
    <figure class="fx-chart" data-fx-chart data-type="bar" data-unit="mln söm">
      <figcaption class="fx-sr-only">Oylik tuşum</figcaption>
      <table class="fx-chart__data"><thead><tr><th>Oy</th><th>Tuşum</th></tr></thead><tbody><tr><th>May</th><td>62</td></tr><tr><th>Iyun</th><td>71</td></tr><tr><th>Iyul</th><td>58</td></tr><tr><th>Avg</th><td>80</td></tr><tr><th>Sen</th><td>94</td></tr><tr><th>Okt</th><td data-role="accent">111</td></tr></tbody></table>
    </figure>
  </div>
  <div class="fx-chartcard__foot"><ul class="fx-legend" aria-label="Rollar"><li class="fx-legend__item"><span class="fx-legend__swatch" data-role="brand"></span><span class="fx-legend__label">Oldingi oylar</span></li><li class="fx-legend__item"><span class="fx-legend__swatch" data-role="accent"></span><span class="fx-legend__label">Joriy oy</span></li></ul><span>Manba: CRM</span></div>
</section>
```

- Qilmang: Kartaga 2 tadan köp grafik joylamang — har grafikka öz kartasi.
- Qilmang: Karta sarlavhasi va grafik sarlavhasini takrorlamang — grafikning figcaption'i fx-sr-only.
- Qilmang: Karta içida aylantiriş (scroll) bölmasin.

## Checkbox, radio, switch (`check`, beta, 0.1.0 dan)

Checkbox, radio, switch — native input + körinadigan quti. Qisman tanlangan (indeterminate), öçiq holat. Tanlov kartasi (.fx-choice) — katta bosiş maydoni, sarlavha va izoh bilan. Kengaytma: ölçam (sm/lg), yorliq tomoni, sarlavha+tavsif, switch içida ikon yoki söz, switch yuklanmoqda, tanlov kartasi (rasm/ikon, narx, belgi öng çetda, nofaol), «hammasini belgilaş» guruhi (xulq data-fx-checkall), şartli oçiliş va raqamli şkala (0–10). Kengaytma: data-appearance=button (radio/checkbox tugma körinişida), forced-colors.

- Qaçon: Ha/yöq tanlov (checkbox), bir neçtadan bitta (radio), darhol ta'sir qiladigan yoqiş (switch).
- Qaçon emas: Köp variantdan bitta, joy kam → `select`
- Variantlar: data-type=checkbox|radio|switch|task (standart checkbox); data-size=sm|lg (standart md); data-label=start (standart end); data-indicator=end (standart start); data-layout=row|grid (standart ustma-ust); data-appearance=button; data-priority=1|2|3|4
- Klaviatura: Space — Belgilaydi / olib taşlaydi
- Tokenlar: --fx-bg-brand-solid, --fx-bg-brand-subtle, --fx-bg-field, --fx-bg-muted, --fx-bg-pressed, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-error, --fx-border-color-field, --fx-border-color-focus, --fx-border-color-strong, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-duration-spin, --fx-ease-enter, --fx-ease-spring, --fx-ease-standard, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-semibold, --fx-motion-base, --fx-motion-fast, --fx-motion-instant, --fx-motion-press, --fx-motion-slow, --fx-priority-1, --fx-priority-2, --fx-priority-3, --fx-priority-4, --fx-radius-checkbox-ratio, --fx-radius-circle, --fx-radius-control, --fx-radius-surface, --fx-shadow-sm, --fx-size-checkbox, --fx-size-control-md, --fx-size-icon-md, --fx-size-min-target, --fx-size-switch-track, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-6, --fx-text-brand, --fx-text-disabled, --fx-text-on-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<label class="fx-check"><input type="checkbox" checked><span class="fx-check__box"></span>Eslab qoliş</label>
<label class="fx-check" data-type="radio"><input type="radio" name="tarif" checked><span class="fx-check__box"></span>Oylik</label>
<label class="fx-check" data-type="switch"><input type="checkbox" role="switch" checked><span class="fx-check__box"></span>Xabarnoma</label>
<fieldset class="fx-fieldset">
  <legend class="fx-legend">Tarif</legend>
  <label class="fx-choice"><span class="fx-check" data-type="radio"><input type="radio" name="tarif" checked><span class="fx-check__box"></span></span><span class="fx-choice__body"><span class="fx-choice__title">Oylik</span><span class="fx-choice__text">Istalgan payt bekor qilasiz.</span></span></label>
  <label class="fx-choice"><span class="fx-check" data-type="radio"><input type="radio" name="tarif"><span class="fx-check__box"></span></span><span class="fx-choice__body"><span class="fx-choice__title">Yillik</span><span class="fx-choice__text">2 oy bepul.</span></span></label>
</fieldset>
<div class="fx-checkgroup" role="group" aria-labelledby="ruxsat-l" data-fx-checkall>
  <span class="fx-legend" id="ruxsat-l">Ruxsatlar</span>
  <label class="fx-check"><input type="checkbox" data-all><span class="fx-check__box"></span>Hammasi</label>
  <div class="fx-checkgroup__items" data-indent>
    <label class="fx-check"><input type="checkbox" checked><span class="fx-check__box"></span>Mijozlarni köriş</label>
    <label class="fx-check"><input type="checkbox"><span class="fx-check__box"></span>Mijozlarni tahrirlaş</label>
    <label class="fx-check"><input type="checkbox"><span class="fx-check__box"></span>Hisobotlar</label>
  </div>
  <span class="fx-checkgroup__count" data-all-count aria-live="polite"></span>
</div>
<label class="fx-check" data-type="switch" data-label="start" data-size="lg"><input type="checkbox" role="switch" checked aria-describedby="sw-d"><span class="fx-check__box"></span><span class="fx-check__body"><span class="fx-check__title">Email xabarnoma</span><span class="fx-check__desc" id="sw-d">Yangi arizalar haqida kuniga bir marta.</span></span></label>
<label class="fx-check" data-type="switch" data-icons><input type="checkbox" role="switch"><span class="fx-check__box"></span>Qoronği rejim</label>
<label class="fx-check" data-type="switch" data-labels><input type="checkbox" role="switch" checked><span class="fx-check__box" data-on="Ha" data-off="Yöq"></span>Hisob faol</label>
<label class="fx-check" data-type="switch"><input type="checkbox" role="switch" aria-busy="true"><span class="fx-check__box"></span>Saqlanmoqda…</label>
<fieldset class="fx-fieldset">
  <legend class="fx-legend">Tölov usuli</legend>
  <label class="fx-choice" data-indicator="end"><span class="fx-check" data-type="radio"><input type="radio" name="tolov" checked><span class="fx-check__box"></span></span><span class="fx-choice__media" aria-hidden="true"><svg viewBox="0 0 20 20"><rect x="2.5" y="5" width="15" height="10" rx="2" fill="none" stroke="currentColor" stroke-width="1.5"/></svg></span><span class="fx-choice__body"><span class="fx-choice__title">Karta</span><span class="fx-choice__text">Uzcard yoki Humo</span></span><span class="fx-choice__aside">0 söm</span></label>
  <label class="fx-choice" data-indicator="end"><span class="fx-check" data-type="radio"><input type="radio" name="tolov" disabled><span class="fx-check__box"></span></span><span class="fx-choice__body"><span class="fx-choice__title">Bank ötkazmasi</span><span class="fx-choice__text">Hozirça mavjud emas</span></span></label>
</fieldset>
<div>
  <label class="fx-check" data-type="radio"><input type="radio" name="aloqa" checked><span class="fx-check__box"></span>Telegram</label>
  <label class="fx-check" data-type="radio"><input type="radio" name="aloqa"><span class="fx-check__box"></span>Boşqa</label>
  <div class="fx-check__reveal"><div><label class="fx-field"><span class="fx-label">Qanday?</span><input class="fx-input" placeholder="Masalan, telefon"></label></div></div>
</div>
<fieldset class="fx-scale">
  <legend class="fx-legend">Xizmatni döstingizga tavsiya qilasizmi?</legend>
  <div class="fx-scale__row">
    <label class="fx-scale__item"><input type="radio" name="nps" value="1"><span>1</span></label>
    <label class="fx-scale__item"><input type="radio" name="nps" value="2"><span>2</span></label>
    <label class="fx-scale__item"><input type="radio" name="nps" value="3" checked><span>3</span></label>
    <label class="fx-scale__item"><input type="radio" name="nps" value="4"><span>4</span></label>
    <label class="fx-scale__item"><input type="radio" name="nps" value="5"><span>5</span></label>
  </div>
  <div class="fx-scale__ends"><span>Umuman yöq</span><span>Albatta</span></div>
</fieldset>
<label class="fx-check" data-type="radio" data-appearance="button"><input type="radio" name="b2-t" checked><span class="fx-check__box"></span>Kunlik</label>
<div style="display:grid;gap:4px"><label class="fx-check" data-type="task" data-priority="1"><input type="checkbox"><span class="fx-check__box"></span>Narx jadvalini yakunlaş</label><label class="fx-check" data-type="task" data-priority="2"><input type="checkbox"><span class="fx-check__box"></span>Mijozga javob</label><label class="fx-check" data-type="task" data-priority="3"><input type="checkbox" checked><span class="fx-check__box"></span>Logo fayllarini yuboriş</label><label class="fx-check" data-type="task" data-priority="4"><input type="checkbox"><span class="fx-check__box"></span>Jild nomlarini tartiblaş</label><label class="fx-check" data-type="task"><input type="checkbox"><span class="fx-check__box"></span>Ustuvorliksiz vazifa</label></div>
```

- Qilmang: Checkbox'ni doira qilmang — radio bilan adaştiriladi.
- Qilmang: Switch'ni forma yuboriş tugmasi bilan birga işlatmang — switch darhol ta'sir qiladi.
- Qilmang: Tavsifni faqat tooltip'ga yaşirmang — .fx-check__desc körinib tursin.
- Qilmang: «Hammasi» guruhida boşliqni qölda belgilamang — xulq bandlardan yiğadi.

## Boşlaş röyxati (`checklist`, beta, 0.23.0 dan)

Yangi foydalanuvçi uçun onboarding kartasi: jarayon çiziği va «2 / 5», qadamlar röyxati. Joriy qadam kengayib, izoh va amal tugmasini körsatadi; belgi bosilsa qadam bajariladi. Hammasi tugasa tabrik matni çiqadi; röyxatni yopiş eslab qolinadi.

- Qaçon: Yangi hisobda birinçi qadamlar: profil, taklif, birinçi yozuv, integratsiya.
- Qaçon emas: Majburiy ketma-ket forma → `wizard`; Faqat jarayon holatini körsatiş → `steps`
- Variantlar: data-state=todo|current|done (standart todo)
- Klaviatura: Tab — Qadam belgilari va amal tugmalari; Space, Enter — Qadamni bajarildi/bajarilmadi
- Tokenlar: --fx-bg-brand-solid, --fx-bg-muted, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-strong, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-ease-spring, --fx-ease-standard, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-motion-base, --fx-motion-fast, --fx-motion-slow, --fx-radius-circle, --fx-radius-surface, --fx-size-icon-md, --fx-size-icon-sm, --fx-space-1, --fx-space-3, --fx-space-4, --fx-space-5, --fx-text-on-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<section class="fx-checklist" data-fx-checklist data-fx-checklist-key="boshlash" aria-labelledby="cl-t">
  <div class="fx-checklist__head">
    <h2 class="fx-checklist__title" id="cl-t">Boşlaş</h2>
    <button class="fx-btn fx-checklist__dismiss" data-variant="ghost" data-size="sm" data-shape="icon" data-checklist="dismiss" aria-label="Röyxatni yopiş"><svg viewBox="0 0 16 16" aria-hidden="true"><path d="M4 4l8 8M12 4l-8 8" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg></button>
    <p class="fx-checklist__sub">Beşta qadamda iş muhitini sozlang.</p>
    <div class="fx-checklist__bar"><div class="fx-checklist__track" role="progressbar" aria-label="Boşlaş jarayoni" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0"></div><span class="fx-checklist__count" aria-live="polite"></span></div>
  </div>
  <ol class="fx-checklist__list">
    <li class="fx-checklist__item" data-state="done" data-id="profil"><button type="button" class="fx-checklist__box" role="checkbox" aria-checked="true" aria-label="Profilni töldiring"></button><span class="fx-checklist__name">Profilni töldiring</span><div class="fx-checklist__more"><p class="fx-checklist__text">Ism va rasm qöying.</p><button class="fx-btn" data-size="sm" data-variant="primary" data-checklist="done">Profilga ötiş</button></div></li>
    <li class="fx-checklist__item" data-state="todo" data-id="jamoa"><button type="button" class="fx-checklist__box" role="checkbox" aria-checked="false" aria-label="Jamoadoşlarni taklif qiling"></button><span class="fx-checklist__name">Jamoadoşlarni taklif qiling</span><div class="fx-checklist__more"><p class="fx-checklist__text">Kamida bitta hamkasbingizni email orqali taklif qiling.</p><button class="fx-btn" data-size="sm" data-variant="primary" data-checklist="done">Taklif yuboriş</button></div></li>
    <li class="fx-checklist__item" data-state="todo" data-id="vazifa"><button type="button" class="fx-checklist__box" role="checkbox" aria-checked="false" aria-label="Birinçi vazifani yarating"></button><span class="fx-checklist__name">Birinçi vazifani yarating</span><div class="fx-checklist__more"><p class="fx-checklist__text">Vazifa yaratib, mas'ul belgilang.</p><button class="fx-btn" data-size="sm" data-variant="primary" data-checklist="done">Vazifa yaratiş</button></div></li>
    <li class="fx-checklist__item" data-state="todo" data-id="bildirish"><button type="button" class="fx-checklist__box" role="checkbox" aria-checked="false" aria-label="Bildirişnomalarni sozlang"></button><span class="fx-checklist__name">Bildirişnomalarni sozlang</span><div class="fx-checklist__more"><p class="fx-checklist__text">Qaysi xabarlar kerakligini tanlang.</p><button class="fx-btn" data-size="sm" data-variant="primary" data-checklist="done">Sozlamalarga ötiş</button></div></li>
    <li class="fx-checklist__item" data-state="todo" data-id="integratsiya"><button type="button" class="fx-checklist__box" role="checkbox" aria-checked="false" aria-label="Telegram'ni ulang"></button><span class="fx-checklist__name">Telegram'ni ulang</span><div class="fx-checklist__more"><p class="fx-checklist__text">Ariza kelganda guruhga xabar boradi.</p><button class="fx-btn" data-size="sm" data-variant="primary" data-checklist="done">Ulaş</button></div></li>
  </ol>
  <p class="fx-checklist__done">Barakalla! Hammasi tayyor — endi işni boşlasangiz böladi.</p>
</section>
```

- Qilmang: 5–7 tadan köp qadam qöymang — foydalanuvçi çarçaydi.
- Qilmang: Majburiy emas qadamni majburiydek körsatmang; röyxatni yopiş imkoni doim bölsin.

## Checkout (`checkout`, beta, 0.28.0 dan)

Tölov / checkout formasi (naqş): raqamlangan bölimlar — aloqa (telefon +998), yetkazib beriş usuli va manzil, tölov usuli (bank kartasi — raqam va muddat niqobi bilan, naqd, bölib tölaş); öngda yopişqoq buyurtma xulosasi — mahsulotlar, promo-kod, jami va «… söm tölaş». Yuborilayotganda forma öçadi, tugmada yuklaniş.

- Qaçon: Onlayn dökon, kurs yoki xizmat uçun buyurtma va tölov sahifasi. Tarif sotib oliş (karta + promo-kod + xulosa).
- Qaçon emas: Köp qadamli, har qadam alohida ekran → `wizard`; Mavjud obuna va hisob-fakturalar → `billing`
- Variantlar: data-state=submitting (standart —)
- Klaviatura: ← → ↑ ↓ — Yetkaziş va tölov usullari içida (native radio); Enter — Formani yuboradi (promo-kod maydonida — kodni qöllaydi)
- Tokenlar: --fx-bg-muted, --fx-bg-page, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-strong, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-lg, --fx-control-h-sm, --fx-ease-standard, --fx-fg-success, --fx-font-size-lg, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-motion-fast, --fx-radius-circle, --fx-radius-control, --fx-radius-surface, --fx-size-icon-md, --fx-size-icon-sm, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-space-8, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<form class="fx-checkout" onsubmit="event.preventDefault(); this.dataset.state='submitting'; this.querySelector('[type=submit]').setAttribute('aria-busy','true')">
  <div class="fx-checkout__main">
    <fieldset class="fx-checkout__section">
      <legend class="fx-checkout__title"><span class="fx-checkout__step" aria-hidden="true">1</span>Aloqa</legend>
      <div class="fx-checkout__row">
        <label class="fx-field"><span class="fx-label" data-required>Ism familiya</span><input class="fx-input" name="ism" required autocomplete="name" placeholder="Jasur Abdullayev"></label>
        <div class="fx-field"><label class="fx-label" for="co-tel" data-required>Telefon</label><div class="fx-phone" data-fx-phone data-countries="UZ KZ KG TJ RU"><button class="fx-phone__country" type="button" popovertarget="co-tel-pop"></button><input class="fx-phone__input" id="co-tel" name="telefon" required><div class="fx-popover fx-phone__pop" popover id="co-tel-pop"></div></div></div>
      </div>
    </fieldset>
    <fieldset class="fx-checkout__section">
      <legend class="fx-checkout__title"><span class="fx-checkout__step" aria-hidden="true">2</span>Yetkazib beriş</legend>
      <div class="fx-checkout__options"><label class="fx-checkout__option"><span class="fx-check" data-type="radio"><input type="radio" name="yetkazish" value="kuryer" checked><span class="fx-check__box"></span></span><span class="fx-checkout__option-name">Kuryer</span><span class="fx-checkout__option-price">25 000 söm</span><span class="fx-checkout__option-desc">Toşkent böylab ertaga, 10:00–20:00</span></label><label class="fx-checkout__option"><span class="fx-check" data-type="radio"><input type="radio" name="yetkazish" value="punkt"><span class="fx-check__box"></span></span><span class="fx-checkout__option-name">Olib ketiş</span><span class="fx-checkout__option-price">Bepul</span><span class="fx-checkout__option-desc">Çilonzor filiali, bugun 18:00 dan</span></label></div>
      <div class="fx-checkout__row">
        <label class="fx-field"><span class="fx-label" data-required>Viloyat</span><span class="fx-select-wrap"><select class="fx-select" name="viloyat" required><option>Toşkent şahri</option><option>Toşkent viloyati</option><option>Samarqand</option><option>Farğona</option><option>Andijon</option></select></span></label>
        <label class="fx-field"><span class="fx-label" data-required>Tuman</span><input class="fx-input" name="tuman" required placeholder="Yunusobod"></label>
      </div>
      <label class="fx-field"><span class="fx-label" data-required>Manzil</span><input class="fx-input" name="manzil" required autocomplete="street-address" placeholder="Amir Temur köçasi, 108-uy, 24-xonadon"></label>
      <label class="fx-field"><span class="fx-label">Möljal yoki izoh</span><input class="fx-input" name="moljal" placeholder="Masalan, 45-maktab yonida, 3-podyezd"></label>
    </fieldset>
    <fieldset class="fx-checkout__section">
      <legend class="fx-checkout__title"><span class="fx-checkout__step" aria-hidden="true">3</span>Tölov</legend>
      <div class="fx-checkout__options"><label class="fx-checkout__option"><span class="fx-check" data-type="radio"><input type="radio" name="tolov" value="karta" checked data-pay="card"><span class="fx-check__box"></span></span><span class="fx-checkout__option-name">Bank kartasi</span><span class="fx-checkout__option-price"></span><span class="fx-checkout__option-desc">Uzcard yoki Humo — SMS kod bilan tasdiqlanadi</span></label><label class="fx-checkout__option"><span class="fx-check" data-type="radio"><input type="radio" name="tolov" value="naqd"><span class="fx-check__box"></span></span><span class="fx-checkout__option-name">Naqd pul</span><span class="fx-checkout__option-price"></span><span class="fx-checkout__option-desc">Kuryerga qabul qilganda</span></label><label class="fx-checkout__option"><span class="fx-check" data-type="radio"><input type="radio" name="tolov" value="nasiya"><span class="fx-check__box"></span></span><span class="fx-checkout__option-name">Bölib tölaş</span><span class="fx-checkout__option-price">0 %</span><span class="fx-checkout__option-desc">6 oyga, oyiga 218 200 sömdan</span></label></div>
      <div class="fx-checkout__card">
        <label class="fx-field"><span class="fx-label" data-required>Karta raqami</span><input class="fx-input" name="karta" data-fx-mask="#### #### #### ####" placeholder="8600 0000 0000 0000" autocomplete="cc-number" inputmode="numeric"></label>
        <div class="fx-checkout__row"><label class="fx-field"><span class="fx-label" data-required>Amal qiliş muddati</span><input class="fx-input" name="muddat" data-fx-mask="##/##" placeholder="OO/YY" autocomplete="cc-exp" inputmode="numeric"></label><label class="fx-field"><span class="fx-label">Karta egasi</span><input class="fx-input" name="egasi" autocomplete="cc-name" placeholder="JASUR ABDULLAYEV"></label></div>
      </div>
    </fieldset>
  </div>
  <aside class="fx-checkout__summary" aria-labelledby="co-s">
    <h2 class="fx-checkout__summary-title" id="co-s">Buyurtmangiz</h2>
    <ul class="fx-checkout__items"><li class="fx-checkout__item"><span class="fx-checkout__thumb"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M3.5 6.5L10 3l6.5 3.5v7L10 17l-6.5-3.5z M3.5 6.5L10 10l6.5-3.5M10 10v7" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linejoin="round"/></svg><span class="fx-checkout__qty" aria-label="1 dona">1</span></span><span class="fx-checkout__name">Simsiz quloqçin<span class="fx-checkout__meta">Qora</span></span><span class="fx-checkout__price">649 000 söm</span></li><li class="fx-checkout__item"><span class="fx-checkout__thumb"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M3.5 6.5L10 3l6.5 3.5v7L10 17l-6.5-3.5z M3.5 6.5L10 10l6.5-3.5M10 10v7" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linejoin="round"/></svg><span class="fx-checkout__qty" aria-label="2 dona">2</span></span><span class="fx-checkout__name">Telefon ğilofi<span class="fx-checkout__meta">Şaffof · 2 dona</span></span><span class="fx-checkout__price">378 000 söm</span></li><li class="fx-checkout__item"><span class="fx-checkout__thumb"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M3.5 6.5L10 3l6.5 3.5v7L10 17l-6.5-3.5z M3.5 6.5L10 10l6.5-3.5M10 10v7" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linejoin="round"/></svg><span class="fx-checkout__qty" aria-label="1 dona">1</span></span><span class="fx-checkout__name">Tez quvvatlagiç 30 W<span class="fx-checkout__meta">Oq</span></span><span class="fx-checkout__price">257 000 söm</span></li></ul>
    <div class="fx-coupon" data-fx-coupon data-codes='{"KUZ10":{"value":"−128 400 soʻm"}}'><div class="fx-coupon__form"><input class="fx-input fx-coupon__input" data-size="sm" name="promo" aria-label="Promo-kod" placeholder="Promo-kod"><button class="fx-btn" data-size="sm" data-coupon-apply>Qöllaş</button></div></div>
    <dl class="fx-checkout__totals">
      <div><dt>Mahsulotlar (4 dona)</dt><dd>1 284 000 söm</dd></div>
      <div><dt>Yetkazib beriş</dt><dd>25 000 söm</dd></div>
      <div data-type="total"><dt>Jami</dt><dd>1 309 000 söm</dd></div>
    </dl>
    <button class="fx-btn" type="submit" data-variant="primary" data-size="lg" data-width="full">1 309 000 söm tölaş</button>
    <p class="fx-checkout__secure"><svg viewBox="0 0 20 20" aria-hidden="true"><rect x="4.5" y="9" width="11" height="8" rx="1.5" fill="none" stroke="currentColor" stroke-width="1.6"/><path d="M7 9V6.5a3 3 0 0 1 6 0V9" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/></svg>Karta ma'lumotlari bizda saqlanmaydi</p>
  </aside>
</form>
```

- Qilmang: Hamma maydonni bitta uzun ustunga tizmang — bölimlarni raqamlang (Aloqa · Yetkaziş · Tölov), xulosa yonda körinib tursin.
- Qilmang: Tölaş tugmasida faqat «Tölaş» demang — summani yozing («1 309 000 söm tölaş»).
- Qilmang: Karta maydonlarini naqd tanlanganda ham körsatmang — faqat «Bank kartasi»da oçiladi.
- Qilmang: Yuborişda tugmani ikki marta bosiş mumkin qilib qoldirmang — aria-busy va forma öçiriladi.

## AI checkpoint (`checkpoint`, beta, 0.29.0 dan)

AI suhbati yoki agent lentasidagi «şu nuqtaga qaytiş» belgisi (4.204, Vercel AI Elements «Checkpoint»; Cursor va Claude Code'dagi rewind). Ajratuvçi çiziq ustida tabletka: bayroq, nom va vaqt, qisqa meta («3 fayl, 12 qator») va «Şu nuqtaga qaytiş» tugmasi. Bosilganda bekor qilinadigan «fx-checkpoint-restore» hodisasi {id, after} çiqadi — ilova fayl va ma'lumotlarni şu holatga qaytaradi; töxtatilmasa belgidan keyingi yozuvlar [data-reverted] (xira, kulrang, inert — bosilmaydi) böladi, belgi data-state="restored" va tugma «Qaytarişni bekor qiliş»ga aylanadi (fx-checkpoint-undo). Lentada bir vaqtda bitta belgi qaytarilgan böladi. Natija jonli hududda aytiladi. data-variant: line (standart) yoki compact (çiziqsiz tabletka).

- Qaçon: AI agent fayl yoki ma'lumotni özgartiradigan suhbatlarda (kod yordamçisi, hujjat tahriri). Uzun AI sessiyasida tajriba qilib, keyin oldingi holatga qaytiş kerak bölganda.
- Qaçon emas: Sana yoki bölim ajratuvçisi → `divider`; Bitta amalni bekor qiliş → `toast`; Versiyalar tarixi → `timeline`
- Variantlar: data-variant=line|compact (standart line)
- Klaviatura: Enter, Space — Şu nuqtaga qaytadi / qaytarişni bekor qiladi; Tab — Bekor qilingan yozuvlar ötkazib yuboriladi (inert)
- Tokenlar: --fx-bg-brand-solid, --fx-bg-brand-subtle, --fx-bg-muted, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-sm, --fx-ease-standard, --fx-font-size-xs, --fx-font-weight-medium, --fx-motion-base, --fx-motion-fast, --fx-motion-press, --fx-radius-pill, --fx-size-icon-sm, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-6, --fx-text-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<div class="fx-conversation__log" role="log" aria-label="Agent suhbati" style="display: grid; gap: var(--fx-space-3)">
  <div class="fx-message" data-role="user"><div class="fx-message__body">Narx bölimiga yillik tarif qöş.</div></div>
  <div class="fx-message"><span class="fx-avatar" data-color="purple" role="img" aria-label="Mister Fox">MF</span><div class="fx-message__meta"><span class="fx-message__name">Mister Fox</span><span class="fx-ai-label">AI</span></div><div class="fx-message__body"><p>Qöşdim: <code>pricing.html</code> va <code>pricing.css</code> yangilandi, oylik/yillik almaştirgiç işlaydi.</p></div></div>
  <div class="fx-checkpoint" data-fx-checkpoint data-id="cp-1" role="group" aria-label="Checkpoint, 14:32"><span class="fx-checkpoint__pill"><span class="fx-checkpoint__icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 21V4M5 4h11l-2 4 2 4H5"/></svg></span><span class="fx-checkpoint__label">Checkpoint · <time datetime="2026-10-18T14:32:00+05:00">14:32</time></span><span class="fx-checkpoint__meta">2 fayl, 48 qator</span><button class="fx-checkpoint__restore" type="button" data-checkpoint="restore">Şu nuqtaga qaytiş</button></span></div>
  <div class="fx-message" data-role="user"><div class="fx-message__body">Endi hamma narxlarni dollarga ötkaz.</div></div>
  <div class="fx-message"><span class="fx-avatar" data-color="purple" role="img" aria-label="Mister Fox">MF</span><div class="fx-message__meta"><span class="fx-message__name">Mister Fox</span><span class="fx-ai-label">AI</span></div><div class="fx-message__body"><p>Bajarildi: 6 ta narx dollarga ötkazildi, söm olib taşlandi.</p></div></div>
  <div class="fx-checkpoint" data-fx-checkpoint data-id="cp-2" role="group" aria-label="Checkpoint, 14:37"><span class="fx-checkpoint__pill"><span class="fx-checkpoint__icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 21V4M5 4h11l-2 4 2 4H5"/></svg></span><span class="fx-checkpoint__label">Checkpoint · <time datetime="2026-10-18T14:37:00+05:00">14:37</time></span><span class="fx-checkpoint__meta">1 fayl, 6 qator</span><button class="fx-checkpoint__restore" type="button" data-checkpoint="restore">Şu nuqtaga qaytiş</button></span></div>
  <div class="fx-message" data-role="user"><div class="fx-message__body">Yöq, sömda qolsin edi…</div></div>
</div>
```

- Qilmang: Har xabarga checkpoint qöymang — faqat fayl, ma'lumot yoki holat özgargan nuqtalarda.
- Qilmang: Qaytarişni jimgina qilmang — keyingi yozuvlar körinib tursin (xira) va «bekor qiliş» imkoni bölsin.
- Qilmang: Qaytarib bölmaydigan taşqi amallarni (yuborilgan email, tölov) checkpoint bilan «qaytdi» deb körsatmang — buni oçiq yozing.

## Chip (`chip`, beta, 0.14.0 dan)

Filtr çipi (bosiladi, tanlangani teskari rangda, içida son — alohida belgi) yoki teg (× bilan olib taşlanadi). Kengaytma: avatarli chip, aria-haspopup chevron (filtr-dropdown), data-type=assist|suggestion, .fx-chip-group (öraş / scroll / data-max + data-more), sm ölçamda ≥24px bosiş maydoni.

- Qaçon: Röyxatni tez filtrlaş; tanlangan qiymatlarni teg sifatida körsatiş.
- Qaçon emas: Bir xil ma'lumotning körinişlari → `segment`; Faqat holat yorliği → `badge`
- Variantlar: data-type=filter|tag|assist|suggestion (standart filter); data-size=md|sm (standart md); data-overflow=scroll|wrap
- Klaviatura: Enter, Space — Filtrni yoqadi / öçiradi
- Tokenlar: --fx-bg-brand-subtle, --fx-bg-brand-subtle-hover, --fx-bg-field, --fx-bg-muted, --fx-bg-page, --fx-bg-subtle, --fx-border-color-field, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-sm, --fx-ease-standard, --fx-font-size-sm, --fx-font-size-xs, --fx-knob-pill, --fx-motion-base, --fx-motion-fast, --fx-motion-instant, --fx-motion-press, --fx-radius-badge, --fx-radius-circle, --fx-radius-pill, --fx-size-icon-sm, --fx-size-min-target, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-text-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<div role="group" aria-label="Holat" style="display:flex;gap:8px;flex-wrap:wrap">
  <button class="fx-chip" aria-pressed="true">Hammasi <span class="fx-chip__count">248</span></button>
  <button class="fx-chip" aria-pressed="false">Yangi <span class="fx-chip__count">12</span></button>
  <button class="fx-chip" aria-pressed="false">Obunaçi</button>
</div>
<span class="fx-chip" data-type="tag">Toşkent <button class="fx-chip__remove" aria-label="Olib taşlaş: Toşkent">×</button></span>
<div class="fx-chip-group" data-max="3"><button type="button" class="fx-chip" aria-haspopup="true" aria-expanded="false">Holat</button><button type="button" class="fx-chip" data-type="suggestion">Bugungi vazifalar</button><span class="fx-chip" data-type="tag"><span class="fx-avatar" data-color="coral" aria-hidden="true">SR</span>Sardor</span><button type="button" class="fx-chip" data-type="assist">Jadvalga qöşiş</button><button type="button" class="fx-chip" data-more aria-label="Yana 2 ta chipni körsatiş">+2</button></div>
```

- Qilmang: Sonni matnga qöşib yozmang («15-asr · 36») — alohida belgi (WDS).
- Qilmang: Chipni asosiy amal uçun işlatmang — tugma.

## Yopiş tugmasi (`close`, beta, 0.22.0 dan)

Dialog, sheet, alert va chip uçun bir xil ✕ tugmasi. Bosiş maydoni körinişidan kattaroq; nomi aria-label'da.

- Qaçon: Dialog, sheet, alert, toast yoki chip'ni yopiş/olib taşlaş.
- Qaçon emas: Oddiy amal tugmasi → `button`
- Variantlar: data-size=sm|md|lg (standart md); data-shape=round (standart default)
- Klaviatura: Enter, Space — Yopadi
- Tokenlar: --fx-bg-muted, --fx-border-color-focus, --fx-border-width-focus, --fx-control-h-md, --fx-control-h-sm, --fx-ease-standard, --fx-font-size-sm, --fx-motion-fast, --fx-motion-instant, --fx-motion-press, --fx-radius-circle, --fx-radius-control, --fx-size-icon-sm, --fx-size-min-target, --fx-space-1, --fx-text-disabled, --fx-text-primary, --fx-text-tertiary

```html
<button class="fx-close" type="button" aria-label="Yopiş"></button>
<button class="fx-close" type="button" data-size="sm" data-shape="round" aria-label="Bildirişnomani yopiş"></button>
<button class="fx-close" type="button" data-size="lg" aria-label="Oynani yopiş"></button>
```

- Qilmang: aria-label'siz qoldirmang — ✕ belgisi ekran öquvçida ma'no bermaydi.
- Qilmang: Özgarişlarni saqlaş/bekor qiliş örniga ✕ işlatmang.

## Kod bloki (`code`, beta, 0.22.0 dan)

Monospace blok: fayl nomi va til sarlavhasi, nusxa tugmasi (fx-copy), qator raqamlari, ajratilgan va farq (+/−) qatorlari. Bir qatorli snippet (`$ npx …`) va matn içidagi kod ham şu yerda.

- Qaçon: Buyruq, sozlama, kod namunasi.
- Qaçon emas: Bir söz yoki identifikator matn içida → `kbd`
- Variantlar: data-variant=snippet (standart block)
- Klaviatura: Tab, Arrow — Aylantiriladigan kodni klaviatura bilan siljitadi
- Tokenlar: --fx-bg-brand-subtle, --fx-bg-error-subtle, --fx-bg-muted, --fx-bg-subtle, --fx-bg-success-subtle, --fx-border-color-default, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-fg-error, --fx-fg-success, --fx-font-adjust-mono, --fx-font-family-mono, --fx-font-size-sm, --fx-font-size-xs, --fx-radius-badge, --fx-radius-control, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-6, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<div class="fx-code" data-lines>
  <div class="fx-code__header"><span class="fx-code__name">tailwind.config.js</span><button class="fx-copy" type="button" data-fx-copy data-copy-target="#kod1" aria-label="Kodni nusxalaş"><svg data-fx-icon="copy" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><rect x="9" y="9" width="11" height="11" rx="2"/><path d="M5 15V6a2 2 0 0 1 2-2h9"/></svg><svg data-fx-icon="check" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><path d="M5 12l5 5 9-10"/></svg><span class="fx-copy__status" role="status"></span></button></div>
  <pre class="fx-code__pre" tabindex="0"><code id="kod1"><span class="fx-code__line">export default {</span><span class="fx-code__line" data-diff="del">  theme: "eski",</span><span class="fx-code__line" data-diff="add">  theme: "yangi",</span><span class="fx-code__line" data-highlight>  prefix: "fx-",</span><span class="fx-code__line">}</span></code></pre>
</div>
<div class="fx-code" data-variant="snippet"><pre class="fx-code__pre"><code>npx foxui update</code></pre></div>
<p>Buyruq: <code class="fx-code-inline">npm test</code></p>
```

- Qilmang: Rangli sintaksis (highlight) uçun HEX yozmang — rol tokenlari.
- Qilmang: Qator raqami va farq belgisini nusxaga qöşmang (CSS counter/::after — nusxada yöq).

## Ikki ustunli kod farqi (`codediff`, beta, 0.29.0 dan)

Eski va yangi kod yonma-yon (4.82): qatorlar tekislangan, har yon öz raqami bilan, öçirilgan qator − va qizil fon, qöşilgani + va yaşil fon (belgi matnda — rang yolğiz emas), qatordagi aniq özgariş <mark> bilan. Qöşilgan yoki öçirilgan qator qarşisida çiziqli böş katak. Tor joyda (konteyner < 40rem) yoki data-view="unified" bilan bir ustunga ötadi. Faqat CSS — farqni server yoki build hisoblaydi.

- Qaçon: Changelog, migratsiya qöllanmasi, kod şarhi: «oldin → keyin». Hujjatda API özgarişini körsatiş.
- Qaçon emas: Bitta kod parçasi yoki bir ustunli +/− qatorlar → `code`; Matn yoki maydon qiymatlari tarixi → `timeline`
- Variantlar: data-diff=del|add|empty (standart none); data-view=unified (standart split)
- Tokenlar: --fx-bg-error-subtle, --fx-bg-info-subtle, --fx-bg-muted, --fx-bg-success-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-width-default, --fx-fg-error, --fx-fg-success, --fx-font-adjust-mono, --fx-font-adjust-sans, --fx-font-family-mono, --fx-font-family-sans, --fx-font-size-xs, --fx-font-weight-semibold, --fx-radius-badge, --fx-radius-surface, --fx-space-1, --fx-space-2, --fx-space-4, --fx-space-8, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<figure class="fx-codediff" style="margin:0" aria-label="narx.js: QQS 15 % dan 12 % ga, kurs va çegirma qöşildi">
  <div class="fx-codediff__head"><span class="fx-codediff__file"><b>narx.js</b> · oldin</span><span class="fx-codediff__file"><b>narx.js</b> · keyin (0.28.0)</span></div>
  <div class="fx-codediff__body">
    <div class="fx-codediff__fold">@@ 12–16 qatorlar · narx hisoblaş @@</div>
    <div class="fx-codediff__row"><div class="fx-codediff__cell" data-n="12" data-diff="del"><code>export function narx(mahsulot) {</code></div><div class="fx-codediff__cell" data-n="12" data-diff="add"><code>export function narx(mahsulot<mark>, kurs = 1</mark>) {</code></div></div>
    <div class="fx-codediff__row"><div class="fx-codediff__cell" data-n="13" data-diff="del"><code>  const asosiy = mahsulot.narx;</code></div><div class="fx-codediff__cell" data-n="13" data-diff="add"><code>  const asosiy = mahsulot.narx * kurs;</code></div></div>
    <div class="fx-codediff__row"><div class="fx-codediff__cell" data-n="14" data-diff="del"><code>  const qqs = asosiy * <mark>0.15</mark>;</code></div><div class="fx-codediff__cell" data-n="14" data-diff="add"><code>  const qqs = asosiy * <mark>0.12</mark>;</code></div></div>
    <div class="fx-codediff__row"><div class="fx-codediff__cell" data-n="15"><code>  return asosiy + qqs;</code></div><div class="fx-codediff__cell" data-n="15"><code>  return asosiy + qqs;</code></div></div>
    <div class="fx-codediff__row"><div class="fx-codediff__cell" data-diff="empty" aria-hidden="true"></div><div class="fx-codediff__cell" data-n="16" data-diff="add"><code>  // chegirma kartasi boʻlsa</code></div></div>
    <div class="fx-codediff__row"><div class="fx-codediff__cell" data-diff="empty" aria-hidden="true"></div><div class="fx-codediff__cell" data-n="17" data-diff="add"><code>  if (mahsulot.karta) return (asosiy + qqs) * 0.95;</code></div></div>
    <div class="fx-codediff__row"><div class="fx-codediff__cell" data-n="16"><code>}</code></div><div class="fx-codediff__cell" data-n="18"><code>}</code></div></div>
  </div>
</figure>
```

- Qilmang: Katta fayllarni töliq körsatmang — özgarmagan qismlarni fold qatori bilan yiğing.
- Qilmang: Faqat rangga tayanmang — −/+ belgilari va qator raqamlari qolsin.
- Qilmang: Bir ustunli kiçik özgariş uçun işlatmang — fx-code'dagi diff qatorlari yetarli.

## Rang tanlagiç (`colorpicker`, beta, 0.24.0 dan)

Erkin rang tanlaş: töyinganlik/yorqinlik maydoni (siçqonça va klaviatura), ton çiziği, HEX va RGB maydonlari, tayyor ranglar qatori va pipetka (brauzer qöllasa). Qiymat — #rrggbb; hodisa `fx-colorpicker-change`. Faqat 6–12 ta tayyor rang kerak bölsa — `swatch`. Alfa va ğildirak (4.106): data-alpha — şaffoflik çiziği (şaxmat fon ustida), HEX 8 xonali (#1C7ED6CC), hodisada detail.alpha (0–1); data-shape="wheel" — aylana: burçak — ton, markazdan masofa — töyinganlik, ostidagi çiziq — yorqinlik.

- Qaçon: Foydalanuvçi istalgan rangni tanlaşi kerak (mavzu, yorliq, diagramma rangi).
- Qaçon emas: Oldindan belgilangan bir neçta rang → `swatch`
- Variantlar: data-size=sm (standart md); data-alpha=; data-shape=square|wheel (standart square)
- Klaviatura: ← → — Töyinganlik ±1 (Shift — ±10); ↑ ↓ — Yorqinlik ±1 (Shift — ±10); Home, End — Töyinganlik 0 / 100; ← → (ton chizigʻida) — Ton ±1; Gʻildirakda ← → — Ton 1° (Shift — 10°); Gʻildirakda ↑ ↓ — Töyinganlik 1 % (Shift — 10 %)
- Tokenlar: --fx-bg-muted, --fx-bg-surface, --fx-border-color-focus, --fx-border-color-strong, --fx-border-width-default, --fx-border-width-focus, --fx-color-black, --fx-color-white, --fx-cp-color, --fx-cp-dim, --fx-cp-hue, --fx-cp-rail, --fx-cp-solid, --fx-cp-wheel, --fx-cp-x, --fx-cp-y, --fx-ease-standard, --fx-font-size-xs, --fx-motion-instant, --fx-motion-press, --fx-popover-width, --fx-radius-circle, --fx-radius-control, --fx-shadow-md, --fx-size-checkbox, --fx-size-control-md, --fx-size-icon-md, --fx-space-1, --fx-space-2, --fx-space-3, --fx-sw, --fx-text-primary, --fx-text-tertiary

```html
<div class="fx-colorpicker" data-fx-colorpicker data-value="#e8590c">
  <div class="fx-colorpicker__area" aria-label="Töyinganlik va yorqinlik"><span class="fx-colorpicker__thumb"></span></div>
  <input type="range" class="fx-slider fx-colorpicker__hue" min="0" max="360" aria-label="Rang toni">
  <div class="fx-colorpicker__row">
    <span class="fx-colorpicker__preview" aria-hidden="true"></span>
    <input class="fx-input fx-colorpicker__hex" name="rang" maxlength="7" aria-label="HEX qiymati" spellcheck="false" autocomplete="off">
    <button type="button" class="fx-btn fx-colorpicker__pipette" data-variant="outline" data-size="sm" hidden>Pipetka</button>
  </div>
  <div class="fx-colorpicker__rgb">
    <label>R<input class="fx-input" data-size="sm" type="number" min="0" max="255" inputmode="numeric"></label>
    <label>G<input class="fx-input" data-size="sm" type="number" min="0" max="255" inputmode="numeric"></label>
    <label>B<input class="fx-input" data-size="sm" type="number" min="0" max="255" inputmode="numeric"></label>
  </div>
  <div class="fx-colorpicker__swatches" role="group" aria-label="Tayyor ranglar">
    <button type="button" class="fx-colorpicker__swatch" data-color="#e8590c" aria-label="Zarğaldoq"></button>
    <button type="button" class="fx-colorpicker__swatch" data-color="#2f9e44" aria-label="Yaşil"></button>
    <button type="button" class="fx-colorpicker__swatch" data-color="#1c7ed6" aria-label="Moviy"></button>
    <button type="button" class="fx-colorpicker__swatch" data-color="#7048e8" aria-label="Binafşa"></button>
  </div>
</div>
<!-- Alfa va gʻildirak (4.106) -->
<div class="fx-colorpicker" data-fx-colorpicker data-alpha data-value="#1c7ed6cc" style="margin-block-start:var(--fx-space-6)">
  <div class="fx-colorpicker__area" aria-label="Töyinganlik va yorqinlik"><span class="fx-colorpicker__thumb"></span></div>
  <input type="range" class="fx-slider fx-colorpicker__hue" min="0" max="360" aria-label="Rang toni">
  <input type="range" class="fx-slider fx-colorpicker__alpha" min="0" max="100" aria-label="Şaffoflik">
  <div class="fx-colorpicker__row"><span class="fx-colorpicker__preview" aria-hidden="true"></span><input class="fx-input fx-colorpicker__hex" name="soya_rangi" maxlength="9" aria-label="HEX qiymati (şaffoflik bilan)" spellcheck="false" autocomplete="off"></div>
</div>
<div class="fx-colorpicker" data-fx-colorpicker data-shape="wheel" data-value="#2f9e44" style="margin-block-start:var(--fx-space-6)">
  <div class="fx-colorpicker__area" aria-label="Ton va töyinganlik ğildiragi"><span class="fx-colorpicker__thumb"></span></div>
  <input type="range" class="fx-slider fx-colorpicker__hue" min="0" max="100" aria-label="Yorqinlik">
  <div class="fx-colorpicker__row"><span class="fx-colorpicker__preview" aria-hidden="true"></span><input class="fx-input fx-colorpicker__hex" name="teg_rangi" maxlength="7" aria-label="HEX qiymati" spellcheck="false" autocomplete="off"></div>
</div>
```

- Qilmang: Brend ranglari uçun erkin tanlovni oçmang — tayyor mavzu (`data-fx-theme`) yoki `swatch` yetarli.
- Qilmang: Rangni faqat rang bilan bildirmang: HEX matni körinib tursin.
- Qilmang: Kontrastni tekşirmay matn rangi sifatida saqlamang.

## Combobox (`combobox`, beta, 0.15.0 dan)

Yozib qidiriladigan tanlov: köp variant (şahar, mijoz, mahsulot). Yozilsa röyxat filtrlanadi; ↑ ↓ Enter bilan tanlanadi. Qöşimça: köp tanlov (chiplar maydon içida, avatarli odam tanlagiç), «Yaratiş» varianti, yuklanmoqda holati va taşqi (async) qidiruv. Xulq foxui.js'da.

- Qaçon: Köp variantdan bittasini qidirib tanlaş. Odam tanlagiç: köp tanlov + avatar + email. Yangi qiymatni şu yerning özida yaratiş (data-create).
- Qaçon emas: 5–15 variant → `select`
- Klaviatura: ↓ — Röyxatni oçadi; ↑ ↓ — Variant; Enter — Tanlaydi; Esc — Yopadi; Backspace (koʻp tanlov, boʻsh maydon) — Oxirgi tanlovni olib taşlaydi
- Tokenlar: --fx-bg-surface, --fx-border-color-surface, --fx-border-width-default, --fx-control-h-sm, --fx-font-size-sm, --fx-radius-overlay, --fx-shadow-lg, --fx-size-avatar-sm, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-text-tertiary

```html
<label class="fx-field" for="cb"><span class="fx-label">Şahar</span></label>
<div class="fx-combobox" data-fx-combobox>
  <input class="fx-input" id="cb" role="combobox" aria-expanded="false" aria-controls="cb-list" aria-autocomplete="list" autocomplete="off" placeholder="Yozing yoki tanlang">
  <div class="fx-combobox__popup" hidden>
    <ul class="fx-listbox" role="listbox" id="cb-list">
      <li class="fx-option" role="option" id="cb1">Toşkent</li>
      <li class="fx-option" role="option" id="cb2">Samarqand</li>
      <li class="fx-option" role="option" id="cb3">Farğona</li>
      <li class="fx-option" role="option" id="cb4">Buxoro</li>
      <li class="fx-listbox__empty" hidden>Topilmadi</li>
    </ul>
  </div>
</div>
<label class="fx-field" for="pp"><span class="fx-label">Mas'ullar</span></label>
<div class="fx-combobox" data-fx-combobox data-multiple data-create data-create-label="Yangi qöşiş">
  <div class="fx-tags">
    <input class="fx-tags__input" id="pp" role="combobox" aria-expanded="false" aria-controls="pp-list" aria-autocomplete="list" autocomplete="off" placeholder="Ism yoki email">
    <input type="hidden" name="masullar">
  </div>
  <div class="fx-combobox__popup" hidden>
    <ul class="fx-listbox" role="listbox" id="pp-list" aria-label="Xodimlar">
      <li class="fx-option fx-option--lg" role="option" id="pp1" aria-selected="true"><span class="fx-avatar" data-size="sm" data-color="yellow" aria-hidden="true">AK</span><span class="fx-option__body">Aziz Karimov<span class="fx-option__desc">aziz@namuna.uz</span></span></li>
      <li class="fx-option fx-option--lg" role="option" id="pp2"><span class="fx-avatar" data-size="sm" data-color="green" aria-hidden="true">BT</span><span class="fx-option__body">Bobur Toshmatov<span class="fx-option__desc">bobur@namuna.uz</span></span></li>
      <li class="fx-option fx-option--lg" role="option" id="pp3"><span class="fx-avatar" data-size="sm" data-color="pink" aria-hidden="true">DR</span><span class="fx-option__body">Dilnoza Rahimova<span class="fx-option__desc">dilnoza@namuna.uz</span></span></li>
      <li class="fx-listbox__empty" hidden>Topilmadi</li>
    </ul>
  </div>
</div>
<label class="fx-field" for="cb-as"><span class="fx-label">Mijoz (serverdan qidiriladi)</span></label>
<div class="fx-combobox" data-fx-combobox data-async data-loading>
  <input class="fx-input" id="cb-as" role="combobox" aria-expanded="false" aria-controls="cb-as-list" aria-autocomplete="list" autocomplete="off" placeholder="Kamida 2 harf">
  <div class="fx-combobox__popup" hidden>
    <div class="fx-combobox__status" role="status"><span class="fx-spinner" aria-hidden="true"></span>Yuklanmoqda…</div>
    <ul class="fx-listbox" role="listbox" id="cb-as-list"><li class="fx-listbox__empty" hidden>Topilmadi</li></ul>
  </div>
</div>
```

- Qilmang: 5 tadan kam variant uçun combobox qilmang — select yoki radio.
- Qilmang: Köp tanlovda tanlanganlarni maydondan taşqarida ayrim röyxatda takrorlamang — chiplar içida.

## Buyruqlar oynasi (`command`, beta, 0.15.0 dan)

Ctrl/⌘+K: hamma sahifa va amalni bir joydan qidiriş. Native <dialog> tepada, qidiruv maydoni, guruhlangan variantlar, böş holat, pastda maslahat. Xulq foxui.js'da. Içma-iç sahifalar (variant bosilsa içiga kiradi, Backspace/Esc — orqaga) va «Oxirgi» tanlanganlar ham bor.

- Qaçon: Köp bölimli ilovada tez ötiş va amallar.
- Qaçon emas: Röyxat içida qidiriş → `search`
- Klaviatura: Ctrl/⌘ + K — Oçadi / yopadi; ↑ ↓ — Variant; Enter — Oçadi; Esc — Yopadi; Backspace (boʻsh maydonda), Esc (sahifa ichida) — Bir sahifa orqaga
- Tokenlar: --fx-bg-muted, --fx-bg-overlay, --fx-bg-surface, --fx-border-color-default, --fx-border-color-surface, --fx-border-width-default, --fx-control-h-lg, --fx-dialog-width, --fx-ease-enter, --fx-ease-exit, --fx-font-size-md, --fx-font-size-xs, --fx-font-weight-medium, --fx-motion-base, --fx-motion-exit-fast, --fx-motion-scale-enter, --fx-radius-badge, --fx-radius-overlay, --fx-shadow-lg, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-space-8, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<button class="fx-btn" data-fx-command-open="cmd">Qidiriş <kbd class="fx-kbd">⌘K</kbd></button>
<dialog class="fx-command" id="cmd" aria-label="Buyruqlar" data-fx-command>
  <div class="fx-command__crumbs" hidden></div>
  <input class="fx-command__input" placeholder="Sahifa yoki amalni yozing" role="combobox" aria-expanded="true" aria-controls="cmd-list" autocomplete="off">
  <ul class="fx-listbox" role="listbox" id="cmd-list">
    <li class="fx-listbox__group" role="presentation" data-fx-recent>Oxirgilar</li>
    <li class="fx-listbox__group" role="presentation">Sahifalar</li>
    <li class="fx-option" role="option" id="c1"><a href="#" tabindex="-1" style="color:inherit;text-decoration:none">Arizalar</a></li>
    <li class="fx-option" role="option" id="c2" data-keywords="mijoz crm"><a href="#" tabindex="-1" style="color:inherit;text-decoration:none">Mijozlar</a></li>
    <li class="fx-listbox__group" role="presentation">Amallar</li>
    <li class="fx-option" role="option" id="c3">Yangi ariza <span class="fx-option__hint">N</span></li>
    <li class="fx-option" role="option" id="c4">Qoronği rejim</li>
    <li class="fx-option" role="option" id="c5" data-page="tema" data-keywords="rang mavzu">Mavzuni özgartiriş…</li>
    <li class="fx-option" role="option" id="c6" data-parent="tema">Moviy mavzu</li>
    <li class="fx-option" role="option" id="c7" data-parent="tema">Yaşil mavzu</li>
    <li class="fx-listbox__empty" hidden>Heç narsa topilmadi</li>
  </ul>
  <div class="fx-command__foot"><span>↑ ↓ tanlaş</span><span>Enter oçiş</span><span>Esc yopiş</span></div>
</dialog>
```

- Qilmang: Har bir tugmani buyruqlar oynasiga qöymang — sahifalar va tez-tez amallar.
- Qilmang: Sahifa içida sahifa içida sahifa qilmang — ikki bosqiçdan çuqur bölsa, tuzilmani qayta öylang.

## Izohlar ipi (`comments`, beta, 0.24.0 dan)

Izohlar ipi: avatar, muallif, vaqt, matn; amallar — javob, tahrirlaş (özining), hal qiliş. Javoblar bir qavat içida. Hal qilingan izoh xiralaşadi va «Hal qilingan» belgisi çiqadi. Javob/tahrir formasini xulq quradi.

- Qaçon: Hujjat, vazifa yoki dizayn ostida muhokama ipi: javob beriş, tahrirlaş va hal qiliş kerak bölganda.
- Qaçon emas: Real vaqtli suhbat → `message`; Faoliyat tarixi → `timeline`
- Klaviatura: Tab — Amallar orasida; Enter/Space — Amalni bajaradi; Esc — Forma yopiladi (fokus amalga qaytadi)
- Tokenlar: --fx-bg-muted, --fx-bg-pressed, --fx-bg-success-subtle, --fx-border-color-default, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-ease-standard, --fx-fg-success, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-motion-fast, --fx-radius-badge, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-6, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<section class="fx-comments" data-fx-comments data-me="Siz" aria-label="Izohlar" style="max-inline-size: 36rem">
  <ol class="fx-comments__list">
    <li class="fx-comment" id="c1">
      <span class="fx-avatar" data-size="sm" data-color="coral" role="img" aria-label="Dilnoza Karimova">DK</span>
      <div class="fx-comment__main">
        <header class="fx-comment__head"><b class="fx-comment__author">Dilnoza Karimova</b><time class="fx-comment__time" datetime="2026-10-17T09:12">2 soat oldin</time><span class="fx-comment__badge" hidden>Hal qilingan</span></header>
        <div class="fx-comment__body"><p>Narxlar jadvalidagi çegirma ustuni 3-qatorda körinmayapti, tekşirib körsangiz.</p></div>
        <div class="fx-comment__actions">
          <button class="fx-comment__action" type="button" data-action="reply">Javob</button>
          <button class="fx-comment__action" type="button" data-action="resolve" aria-pressed="false">Hal qiliş</button>
        </div>
      </div>
      <ol class="fx-comment__replies">
        <li class="fx-comment" id="c1-r1" data-reply data-own>
          <span class="fx-avatar" data-size="sm" data-color="green" role="img" aria-label="Siz">SI</span>
          <div class="fx-comment__main">
            <header class="fx-comment__head"><b class="fx-comment__author">Siz</b><time class="fx-comment__time" datetime="2026-10-17T09:40">1 soat oldin</time></header>
            <div class="fx-comment__body"><p>Ha, ustun yaşirin edi. Hozir tuzataman.</p></div>
            <div class="fx-comment__actions">
              <button class="fx-comment__action" type="button" data-action="reply">Javob</button>
              <button class="fx-comment__action" type="button" data-action="edit">Tahrirlaş</button>
            </div>
          </div>
        </li>
      </ol>
    </li>
    <li class="fx-comment" id="c2">
      <span class="fx-avatar" data-size="sm" data-color="purple" role="img" aria-label="Jasur Aliyev">JA</span>
      <div class="fx-comment__main">
        <header class="fx-comment__head"><b class="fx-comment__author">Jasur Aliyev</b><time class="fx-comment__time" datetime="2026-10-16T17:05">keça</time><span class="fx-comment__badge" hidden>Hal qilingan</span></header>
        <div class="fx-comment__body"><p>Logotip yuqori çapda biroz kiçik.</p></div>
        <div class="fx-comment__actions">
          <button class="fx-comment__action" type="button" data-action="reply">Javob</button>
          <button class="fx-comment__action" type="button" data-action="resolve" aria-pressed="false">Hal qiliş</button>
        </div>
      </div>
    </li>
  </ol>
</section>
```

- Qilmang: Ikki qavatdan çuqur içma-iç javob qilmang — uzoq ip öqilmaydi (javobga javob 1-qavatda @ismi bilan).
- Qilmang: Hal qilingan izohni öçirmang — tarix qolsin, faqat xiralaştiring.

## Oldin/keyin taqqoslaş (`compare`, beta, 0.28.0 dan)

Ikki holatni ustma-ust qöyib, ajratgiçni sudrab soliştiriş (4.77): eski va yangi dizayn, «kulrang qolip» va tayyor libos, rasm tahriri. Boşqaruv — butun maydon ustidagi körinmas haqiqiy range: siçqonça bilan sudraş, bosiş, barmoq va klaviatura (← → Home End) özidan işlaydi. Tutqiç fokusda halqa oladi, «Oldin» / «Keyin» yorliqlari burçaklarda. Içida rasm, video yoki istalgan HTML (masalan jonli komponentlar) bölişi mumkin.

- Qaçon: Redizayn, «oldin va keyin» natija, rasm tahriri yoki filtrni körsatiş. Landingda «kulrang qolip → tayyor libos» kabi özgarişni his ettiriş.
- Qaçon emas: Bir neçta rasmni körsatiş → `carousel`; Kod özgarişlari → `code`
- Variantlar: data-ratio=video|square (standart auto); data-side=before|after (standart before)
- Klaviatura: ← → — Ajratgiçni 1% ga siljitadi; PageUp, PageDown — Katta qadam; Home, End — Butunlay «oldin» yoki «keyin»
- Tokenlar: --fx-bg-muted, --fx-bg-static-light, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-compare-pos, --fx-ease-standard, --fx-font-size-xs, --fx-font-weight-medium, --fx-knob-blur, --fx-knob-motion, --fx-motion-fast, --fx-radius-badge, --fx-radius-circle, --fx-radius-surface, --fx-shadow-md, --fx-size-control-md, --fx-size-icon-md, --fx-space-1, --fx-space-2, --fx-space-3, --fx-text-primary, --fx-text-secondary

```html
<div class="fx-compare" data-fx-compare data-ratio="video">
  <div class="fx-compare__before" style="display:grid;align-content:center;gap:var(--fx-space-3);padding:var(--fx-space-8) var(--fx-space-12);background:var(--fx-bg-surface)">
    <span class="fx-skeleton" style="inline-size:40%;block-size:var(--fx-space-6)"></span>
    <span class="fx-skeleton" style="inline-size:70%"></span>
    <div style="display:grid;grid-template-columns:repeat(3,1fr);gap:var(--fx-space-3)"><span class="fx-skeleton" style="block-size:calc(var(--fx-space-12) * 2)"></span><span class="fx-skeleton" style="block-size:calc(var(--fx-space-12) * 2)"></span><span class="fx-skeleton" style="block-size:calc(var(--fx-space-12) * 2)"></span></div>
    <span class="fx-skeleton" style="inline-size:25%;block-size:var(--fx-size-control-sm)"></span>
  </div>
  <div class="fx-compare__after" style="display:grid;align-content:center;gap:var(--fx-space-3);padding:var(--fx-space-8) var(--fx-space-12);background:var(--fx-bg-page)">
    <h3 class="fx-heading" data-size="h3" style="margin:0">Bugungi arizalar</h3>
    <p style="margin:0;color:var(--fx-text-secondary)">Keça bilan soliştirganda 12 ta köproq</p>
    <div style="display:grid;grid-template-columns:repeat(3,1fr);gap:var(--fx-space-3)"><div class="fx-stat" data-color="purple"><span class="fx-stat__label">Yangi</span><span class="fx-stat__value">48</span></div><div class="fx-stat" data-color="blue"><span class="fx-stat__label">Jarayonda</span><span class="fx-stat__value">17</span></div><div class="fx-stat" data-color="green"><span class="fx-stat__label">Yopildi</span><span class="fx-stat__value">9</span></div></div>
    <button class="fx-btn" data-variant="primary" type="button" tabindex="-1" style="justify-self:start">Ariza qöşiş</button>
  </div>
  <span class="fx-compare__label" data-side="before" aria-hidden="true">Kulrang qolip</span>
  <span class="fx-compare__label" data-side="after" aria-hidden="true">FoxUI libosi</span>
  <span class="fx-compare__handle" aria-hidden="true"></span>
  <input class="fx-compare__range" type="range" min="0" max="100" value="50" aria-label="Kulrang qolip va FoxUI libosini soliştiriş" data-before="kulrang qolip" data-after="FoxUI libosi">
</div>
```

- Qilmang: Bir-biriga öxşamagan ikki rasmni soliştirmang — kompozitsiya bir xil bölsin.
- Qilmang: Içidagi tugma va havolalarni bosiladigan qilib qoldirmang — range ustida turadi; namoyiş elementlariga tabindex="-1".
- Qilmang: Yorliqsiz qoldirmang — qaysi tomon «oldin» ekani yozilsin.

## Yoziş paneli (composer) (`composer`, beta, 0.23.0 dan)

AI çat va messenjer uçun BITTA yoziş paneli: biriktiriş tugmasi, avto-ösuvçi maydon, ixtiyoriy emoji, matn bölmasa mikrofon — matn paydo bölsa yuboriş (ikon animatsiyali almaşadi), oqim ketayotganda «Töxtatiş». Tepada javob/tahrir qatori, @eslatma takliflari menyusi, ovoz yoziş holati (brend nuqta, mono taymer) va bloklangan holat (qulf + sabab). Enter yuboradi, Shift+Enter — yangi qator, Esc — javobni bekor qiladi; yuborilganda fx-send hodisasi çiqadi.

- Qaçon: AI agent bilan suhbatda prompt kiritiş. Messenjer va izohlar oqimida xabar yoziş.
- Qaçon emas: Bir qatorli qidiruv yoki filtr → `search`; Oddiy forma maydoni (sarlavha, tavsif) → `input`
- Variantlar: data-variant=messenger (standart ai); data-voice=off (standart on)
- Klaviatura: Enter — Yuboradi (fx-send); Shift+Enter — Yangi qator; Esc — Javob/tahrirni, @menyuni yoki ovoz yozişni bekor qiladi; ↑ (maydon boʻsh) — fx-edit-last — oxirgi xabarni tahrirlaş; @ + ↑ ↓, Enter/Tab — Eslatma tanlaş
- Tokenlar: --fx-bg-brand-solid, --fx-bg-brand-solid-hover, --fx-bg-brand-subtle, --fx-bg-field, --fx-bg-muted, --fx-bg-pressed, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-field, --fx-border-color-focus, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-md, --fx-duration-pulse, --fx-ease-enter, --fx-ease-spring, --fx-ease-standard, --fx-font-adjust-mono, --fx-font-family-mono, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-motion-base, --fx-motion-fast, --fx-motion-instant, --fx-motion-press, --fx-motion-shift-sm, --fx-radius-circle, --fx-radius-control, --fx-radius-overlay, --fx-radius-surface, --fx-shadow-lg, --fx-shadow-sm, --fx-size-icon-lg, --fx-size-icon-md, --fx-size-icon-sm, --fx-size-min-target, --fx-size-status-dot, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-text-brand, --fx-text-disabled, --fx-text-on-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<form class="fx-composer" id="ai-composer" data-fx-composer aria-label="Mister Foxga xabar">
  <div class="fx-composer__ctx" data-kind="reply" hidden><svg data-fx-icon="reply" viewBox="0 0 24 24" aria-hidden="true"><path d="M9 14L4 9l5-5M4 9h10a6 6 0 0 1 6 6v3"/></svg><svg data-fx-icon="edit" viewBox="0 0 24 24" aria-hidden="true"><path d="M4 20h4L19 9l-4-4L4 16v4zM13.5 6.5l4 4"/></svg><span class="fx-composer__ctx-body"><span class="fx-composer__ctx-author"></span><span class="fx-composer__ctx-text"></span></span><button type="button" class="fx-composer__ctx-close" aria-label="Javob yoki tahrirni bekor qiliş"><svg data-fx-icon="x" viewBox="0 0 24 24" aria-hidden="true"><path d="M6 6l12 12M18 6L6 18"/></svg></button></div>
  <div class="fx-composer__attachments"><div class="fx-attachment" data-fx-attachment><span class="fx-attachment__thumb" aria-hidden="true">PDF</span><span class="fx-attachment__name">oktabr-hisobot.pdf</span><span class="fx-attachment__meta">1,2 MB</span><button type="button" class="fx-attachment__remove" aria-label="oktabr-hisobot.pdf ni olib taşlaş"><svg data-fx-icon="x" viewBox="0 0 24 24" aria-hidden="true"><path d="M6 6l12 12M18 6L6 18"/></svg></button></div></div>
  <div class="fx-composer__row">
    <input type="file" multiple hidden>
    <button type="button" class="fx-composer__btn" data-composer-attach aria-label="Fayl biriktiriş"><svg data-fx-icon="clip" viewBox="0 0 24 24" aria-hidden="true"><path d="M21 12.5l-8.5 8.5a5 5 0 0 1-7-7l9-9a3.3 3.3 0 0 1 4.7 4.7l-9 9a1.7 1.7 0 0 1-2.4-2.4l8.3-8.3"/></svg></button>
    <textarea class="fx-composer__input" rows="1" placeholder="Mister Foxga yozing…" aria-label="Xabar"></textarea>
    <div class="fx-composer__rec"><span class="fx-composer__rec-dot" aria-hidden="true"></span><span class="fx-composer__rec-time" role="timer" aria-label="Yozuv vaqti">0:00</span><span class="fx-composer__rec-label">Ovoz yozilmoqda…</span><button type="button" class="fx-composer__rec-cancel">Bekor qiliş</button></div>
    <button type="button" class="fx-composer__send" aria-label="Ovoz yoziş" data-label-mic="Ovoz yoziş" data-label-send="Yuboriş" data-label-stop="Töxtatiş"><svg data-fx-icon="mic" viewBox="0 0 24 24" aria-hidden="true"><rect x="9" y="3" width="6" height="11" rx="3"/><path d="M5 11a7 7 0 0 0 14 0M12 18v3"/></svg><svg data-fx-icon="send" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 19V5M5 12l7-7 7 7"/></svg><svg data-fx-icon="stop" viewBox="0 0 24 24" aria-hidden="true"><rect x="7" y="7" width="10" height="10" rx="2"/></svg></button>
  </div>
  <ul class="fx-composer__mention" id="ai-m" role="listbox" aria-label="Eslatma takliflari" hidden>
    <li role="option" id="ai-m1" data-value="dilnoza"><span class="fx-composer__mention-name">Dilnoza</span><span class="fx-composer__mention-role">dizayner</span></li>
    <li role="option" id="ai-m2" data-value="doniyor"><span class="fx-composer__mention-name">Doniyor</span><span class="fx-composer__mention-role">dasturçi</span></li>
    <li role="option" id="ai-m3" data-value="mister-fox"><span class="fx-composer__mention-name">Mister Fox</span><span class="fx-composer__mention-role">agent</span></li>
  </ul>
  <div class="fx-composer__foot"><span>Enter — yuboriş · Shift+Enter — yangi qator</span><span class="fx-context-meter" role="meter" aria-label="Kontekst" aria-valuemin="0" aria-valuemax="100" aria-valuenow="48" style="--fx-meter-value: 48%"><span class="fx-context-meter__ring" aria-hidden="true"></span><span class="fx-context-meter__value">48 %</span></span></div>
  <div class="fx-composer__lock" role="status"><svg data-fx-icon="lock" viewBox="0 0 24 24" aria-hidden="true"><rect x="5" y="11" width="14" height="9" rx="2"/><path d="M8 11V8a4 4 0 0 1 8 0v3"/></svg><span>Yoziş bloklangan.</span></div>
</form>
<form class="fx-composer" id="msn-composer" data-variant="messenger" data-fx-composer aria-label="Dilnozaga xabar">
  <div class="fx-composer__ctx" data-kind="reply"><svg data-fx-icon="reply" viewBox="0 0 24 24" aria-hidden="true"><path d="M9 14L4 9l5-5M4 9h10a6 6 0 0 1 6 6v3"/></svg><svg data-fx-icon="edit" viewBox="0 0 24 24" aria-hidden="true"><path d="M4 20h4L19 9l-4-4L4 16v4zM13.5 6.5l4 4"/></svg><span class="fx-composer__ctx-body"><span class="fx-composer__ctx-author">Dilnoza</span><span class="fx-composer__ctx-text">Maketni ertaga ertalab yuboraman, kelişdikmi?</span></span><button type="button" class="fx-composer__ctx-close" aria-label="Javob yoki tahrirni bekor qiliş"><svg data-fx-icon="x" viewBox="0 0 24 24" aria-hidden="true"><path d="M6 6l12 12M18 6L6 18"/></svg></button></div>
  <div class="fx-composer__row">
    <button type="button" class="fx-composer__btn" data-composer-attach aria-label="Fayl biriktiriş"><svg data-fx-icon="clip" viewBox="0 0 24 24" aria-hidden="true"><path d="M21 12.5l-8.5 8.5a5 5 0 0 1-7-7l9-9a3.3 3.3 0 0 1 4.7 4.7l-9 9a1.7 1.7 0 0 1-2.4-2.4l8.3-8.3"/></svg></button>
    <textarea class="fx-composer__input" rows="1" placeholder="Xabar" aria-label="Xabar"></textarea>
    <button type="button" class="fx-composer__btn" data-composer-emoji aria-label="Emoji"><svg data-fx-icon="smile" viewBox="0 0 24 24" aria-hidden="true"><circle cx="12" cy="12" r="9"/><path d="M8.5 14a4.5 4.5 0 0 0 7 0M9 9.5v.01M15 9.5v.01"/></svg></button>
    <div class="fx-composer__rec"><span class="fx-composer__rec-dot" aria-hidden="true"></span><span class="fx-composer__rec-time" role="timer" aria-label="Yozuv vaqti">0:00</span><span class="fx-composer__rec-label">Ovoz yozilmoqda…</span><button type="button" class="fx-composer__rec-cancel">Bekor qiliş</button></div>
    <button type="button" class="fx-composer__send" aria-label="Ovoz yoziş" data-label-mic="Ovoz yoziş" data-label-send="Yuboriş" data-label-stop="Töxtatiş"><svg data-fx-icon="mic" viewBox="0 0 24 24" aria-hidden="true"><rect x="9" y="3" width="6" height="11" rx="3"/><path d="M5 11a7 7 0 0 0 14 0M12 18v3"/></svg><svg data-fx-icon="send" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 19V5M5 12l7-7 7 7"/></svg><svg data-fx-icon="stop" viewBox="0 0 24 24" aria-hidden="true"><rect x="7" y="7" width="10" height="10" rx="2"/></svg></button>
  </div>
  <ul class="fx-composer__mention" id="msn-m" role="listbox" aria-label="Eslatma takliflari" hidden>
    <li role="option" id="msn-m1" data-value="dilnoza"><span class="fx-composer__mention-name">Dilnoza</span><span class="fx-composer__mention-role">dizayner</span></li>
    <li role="option" id="msn-m2" data-value="doniyor"><span class="fx-composer__mention-name">Doniyor</span><span class="fx-composer__mention-role">dasturçi</span></li>
    <li role="option" id="msn-m3" data-value="mister-fox"><span class="fx-composer__mention-name">Mister Fox</span><span class="fx-composer__mention-role">agent</span></li>
  </ul>
</form>
<form class="fx-composer" data-variant="messenger" data-locked aria-label="Yoziş bloklangan">
  <div class="fx-composer__lock" role="status"><svg data-fx-icon="lock" viewBox="0 0 24 24" aria-hidden="true"><rect x="5" y="11" width="14" height="9" rx="2"/><path d="M8 11V8a4 4 0 0 1 8 0v3"/></svg><span>Bu kanalda faqat administratorlar yozadi.</span></div>
</form>
```

- Qilmang: AI çat va messenjer uçun ikkita alohida panel yasamang — data-variant="messenger" yetadi.
- Qilmang: Yuboriş tugmasini matn bölmaganda ham “yuboriş” deb qoldirmang — mikrofon bölmasa ham aria-label holatga qarab özgarsin (JS buni qiladi).
- Qilmang: Ovoz yozişni qizil bilan körsatmang — brend nuqta pulsatsiyasi va vaqt matni yetadi.
- Qilmang: Bloklangan holatda sababni yaşirmang — qulf yonida söz bilan yozing.

## Cookie roziligi (`consent`, beta, 0.28.0 dan)

Cookie va kuzatuv roziligi naqşi (4.180, GOV.UK Cookie banner; GDPR 2-bosqiç uçun): pastki karta — nima uçun cookie kerakligi bir-ikki gapda, «Qabul qiliş», «Rad etiş» (bir xil vaznli — rad etiş yaşirilmaydi) va «Sozlaş». Sozlaşda toifalar: zarur (doim yoqiq), statistika, marketing — har biri izoh bilan. Tanlovdan keyin karta tasdiq xabariga aylanadi («Siz … qabul qildingiz», «Yaşiriş»), fokus xabarga ötadi. foxui.js tanlovni saqlaydi va "fx-consent" hodisasini yuboradi — skriptlar (analitika) faqat şundan keyin ulanadi. Footer'dagi [data-consent-open] tugmasi sozlamalarni qayta oçadi.

- Qaçon: Sayt analitika, reklama yoki uçinçi tomon cookie fayllarini işlatsa. Footer'da «Cookie sozlamalari» — tanlovni keyin özgartiriş uçun (data-consent-open).
- Qaçon emas: Sayt faqat zarur cookie işlatsa — oddiy eslatma → `banner`; Şartlarga rozilik (forma içida) → `check`
- Variantlar: data-position=corner|inline (standart bottom)
- Klaviatura: Tab — Tugmalar va kalitlar orasida; Enter, Space — Tanlov; «Sozlaş» toifalarni oçadi / yopadi; Space — Toifa kalitini yoqadi / öçiradi
- Tokenlar: --fx-bg-category-yellow-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-dialog-width, --fx-ease-enter, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-motion-shift-lg, --fx-motion-slow, --fx-radius-badge, --fx-radius-control, --fx-radius-overlay, --fx-shadow-lg, --fx-size-control-sm, --fx-size-icon-md, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-text-primary, --fx-text-secondary

```html
<section class="fx-consent" data-fx-consent="namuna" data-demo data-position="inline" aria-labelledby="ck-t">
  <div class="fx-consent__main">
    <div class="fx-consent__head">
      <span class="fx-consent__icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"><path d="M21 12.5A9 9 0 1 1 11.5 3a3 3 0 0 0 4 3.5 3 3 0 0 0 3.5 4 3 3 0 0 0 2 2z"/><path d="M8.5 9.5h.01M8 14h.01M12 12h.01M14 16h.01"/></svg></span>
      <div>
        <h2 class="fx-consent__title" id="ck-t">Cookie fayllar haqida</h2>
        <p class="fx-consent__text">Sayt işlaşi uçun zarur cookie fayllardan foydalanamiz. Qöşimçalari — qaysi sahifalar foydali ekanini biliş uçun; ularni özingiz tanlaysiz. <a href="#">Batafsil</a></p>
      </div>
    </div>
    <fieldset class="fx-consent__prefs">
      <legend class="fx-sr-only">Cookie toifalari</legend>
      <div class="fx-consent__pref"><span><span class="fx-consent__pref-title" id="ck-z">Zarur</span><span class="fx-consent__pref-text">Kiriş, xavfsizlik va sizning tanlovingiz. Öçirib bölmaydi.</span></span><label class="fx-check" data-type="switch"><input type="checkbox" role="switch" name="zarur" checked disabled aria-labelledby="ck-z"><span class="fx-check__box"></span></label></div>
      <div class="fx-consent__pref"><span><span class="fx-consent__pref-title" id="ck-s">Statistika</span><span class="fx-consent__pref-text">Qaysi sahifa köp öqilişini nomsiz hisoblaydi.</span></span><label class="fx-check" data-type="switch"><input type="checkbox" role="switch" name="statistika" aria-labelledby="ck-s"><span class="fx-check__box"></span></label></div>
      <div class="fx-consent__pref"><span><span class="fx-consent__pref-title" id="ck-m">Marketing</span><span class="fx-consent__pref-text">Reklama samarasini ölçaydi.</span></span><label class="fx-check" data-type="switch"><input type="checkbox" role="switch" name="marketing" aria-labelledby="ck-m"><span class="fx-check__box"></span></label></div>
    </fieldset>
    <div class="fx-consent__actions">
      <button class="fx-btn" data-variant="primary" type="button" data-consent="accept">Qabul qiliş</button>
      <button class="fx-btn" type="button" data-consent="reject">Rad etiş</button>
      <button class="fx-btn" data-variant="tonal" type="button" data-consent="save">Tanlovni saqlaş</button>
      <button class="fx-btn" data-variant="ghost" type="button" data-consent="settings" aria-expanded="false">Sozlaş</button>
    </div>
  </div>
  <div class="fx-consent__done" hidden>
    <p class="fx-consent__done-text"></p>
    <button class="fx-btn" data-variant="ghost" data-size="sm" type="button" data-consent-open="namuna">Özgartiriş</button>
    <button class="fx-btn" data-size="sm" type="button" data-consent="hide">Yaşiriş</button>
  </div>
</section>
```

- Qilmang: «Rad etiş»ni kiçik havola qilib yaşirmang — «Qabul qiliş» bilan bir xil vaznda bölsin.
- Qilmang: Statistika va marketing toifalarini oldindan yoqib qöymang — rozilik faol bölsin.
- Qilmang: Bannerni sahifani tösuvçi modal qilmang — sayt işlab turaversin.
- Qilmang: Tanlovdan oldin analitika skriptini ulamang — "fx-consent" hodisasini kuting.

## Aloqa bölimi (`contact`, beta, 0.29.0 dan)

Marketing saytining «Aloqa» sahifasi (4.177): çapda sarlavha, aloqa kanallari (telefon, email, Telegram, manzil — ikon, nom, izoh va bosiladigan qiymat: tel:, mailto:, https://t.me) va iş vaqti jadvali; öngda ariza formasi. Forma yuborilgaç ilova data-state="sent" qöyadi — maydonlar yaşirinadi, .fx-contact__done (rahmat xabari) körinadi va fokus unga ötadi. Ostida ixtiyoriy filiallar qatori. data-layout: split (standart) yoki stack (forma markazda, kanallar ostida bir qatorda).

- Qaçon: Marketing saytining «Aloqa» sahifasi. Landing oxirida «Boğlaniş» bölimi (stack).
- Qaçon emas: Faqat email obuna formasi → `cta`; Köp qadamli sörovnoma yoki ariza → `wizard`
- Variantlar: data-layout=split|stack (standart split)
- Klaviatura: Tab — Kanal havolalari, keyin forma maydonlari; Enter (maydonda) — Formani yuboradi
- Tokenlar: --fx-bg-subtle, --fx-bg-success-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-lg, --fx-dialog-width, --fx-ease-enter, --fx-fg-success, --fx-font-adjust-display, --fx-font-family-display, --fx-font-size-display-sm, --fx-font-size-lg, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-semibold, --fx-line-height-tight, --fx-motion-base, --fx-radius-badge, --fx-radius-circle, --fx-radius-control, --fx-radius-surface, --fx-shadow-sm, --fx-size-icon-md, --fx-space-1, --fx-space-10, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-space-6, --fx-space-8, --fx-text-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<section class="fx-contact" aria-labelledby="ct-t">
  <div class="fx-contact__info">
    <header class="fx-contact__head"><p class="fx-contact__eyebrow">Aloqa</p><h2 class="fx-contact__title" id="ct-t">Savol, taklif yoki hamkorlik?</h2><p class="fx-contact__text">Bir iş kunida javob beramiz. Şoşilinç bölsa — qönğiroq qiling.</p></header>
    <ul class="fx-contact__channels">
      <li class="fx-contact__channel"><span class="fx-contact__icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M5 4h4l2 5-2.5 1.5a11 11 0 0 0 5 5L15 13l5 2v4a2 2 0 0 1-2 2A16 16 0 0 1 3 6a2 2 0 0 1 2-2z"/></svg></span><h3 class="fx-contact__name">Telefon</h3><p class="fx-contact__hint">Du–Ju, 9:00–18:00</p><a class="fx-contact__value" href="tel:+998712005040">+998 71 200 50 40</a></li>
      <li class="fx-contact__channel"><span class="fx-contact__icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="5" width="18" height="14" rx="2"/><path d="m3 7 9 6 9-6"/></svg></span><h3 class="fx-contact__name">Email</h3><p class="fx-contact__hint">Litsenziya va hisob-faktura savollari</p><a class="fx-contact__value" href="mailto:salom@foxui.dev">salom@foxui.dev</a></li>
      <li class="fx-contact__channel"><span class="fx-contact__icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M21 4 3 11l6 2 2 6 3-4 5 4z"/></svg></span><h3 class="fx-contact__name">Telegram</h3><p class="fx-contact__hint">Tez savollar uçun</p><a class="fx-contact__value" href="https://t.me/" rel="noopener">@foxui_yordam</a></li>
      <li class="fx-contact__channel"><span class="fx-contact__icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M12 21s-7-6.2-7-12a7 7 0 0 1 14 0c0 5.8-7 12-7 12z"/><circle cx="12" cy="9" r="2.5"/></svg></span><h3 class="fx-contact__name">Ofis</h3><p class="fx-contact__hint">Oldindan kelişib keling</p><a class="fx-contact__value" href="#">Toşkent, Mirzo Ulugʻbek tumani, Buyuk Ipak Yöli 45</a></li>
    </ul>
    <dl class="fx-contact__hours"><dt>Duşanba–Juma</dt><dd>9:00–18:00</dd><dt>Şanba</dt><dd>10:00–14:00</dd><dt>Yakşanba</dt><dd>Dam oliş</dd></dl>
  </div>
  <form class="fx-contact__form" aria-labelledby="ct-f" novalidate>
    <h3 class="fx-contact__name fx-contact__wide" id="ct-f">Ariza qoldiring</h3>
    <label class="fx-field"><span class="fx-label" data-required>Ism</span><input class="fx-input" name="ism" autocomplete="name" required placeholder="Aziz Karimov"></label>
    <label class="fx-field"><span class="fx-label" data-required>Telefon</span><span class="fx-input-group"><span class="fx-input-group__addon">+998</span><input class="fx-input-group__control" name="telefon" inputmode="tel" autocomplete="tel-national" required placeholder="90 123 45 67"></span></label>
    <label class="fx-field fx-contact__wide"><span class="fx-label">Kompaniya</span><input class="fx-input" name="kompaniya" autocomplete="organization" placeholder="«Ipak Yöli Savdo» MChJ"></label>
    <label class="fx-field fx-contact__wide"><span class="fx-label">Mavzu</span><span class="fx-select-wrap"><select class="fx-select" name="mavzu"><option>Obuna va narxlar</option><option>Jamoa litsenziyasi</option><option>Komponent sörovi</option><option>Hamkorlik</option></select></span></label>
    <label class="fx-field fx-contact__wide"><span class="fx-label" data-required>Xabar</span><textarea class="fx-textarea" name="xabar" rows="4" required placeholder="Qisqacha yozing: nima kerak, qachongacha"></textarea></label>
    <div class="fx-contact__actions"><p class="fx-contact__privacy">Yuboriş orqali <a href="#">maxfiylik siyosati</a>ga rozilik bildirasiz.</p><button class="fx-btn" data-variant="primary" type="submit">Yuboriş</button></div>
    <div class="fx-contact__done" role="status" tabindex="-1" hidden><span class="fx-contact__done-mark" aria-hidden="true">✓</span><p class="fx-contact__done-title">Rahmat, arizangiz qabul qilindi</p><p class="fx-contact__done-text">Menejerimiz bir iş kunida +998 raqamingizga qönğiroq qiladi.</p></div>
  </form>
  <ul class="fx-contact__offices" aria-label="Filiallar">
    <li class="fx-contact__office"><strong>Toşkent</strong><span>Buyuk Ipak Yöli 45, 3-qavat</span><span>+998 71 200 50 40</span></li>
    <li class="fx-contact__office"><strong>Samarqand</strong><span>Registon köçasi 12</span><span>+998 66 233 10 20</span></li>
    <li class="fx-contact__office"><strong>Farğona</strong><span>Mustaqillik köçasi 8</span><span>+998 73 244 30 50</span></li>
  </ul>
</section>
```

- Qilmang: Formada 5–6 tadan ortiq maydon söramang — qolganini qönğiroqda bilib olasiz.
- Qilmang: Telefon va emailni oddiy matn qilib qöymang — tel: va mailto: havolalari telefonda bir bosişda işlaydi.
- Qilmang: Yuborilgandan keyin formani şunçaki tozalab qöymang — rahmat xabari va keyingi qadam (qaçon javob) körinsin.

## Kontekst ölçagiçi (`context-meter`, beta, 0.23.0 dan)

AI kontekst oynasi qança işlatilganini körsatuvçi kiçik halqa va «48 %» matni. 80 % dan ogohlantiriş, 95 % dan «töla» holati — rang bilan birga söz va “!” belgisi.

- Qaçon: AI suhbatida kontekst/token sarfini körsatiş.
- Qaçon emas: Umumiy jarayon progressi → `progress`; Yuklaniş → `spinner`
- Variantlar: data-level=warn|full (standart ok)
- Tokenlar: --fx-bg-muted, --fx-border-width-focus, --fx-ease-standard, --fx-fg-error, --fx-fg-warning, --fx-font-size-xs, --fx-font-weight-medium, --fx-meter-value, --fx-motion-slow, --fx-radius-circle, --fx-size-icon-md, --fx-space-2, --fx-text-brand, --fx-text-primary, --fx-text-secondary

```html
<div style="display:flex;flex-wrap:wrap;gap:var(--fx-space-6)"><span class="fx-context-meter" role="meter" aria-label="Kontekst" aria-valuemin="0" aria-valuemax="100" aria-valuenow="48" aria-valuetext="Kontekstning 48 foizi işlatildi" style="--fx-meter-value: 48%"><span class="fx-context-meter__ring" aria-hidden="true"></span><span class="fx-context-meter__value">48 %</span></span><span class="fx-context-meter" data-level="warn" role="meter" aria-label="Kontekst" aria-valuemin="0" aria-valuemax="100" aria-valuenow="86" aria-valuetext="Kontekstning 86 foizi işlatildi" style="--fx-meter-value: 86%"><span class="fx-context-meter__ring" aria-hidden="true"></span><span class="fx-context-meter__value">86 %</span><span class="fx-context-meter__note">Kontekst tölmoqda</span></span><span class="fx-context-meter" data-level="full" role="meter" aria-label="Kontekst" aria-valuemin="0" aria-valuemax="100" aria-valuenow="97" aria-valuetext="Kontekstning 97 foizi işlatildi" style="--fx-meter-value: 97%"><span class="fx-context-meter__ring" aria-hidden="true"></span><span class="fx-context-meter__value">97 %</span><span class="fx-context-meter__note">Kontekst töldi</span></span></div>
```

- Qilmang: aria-valuenow va --fx-meter-value ni bir vaqtda yangilang.
- Qilmang: Ogohlantirişni faqat rang bilan bermang — .fx-context-meter__note matni çiqadi.
- Qilmang: Aniq token sonini halqa içiga siqmang — popover/tooltipda körsating.

## Kontekst menyu (`context`, beta, 0.23.0 dan)

Maydon yoki qator ustida öng tugma, sensorda uzoq bosiş yoki klaviaturada Shift+F10 / ☰ bilan menyu kursor örnida oçiladi. Menyuning özi — oddiy fx-menu; ekran çetiga siğmasa suriladi. Kontekst menyuda faqat qöşimça tezkor amallar bölsin — asosiylari sahifada ham körinsin.

- Qaçon: Fayl, qator, kartaga tezkor qöşimça amallar (nom özgartiriş, nusxa, öçiriş).
- Qaçon emas: Yagona yöl bölgan muhim amal → `menu`; Tugma ostida oçiladigan amallar → `menu`
- Klaviatura: Shift + F10, ☰ — Fokusdagi element uçun menyu oçadi; ↑ ↓, Home, End — Bandlar böylab; Esc — Yopadi, fokus maydonga
- Tokenlar: --fx-bg-subtle, --fx-border-color-focus, --fx-border-width-focus

```html
<div class="fx-context" data-fx-context="cm" tabindex="0" role="group" aria-label="Fayl: shartnoma.pdf. Kontekst menyu uçun Shift+F10" style="padding: var(--fx-space-8); border: var(--fx-border-width-default) dashed var(--fx-border-color-strong); border-radius: var(--fx-radius-surface); text-align: center">
  shartnoma.pdf — öng tugma yoki Shift+F10
</div>
<div class="fx-menu" id="cm" role="menu" popover data-fx-menu data-context aria-label="Fayl amallari">
  <button class="fx-menu__item" role="menuitem">Oçiş <span class="fx-menu__kbd">Enter</span></button>
  <button class="fx-menu__item" role="menuitem">Nom özgartiriş <span class="fx-menu__kbd">F2</span></button>
  <button class="fx-menu__item" role="menuitem">Nusxa oliş <span class="fx-menu__kbd">Ctrl+C</span></button>
  <hr class="fx-menu__sep">
  <button class="fx-menu__item" role="menuitem" data-tone="danger">Öçiriş <span class="fx-menu__kbd">Del</span></button>
</div>
```

- Qilmang: Amalni faqat kontekst menyuda qoldirmang — sensor va klaviaturasiz foydalanuvçi uni topolmaydi, tugma yoki «Yana» menyusi ham bölsin.
- Qilmang: Brauzerning öz menyusini butun sahifada öçirmang — faqat amal beradigan maydonda.

## Kontekst menyu (`contextmenu`, beta, 0.28.0 dan)

Öng tugma, uzoq bosiş (telefon) yoki Shift+F10 / Menu tugmasi bilan kursor joyida oçiladigan menyu (4.147). Menyu — oddiy fx-menu (bandlar, ajratgiç, xavfli amal, klaviatura); bu komponent hudud, nişon qatorni belgilaş, joylaşuv va fokusni qaytarişni beradi. CRM röyxati, fayllar, kanban kartalari uçun.

- Qaçon: Röyxat qatori, karta yoki fayl ustida tezkor amallar (oçiş, nusxa, arxivlaş) — tajribali foydalanuvçi uçun qisqa yöl.
- Qaçon emas: Tugma bosilganda oçiladigan menyu → `menu`; Tanlangan bir neçta qatorga amallar → `bulkbar`
- Klaviatura: Shift+F10, ContextMenu — Fokusdagi nişon uçun menyuni oçadi; ↑ ↓, Home, End — Menyu bandlari (fx-menu); Enter / Boʻsh joy — Amalni bajaradi va yopadi; Esc — Yopadi, fokus nişonga qaytadi
- Tokenlar: --fx-bg-muted, --fx-border-color-focus, --fx-border-color-strong, --fx-border-width-focus, --fx-ease-standard, --fx-font-size-xs, --fx-motion-fast, --fx-radius-control, --fx-radius-surface, --fx-space-1, --fx-text-tertiary

```html
<div class="fx-contextmenu" data-fx-contextmenu data-menu="cm-mijoz" aria-describedby="cm-hint">
  <p class="fx-contextmenu__hint" id="cm-hint">Qatorda öng tugma, uzoq bosiş yoki Shift+F10 — amallar menyusi.</p>
  <ul style="list-style:none;margin:0;padding:0;display:grid;gap:var(--fx-space-1)">
    <li class="fx-contextmenu__target" tabindex="0" data-id="1" style="display:flex;justify-content:space-between;gap:var(--fx-space-4);padding:var(--fx-space-2) var(--fx-space-3)"><b>Aziz Karimov</b><span>Yangi ariza</span></li>
    <li class="fx-contextmenu__target" tabindex="0" data-id="2" style="display:flex;justify-content:space-between;gap:var(--fx-space-4);padding:var(--fx-space-2) var(--fx-space-3)"><b>Shahnoza Olimova</b><span>Tölov kutilmoqda</span></li>
    <li class="fx-contextmenu__target" tabindex="0" data-id="3" style="display:flex;justify-content:space-between;gap:var(--fx-space-4);padding:var(--fx-space-2) var(--fx-space-3)"><b>Bobur Rahimov</b><span>Şartnoma yuborildi</span></li>
  </ul>
</div>
<div class="fx-menu" id="cm-mijoz" role="menu" aria-label="Mijoz amallari" popover data-fx-menu>
  <button class="fx-menu__item" role="menuitem">Oçiş</button>
  <button class="fx-menu__item" role="menuitem">Qönğiroq qiliş</button>
  <button class="fx-menu__item" role="menuitem">Mas'ul tayinlaş</button>
  <div class="fx-menu__sep" role="separator"></div>
  <button class="fx-menu__item" role="menuitem" data-tone="danger">Arxivlaş</button>
</div>
```

- Qilmang: Kontekst menyuni yagona yöl qilmang — öşa amallar körinadigan tugma yoki «…» menyusida ham bölsin.
- Qilmang: Brauzer menyusi kerak böladigan joyda (matn maydoni, havola) işlatmang.
- Qilmang: 10 dan köp band bermang — guruhlab ajratgiç qöying yoki içki menyu.

## Suhbat oqimi (`conversation`, beta, 0.23.0 dan)

Xabarlar lentasi (role="log"): pastda bölsangiz yangi xabar va oqim matni avtomatik pastga tuşadi; yuqoriga çiqsangiz joyingiz saqlanadi va «↓ Yangi xabar» tugmasi (yangi xabarlar soni bilan) çiqadi. Pastda composer uçun joy. AI (72ch ustun) va messenjer variantlari.

- Qaçon: AI çat yoki messenjer sahifasining xabarlar örni.
- Qaçon emas: Statik izohlar röyxati → `list`
- Variantlar: data-variant=messenger (standart ai)
- Klaviatura: Tab — Lentaga, söng “Yangi xabar” tugmasiga; ↑ ↓, PageUp/PageDown — Aylantiriş; Enter — “Yangi xabar” — pastga
- Tokenlar: --fx-bg-brand-solid, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-ease-enter, --fx-ease-standard, --fx-font-size-sm, --fx-font-size-xl, --fx-font-size-xs, --fx-font-weight-semibold, --fx-motion-base, --fx-motion-fast, --fx-motion-instant, --fx-motion-press, --fx-motion-shift-sm, --fx-radius-circle, --fx-shadow-md, --fx-size-icon-md, --fx-size-icon-sm, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-6, --fx-text-on-brand, --fx-text-primary, --fx-text-secondary

```html
<div class="fx-conversation" id="cv1" data-fx-conversation style="block-size: 34rem">
  <div class="fx-conversation__log" role="log" aria-live="polite" aria-label="Suhbat" tabindex="0">
    <div class="fx-message-divider" data-type="date"><span>Bugun</span></div>
    <div class="fx-message" data-role="user"><div class="fx-message__body">Nofaol mijozlarni arxivga köçir va oktabr hisobotini qayta hisobla.</div></div>
    <div class="fx-message">
      <span class="fx-avatar" data-color="purple" role="img" aria-label="Mister Fox">MF</span>
      <div class="fx-message__meta"><span class="fx-message__name">Mister Fox</span><span class="fx-ai-label">AI</span><time>09:14</time></div>
      <div class="fx-message__body">
        <details class="fx-reasoning" data-fx-reasoning data-state="done"><summary><svg data-fx-icon="spark" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 3l1.8 5.2L19 10l-5.2 1.8L12 17l-1.8-5.2L5 10l5.2-1.8z"/></svg><span class="fx-reasoning__label">8 soniya öyladi</span><svg data-fx-icon="chev" class="fx-reasoning__chev" viewBox="0 0 24 24" aria-hidden="true"><path d="M9 6l6 6-6 6"/></svg></summary><div class="fx-reasoning__body"><p>12 ta yozuv 2 yildan beri özgarmagan. Avval arxivlayman, keyin hisoblayman.</p></div></details>
        <p>Tayyor: 12 ta nofaol mijoz arxivga köçirildi, oktabr tuşumi 1 284 500 000 söm<span class="fx-cite"><a class="fx-cite__pill" href="#cv-src" aria-describedby="cv-c1">1</a><span class="fx-cite__card" id="cv-c1" role="tooltip"><span class="fx-cite__site"><span class="fx-cite__fav" aria-hidden="true">M</span>moliya.example.uz</span><span class="fx-cite__title">Oktabr oyi savdo hisoboti</span></span></span>.</p>
        <div class="fx-msgactions" role="toolbar" aria-label="Javob amallari" data-fx-msgactions data-reveal="hover"><button type="button" class="fx-msgactions__btn" data-action="copy" aria-label="Nusxalaş"><svg data-fx-icon="copy" viewBox="0 0 24 24" aria-hidden="true"><rect x="9" y="9" width="11" height="11" rx="2"/><path d="M5 15V6a2 2 0 0 1 2-2h9"/></svg><svg data-fx-icon="check" viewBox="0 0 24 24" aria-hidden="true"><path d="M5 12l5 5 9-10"/></svg></button><button type="button" class="fx-msgactions__btn" data-action="retry" aria-label="Qayta yaratiş"><svg data-fx-icon="retry" viewBox="0 0 24 24" aria-hidden="true"><path d="M20 12a8 8 0 1 1-2.3-5.7M20 4v5h-5"/></svg></button><button type="button" class="fx-msgactions__btn" data-action="like" aria-pressed="false" aria-label="Yoqdi"><svg data-fx-icon="up" viewBox="0 0 24 24" aria-hidden="true"><path d="M7 11v9H4v-9h3zM7 11l4-7c1.5 0 2.5 1 2.5 2.5V9H19a2 2 0 0 1 2 2.3l-1 6A2 2 0 0 1 18 19H7"/></svg></button><button type="button" class="fx-msgactions__btn" data-action="dislike" aria-pressed="false" aria-label="Yoqmadi"><svg data-fx-icon="down" viewBox="0 0 24 24" aria-hidden="true"><g transform="rotate(180 12 12)"><path d="M7 11v9H4v-9h3zM7 11l4-7c1.5 0 2.5 1 2.5 2.5V9H19a2 2 0 0 1 2 2.3l-1 6A2 2 0 0 1 18 19H7"/></g></svg></button><span class="fx-msgactions__status" role="status"></span></div>
      </div>
    </div>
    <div class="fx-message">
      <span class="fx-avatar" data-color="purple" role="img" aria-label="Mister Fox">MF</span>
      <div class="fx-message__meta"><span class="fx-message__name">Mister Fox</span></div>
      <div class="fx-message__body"><span class="fx-thinking" role="status"><svg data-fx-icon="spark" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 3l1.8 5.2L19 10l-5.2 1.8L12 17l-1.8-5.2L5 10l5.2-1.8z"/></svg><span class="fx-shimmer-text">Öylayapti…</span></span></div>
    </div>
  </div>
  <button type="button" class="fx-conversation__jump" hidden><svg data-fx-icon="arrowdown" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 5v14M5 12l7 7 7-7"/></svg><span>Yangi xabar</span><span data-count></span></button>
  <div class="fx-conversation__foot"><form class="fx-composer" data-fx-composer aria-label="Mister Foxga xabar"><div class="fx-composer__row"><textarea class="fx-composer__input" rows="1" placeholder="Mister Foxga yozing…" aria-label="Xabar"></textarea><button type="button" class="fx-composer__send" aria-label="Ovoz yoziş" data-label-mic="Ovoz yoziş" data-label-send="Yuboriş" data-label-stop="Töxtatiş"><svg data-fx-icon="mic" viewBox="0 0 24 24" aria-hidden="true"><rect x="9" y="3" width="6" height="11" rx="3"/><path d="M5 11a7 7 0 0 0 14 0M12 18v3"/></svg><svg data-fx-icon="send" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 19V5M5 12l7-7 7 7"/></svg><svg data-fx-icon="stop" viewBox="0 0 24 24" aria-hidden="true"><rect x="7" y="7" width="10" height="10" rx="2"/></svg></button></div></form></div>
</div>
```

- Qilmang: Oqimli (hali yozilayotgan) xabarga aria-busy="true" bering — ekran öqigiç butun matnni takrorlamasin.
- Qilmang: Foydalanuvçi yuqoriga çiqqanda oqimni majburan pastga tortmang — JS buni qilmaydi.
- Qilmang: Log elementini tabindex'siz qoldirmang — klaviatura bilan aylantiriş uçun fokus kerak.

## Suhbatlar röyxati (`convo`, beta, 0.22.0 dan)

Messenjer çap paneli: avatar (onlayn nuqta), nom, vaqt, oxirgi xabar va belgilar. Holatlar — öqilmagan, eslatma (@), qadalgan, ovozsiz, qoralama, yozmoqda, öqildi, tanlangan — har biri söz yoki ikon bilan ham.

- Qaçon: Messenjer, yordam markazi, izohlar oqimlari röyxati.
- Qaçon emas: Oddiy ma'lumot röyxati → `list`
- Klaviatura: Tab, Enter — Suhbatni oçadi
- Tokenlar: --fx-bg-brand-solid, --fx-bg-brand-subtle, --fx-bg-muted, --fx-bg-subtle, --fx-border-color-focus, --fx-border-width-focus, --fx-ease-standard, --fx-fg-error, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-motion-fast, --fx-radius-circle, --fx-radius-control, --fx-size-icon-md, --fx-size-icon-sm, --fx-space-1, --fx-space-2, --fx-space-3, --fx-text-brand, --fx-text-on-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<ul class="fx-convos" aria-label="Suhbatlar">
  <li><a class="fx-convo" href="#" aria-current="true" data-unread><span class="fx-avatar" data-color="coral" data-status="active" role="img" aria-label="Navröz Mebel — brending">NM</span><span class="fx-convo__name">Navröz Mebel — brending</span><span class="fx-convo__time">10:42</span><span class="fx-convo__preview"><span class="fx-convo__typing">Dilshod yozmoqda…</span></span><span class="fx-convo__badges"><span class="fx-convo__mention" aria-label="Sizni eslaşdi">@</span><span class="fx-convo__n" aria-label="3 ta öqilmagan">3</span></span></a></li>
  <li><a class="fx-convo" href="#"><span class="fx-avatar" data-color="purple" role="img" aria-label="Mister Fox">MF</span><span class="fx-convo__name">Mister Fox</span><span class="fx-convo__time"><span class="fx-convo__tick" data-read role="img" aria-label="Öqildi"></span>09:15</span><span class="fx-convo__preview">Siz: 0.22 çiqdi, sinovlar ötdi</span><span class="fx-convo__badges"></span></a></li>
  <li><a class="fx-convo" href="#" data-muted><span class="fx-avatar" data-color="blue" role="img" aria-label="#umumiy">#</span><span class="fx-convo__name">#umumiy</span><span class="fx-convo__time">Keça</span><span class="fx-convo__preview"><b>Guli:</b> Ertalabki yiğiliş 10:00 da</span><span class="fx-convo__badges"><span class="fx-convo__n" aria-label="12 ta öqilmagan">12</span></span></a></li>
  <li><a class="fx-convo" href="#"><span class="fx-avatar" data-color="green" role="img" aria-label="Dilnoza">DI</span><span class="fx-convo__name">Dilnoza</span><span class="fx-convo__time">Du</span><span class="fx-convo__preview"><span class="fx-convo__draft">Qoralama:</span> Logoning ikkinçi varianti…</span><span class="fx-convo__badges"></span></a></li>
</ul>
```

- Qilmang: Holatni faqat rang bilan bildirmang — son, @, «Qoralama:», «yozmoqda…» sözi bilan.
- Qilmang: Oxirgi xabarni ikki qatorga ötkazmang.

## Nusxa tugmasi (`copy`, beta, 0.22.0 dan)

Bir bosişda matn clipboard'ga yoziladi: nusxa ikoni ✓ ga yumşoq almaşadi (2 soniya), natija e'lon qilinadi. data-copy-target — element, data-copy — matn.

- Qaçon: Kod, kalit, havola, buyruqni nusxalaş.
- Qaçon emas: Oddiy amal tugmasi → `button`
- Variantlar: data-variant=text (standart icon)
- Klaviatura: Enter, Space — Matnni nusxalaydi
- Tokenlar: --fx-bg-muted, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-sm, --fx-ease-spring, --fx-ease-standard, --fx-fg-error, --fx-fg-success, --fx-font-size-xs, --fx-motion-base, --fx-motion-fast, --fx-motion-instant, --fx-motion-press, --fx-radius-control, --fx-size-icon-md, --fx-space-2, --fx-space-3, --fx-text-primary, --fx-text-secondary

```html
<span class="fx-code-inline" id="kalit1">fx_live_9a2b</span>
<button class="fx-copy" type="button" data-fx-copy data-copy-target="#kalit1" aria-label="Kalitni nusxalaş"><svg data-fx-icon="copy" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><rect x="9" y="9" width="11" height="11" rx="2"/><path d="M5 15V6a2 2 0 0 1 2-2h9"/></svg><svg data-fx-icon="check" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><path d="M5 12l5 5 9-10"/></svg><span class="fx-copy__status" role="status"></span></button>
```

- Qilmang: Maxfiy kalitni sahifada oldindan oçib qöymang — faqat egasiga körsating.
- Qilmang: Tugmaga aria-label bering (ikon-tugma).

## Son belgisi (`count`, beta, 0.8.0 dan)

Ikon yoki tugma ustidagi kiçik son (öqilmagan xabarlar) yoki nuqta. Ota elementga position: relative kerak. Kengaytma: data-inline (ota elementsiz, oqim ichida), data-tone=neutral|brand|success.

- Qaçon: Ikon ustida yangi narsalar soni yoki borligi.
- Qaçon emas: Matn yonidagi son (filtr, tab) → `badge`
- Variantlar: data-shape=number|dot (standart number); data-inline=true; data-tone=neutral|brand|success
- Tokenlar: --fx-bg-brand-solid, --fx-bg-error-solid, --fx-bg-muted, --fx-bg-surface, --fx-border-width-focus, --fx-ease-spring, --fx-fg-success, --fx-font-size-xs, --fx-font-weight-semibold, --fx-motion-slow, --fx-radius-circle, --fx-size-icon-md, --fx-size-status-dot, --fx-space-1, --fx-text-on-brand, --fx-text-on-error, --fx-text-secondary

```html
<button class="fx-btn" data-shape="icon" aria-label="Xabarlar, 3 ta yangi" style="position: relative">✉<span class="fx-count" aria-hidden="true">3</span></button>
<button class="fx-btn" data-shape="icon" aria-label="Bildirişnomalar, yangisi bor" style="position: relative">◔<span class="fx-count" data-shape="dot" aria-hidden="true"></span></button>
<span class="fx-count" data-inline data-tone="neutral">12</span>
```

- Qilmang: 99 dan katta sonni töliq yozmang — «99+».

## Teskari sanoq (`countdown`, beta, 0.28.0 dan)

Qolgan vaqtni körsatadi: aksiya tugaşi (kun · soat · daqiqa · soniya), imtihon yoki test vaqti, SMS kodni qayta yuborişgaça («00:59»). Raqamlar tabular — sakramaydi; oz qolganda qizil + «!» va «oz qoldi» sözi, tugaganda matn. Ekran öquvçiga siyrak aytiladi: 5 daqiqa, 1 daqiqa, 10 soniya qolganda va tugaganda. Uzoq muddat uçun yil birligi: data-units="yd" → «1 yil · 354 kun» (soniyasiz birliklarda daqiqada bir yangilanadi) — domen, obuna, litsenziya muddati.

- Qaçon: Aksiya, röyxatdan ötiş yoki tarif narxi tugaşigaça qolgan vaqt. Imtihon, test, tölov sessiyasi kabi çeklangan vaqtli jarayon. SMS kodni qayta yuboriş tugmasi yonida (ixçam variant).
- Qaçon emas: Ötgan vaqtni nisbiy körsatiş («3 daqiqa oldin») → `reltime`; Jarayon foizini körsatiş → `progress`
- Variantlar: data-variant=blocks|solid|inline (standart blocks); data-size=sm|md (standart md); data-state=running|urgent|ended (standart running)
- Tokenlar: --fx-bg-error-solid, --fx-bg-page, --fx-bg-surface, --fx-border-color-default, --fx-border-width-default, --fx-control-h-lg, --fx-font-size-lg, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xl, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-radius-control, --fx-space-1, --fx-space-2, --fx-space-4, --fx-text-disabled, --fx-text-error, --fx-text-on-error, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<div class="fx-countdown" data-fx-countdown data-seconds="273645" data-urgent="0" data-done="Aksiya tugadi">
  <span class="fx-countdown__label">Kuzgi çegirma −30 % tugaşiga</span>
</div>
<div class="fx-countdown" data-fx-countdown data-variant="solid" data-size="sm" data-seconds="2700" data-urgent="300" data-done="Vaqt tugadi — javoblar yuborildi">
  <span class="fx-countdown__label">Test: 20 savoldan 14 tasi belgilangan</span>
</div>
<p style="margin:0;font-size:var(--fx-font-size-sm)">Kodni qayta yuboriş <span class="fx-countdown" data-fx-countdown data-variant="inline" data-seconds="59" data-urgent="0"><span class="fx-countdown__label fx-sr-only">Qayta yuborişgaça</span></span> dan keyin mumkin</p>
```

- Qilmang: Har soniyani ekran öquvçiga aytdirmang — aria-live ildizda emas, faqat çegaralarda.
- Qilmang: Soxta şoşilinç qilib, sahifa yangilanganda sanoqni qaytadan boşlamang — tugaş vaqti serverdan (data-to) kelsin.
- Qilmang: Raqamlarni proporsional şriftda qoldirmang — har soniyada kenglik sakraydi (tabular-nums).

## Promo-kod (`coupon`, beta, 0.28.0 dan)

Promo-kod yoki kupon: kod kiritiladi → «Qöllaş» → tekşiruv (tugmada yuklaniş) → qöllangan chip (✓ kod, çegirma summasi, × olib taşlaş) yoki xato matni. Forma içida turadi (içki <form> yöq). Yiğilgan variant — «Promo-kodingiz bormi?» havolasi ostida.

- Qaçon: Checkout, tarif tanlaş, buyurtma xulosasida çegirma kodini qöllaş. Sovğa sertifikati yoki taklif kodini kiritiş.
- Qaçon emas: Bir martalik SMS/email tasdiq kodi → `otp`; Oddiy matn maydoni (tekşiruvsiz) → `input`
- Variantlar: data-state=loading|applied|error (standart —)
- Klaviatura: Enter (maydonda) — Kodni qöllaydi (taşqi formani yubormaydi); Enter / Space (×) — Qöllangan kodni olib taşlaydi, fokus maydonga
- Tokenlar: --fx-bg-muted, --fx-bg-pressed, --fx-bg-success-subtle, --fx-border-color-error, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-sm, --fx-ease-standard, --fx-fg-success, --fx-font-adjust-mono, --fx-font-adjust-sans, --fx-font-family-mono, --fx-font-family-sans, --fx-font-size-lg, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-motion-slow, --fx-radius-badge, --fx-radius-circle, --fx-radius-control, --fx-space-1, --fx-space-2, --fx-space-3, --fx-text-brand, --fx-text-error, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<div class="fx-coupon" data-fx-coupon data-codes='{"KUZ30":{"value":"−385 200 söm"},"YANGI10":{"value":"−10 %"}}' style="max-inline-size:24rem">
  <label class="fx-label" for="cp1">Promo-kod</label>
  <div class="fx-coupon__form"><input class="fx-input fx-coupon__input" id="cp1" name="promo" placeholder="Masalan, KUZ30"><button class="fx-btn" data-coupon-apply>Qöllaş</button></div>
  <p class="fx-coupon__msg">Bitta buyurtmaga bitta promo-kod.</p>
</div>
<details class="fx-coupon" data-fx-coupon data-codes='{"KUZ30":{"value":"−385 200 söm"}}' style="max-inline-size:24rem">
  <summary class="fx-coupon__toggle">Promo-kodingiz bormi?</summary>
  <div class="fx-coupon__form"><input class="fx-input fx-coupon__input" data-size="sm" name="promo2" aria-label="Promo-kod"><button class="fx-btn" data-size="sm" data-coupon-apply>Qöllaş</button></div>
</details>
```

- Qilmang: Xato kodni faqat qizil çegara bilan bildirmang — sababini yozing («muddati tugagan», «faqat 500 000 sömdan»).
- Qilmang: Promo-kod maydonini tölov sahifasining eng közga köringan joyiga qöymang — yiğilgan variant xaridni çalğitmaydi.
- Qilmang: Qöllangan çegirmani faqat chipda qoldirmang — buyurtma xulosasida ham alohida qator bölsin.

## CTA va obuna bölimi (`cta`, beta, 0.28.0 dan)

Sahifa oxiridagi çaqiriq bölimi (4.174): katta sarlavha, bir gaplik izoh va 1–2 tugma — standart holatda brend rangli panel (içida naqş va yoruğ doğ, tugmalar teskari rangda); data-tone="subtle" — yengil fon. Obuna varianti: email maydoni + tugma, izoh qatori va holat xabari (data-state: loading, success — forma örniga rahmat xabari, error). data-layout="split" — matn çapda, amal öngda (maqola içidagi CTA).

- Qaçon: Landing va narx sahifasi oxirida asosiy çaqiriq. Blog/changelog ostida xatga obuna.
- Qaçon emas: Birinçi ekran → `hero`; Vaqtinçalik e'lon → `banner`
- Variantlar: data-tone=subtle (standart brand); data-layout=split (standart center); data-state=loading|success|error (standart idle)
- Klaviatura: Enter — Formani yuboradi
- Tokenlar: --fx-bg-brand-solid, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-surface, --fx-border-width-default, --fx-dialog-width, --fx-font-adjust-display, --fx-font-family-display, --fx-font-size-display-sm, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-popover-width, --fx-radius-overlay, --fx-space-10, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-5, --fx-space-6, --fx-space-8, --fx-text-error, --fx-text-on-brand, --fx-text-primary

```html
<section class="fx-cta" aria-labelledby="cta-t">
  <div class="fx-bg" data-pattern="grid" data-on="brand" data-fade="top" aria-hidden="true"></div>
  <h2 class="fx-cta__title" id="cta-t">Keyingi saytingizni FoxUI bilan quring</h2>
  <p class="fx-cta__text">Oçiq yadroni bugun örnating — obuna kerak bölganda yangilaniş va MCP ulanadi.</p>
  <div class="fx-cta__actions"><a class="fx-btn" data-variant="primary" data-size="lg" href="#">Bepul boşlaş</a><a class="fx-btn" data-size="lg" href="#">Narxlarni köriş</a></div>
</section>
<section class="fx-cta" data-tone="subtle" data-layout="split" aria-labelledby="cta-n" style="margin-block-start:var(--fx-space-6)">
  <h2 class="fx-cta__title" id="cta-n">«Nima yangi» xatini oling</h2>
  <p class="fx-cta__text">Har relizda bitta qisqa xat: yangi komponentlar va özgarişlar. Spam yöq.</p>
  <form class="fx-cta__form" action="#" onsubmit="event.preventDefault(); const s=this.closest('.fx-cta'); s.dataset.state='success'; s.querySelector('.fx-cta__status').textContent='Rahmat! Tasdiqlash xati pochtangizga yuborildi.';">
    <label class="fx-sr-only" for="cta-email">Email manzil</label>
    <input class="fx-input" id="cta-email" type="email" required autocomplete="email" placeholder="siz@misol.uz">
    <button class="fx-btn" data-variant="primary" type="submit">Obuna böliş</button>
  </form>
  <p class="fx-cta__hint">Istalgan payt bitta havola bilan bekor qilasiz.</p>
  <p class="fx-cta__status" role="status"></p>
</section>
```

- Qilmang: Bir sahifaga uçtadan ortiq CTA bölimi qöymang.
- Qilmang: Obuna formasida email'dan boşqa maydon söramang.
- Qilmang: Muvaffaqiyatni faqat rang bilan bildirmang — xabar söz bilan, role="status"da.

## Pul maydoni (`currency`, beta, 0.23.0 dan)

Söm miqdori: minglar böş joy bilan ajraladi (1 250 000), faqat raqam, tabular raqamlar; birlik («söm») input-group addon'ida. Formatsiz qiymat — dataset.raw. Kasr kerak bölsa data-decimals. Joylaştirişda «1,000,000», «1.000.000», «1 000 000,50» ni tuşunadi; forma yuborilganda server toza son oladi (1000000.50) — type="number" kerak emas.

- Qaçon: Narx, summa, byudjet.
- Qaçon emas: Qat'iy tuzilma (telefon, karta) → `mask`; Taxminiy diapazon → `slider`
- Variantlar: data-align=start|end (standart start)
- Klaviatura: 0–9 — Raqam, minglar avtomatik ajraladi; , . — Kasr ajratgiçi (data-decimals bölsa)

```html
<label class="fx-field" for="pul"><span class="fx-label">Narx</span>
<div class="fx-input-group"><input class="fx-input-group__control" id="pul" name="narx" data-fx-currency data-align="end" placeholder="0" inputmode="numeric" value="1250000"><span class="fx-input-group__addon">söm</span></div></label>
<label class="fx-field" for="pul2"><span class="fx-label">Çegirma (kasr bilan)</span>
<div class="fx-input-group"><input class="fx-input-group__control" id="pul2" name="chegirma" data-fx-currency data-decimals="2" placeholder="0,00"><span class="fx-input-group__addon">söm</span></div></label>
```

- Qilmang: Birlikni qiymatning içiga yozmang — addon qismida.
- Qilmang: Katta aniq summalar uçun slider emas — şu maydon.

## Maxsus kursor (`cursor`, beta, 0.29.0 dan)

Hudud içida kursorga belgi yoki yorliq ergaşadi (Magic UI Pointer va Smooth Cursor, Aceternity Following Pointer): portfolio kartalari ustida «Loyihani köriş →» pufagi yoki jamoaviy doskadagi kabi ismli strelka. .fx-cursor__pointer içiga istalgan belgi qöyiladi (.fx-cursor__arrow, .fx-cursor__label); data-variant="bubble" — pufak kursor markazida; data-color — toifa rangi. data-native="hide" — tizim kursori yaşiriladi (faqat belgi aniq körinadigan joyda), data-follow="exact" — keçikişsiz ergaşiş. Belgi berilmasa — data-label matni bilan pufak özi yaratiladi. Faqat siçqonçada; barmoq, klaviatura va harakat kamaytirilganda belgi yöq.

- Qaçon: Portfolio yoki galereya: karta ustida «Köriş →» pufagi. Jamoaviy iş namoyişi (hamkasb kursori), landing hero.
- Qaçon emas: Element haqida qisqa izoh → `tip`; Kursor nuri (yoruğlik) → `effects`
- Variantlar: data-native=show|hide (standart show); data-follow=smooth|exact (standart smooth); data-variant=arrow|bubble (standart arrow); data-color=pink|blue|green|purple (standart brand)
- Tokenlar: --fx-bg-brand-solid, --fx-bg-category-blue, --fx-bg-category-green, --fx-bg-category-pink, --fx-bg-category-purple, --fx-bg-surface, --fx-cursor-x, --fx-cursor-y, --fx-ease-enter, --fx-ease-spring, --fx-ease-standard, --fx-font-size-sm, --fx-font-weight-medium, --fx-motion-base, --fx-motion-fast, --fx-motion-press, --fx-radius-pill, --fx-shadow-md, --fx-size-icon-lg, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-text-on-brand, --fx-text-on-category, --fx-text-primary, --fx-z-raised

```html
<div class="fx-cursor" data-fx-cursor data-native="hide" style="display:grid;grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));gap:var(--fx-space-4);padding:var(--fx-space-6);border-radius:var(--fx-radius-surface);background:var(--fx-bg-subtle)">
  <a class="fx-card" href="#" style="text-decoration:none;color:inherit"><h3 class="fx-card__title">Samarqand Grand</h3><p class="fx-card__text">Mehmonxona sayti · 2026</p></a>
  <a class="fx-card" href="#" style="text-decoration:none;color:inherit"><h3 class="fx-card__title">Tong maktabi</h3><p class="fx-card__text">LMS · 2026</p></a>
  <span class="fx-cursor__pointer" data-variant="bubble"><span class="fx-cursor__label">Loyihani köriş →</span></span>
</div>
<div class="fx-cursor" data-fx-cursor data-native="hide" style="margin-block-start:var(--fx-space-4);block-size:12rem;border:var(--fx-border-width-default) dashed var(--fx-border-color-default);border-radius:var(--fx-radius-surface);display:grid;place-items:center;color:var(--fx-text-secondary)">
  <p style="margin:0">Jamoaviy doska: kursorni şu yerga olib keling</p>
  <span class="fx-cursor__pointer" data-color="pink"><svg class="fx-cursor__arrow" viewBox="0 0 20 20" aria-hidden="true"><path d="M3 2l14 6.5-6 1.8L8.2 16.5z"/></svg><span class="fx-cursor__label">Dilnoza</span></span>
</div>
```

- Qilmang: Belgi içiga muhim ma'lumot qöymang — u faqat bezak (aria-hidden); havola nomi özi aniq bölsin.
- Qilmang: Forma, matn tahrirlaş yoki jadval ustida tizim kursorini yaşirmang — kiritiş nuqtasi yöqoladi.
- Qilmang: Butun sahifaga qöymang — faqat kiçik hudud (galereya, hero, doska).

## Jonli hamkorlik kursorlari (`cursors`, beta, 0.29.0 dan)

Umumiy iş maydonida boşqa foydalanuvçilar kursorlari (4.205, Figma, Liveblocks, Magic UI «Pointer»): rangli strelka va ism yorliği, matndagi tanlov (.fx-cursors__selection — yarim şaffof fon, karetka va ism), kursor-çat pufakçasi (.fx-cursors__chat) va tepada kimlar borligi röyxati (.fx-cursors__people). Joylaşuvni ilova realtime orqali yangilaydi: --fx-cursors-x / --fx-cursors-y (% yoki px) — kursor silliq suriladi; uzoq qimirlamasa data-state="idle" — yorliq yaşirinadi, kursor xiralaşadi. Rang data-color (6 pastel) — doim ism bilan birga. Kursorlar faqat bezak (aria-hidden); kim borligi va nima qilayotgani — röyxat va jonli hudud orqali.

- Qaçon: Hujjat, doska, jadval yoki dizayn maydonida bir vaqtda bir neça kişi işlaganda. AI agent ham hujjatda işlayotganini körsatiş (Mister Fox · AI kursori).
- Qaçon emas: Faqat kim onlayn ekanini körsatiş → `presence`; Avatarlar guruhi → `avatar`; Izoh qoldiriş → `comments`
- Variantlar: data-color=yellow|pink|blue|coral|green|purple (standart blue); data-state=idle (standart active)
- Klaviatura: — — Kursorlar fokuslanmaydi; avatarlar röyxati ekran öquvçiga oçiq
- Tokenlar: --fx-bg-category-blue, --fx-bg-category-coral, --fx-bg-category-green, --fx-bg-category-pink, --fx-bg-category-purple, --fx-bg-category-yellow, --fx-bg-surface, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-cursors-x, --fx-cursors-y, --fx-ease-spring, --fx-ease-standard, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-regular, --fx-font-weight-semibold, --fx-line-height-normal, --fx-motion-base, --fx-motion-slow, --fx-radius-badge, --fx-radius-surface, --fx-shadow-color, --fx-size-icon-lg, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-text-on-category, --fx-text-secondary, --fx-z-raised

```html
<div class="fx-cursors">
  <div class="fx-cursors__bar"><span>«Oktabr hisoboti» — 3 kişi tahrirlamoqda</span><ul class="fx-cursors__people" aria-label="Hozir hujjatda"><li><span class="fx-avatar" data-size="sm" data-color="green" role="img" aria-label="Dilnoza Yusupova">DY</span></li><li><span class="fx-avatar" data-size="sm" data-color="coral" role="img" aria-label="Aziz Karimov">AK</span></li><li><span class="fx-avatar" data-size="sm" data-color="purple" role="img" aria-label="Mister Fox (AI)">MF</span></li></ul></div>
  <div class="fx-cursors__stage" style="block-size: 18rem; padding: var(--fx-space-8)">
    <h3 style="margin: 0 0 var(--fx-space-3)">Oktabr hisoboti</h3>
    <p style="margin: 0; max-inline-size: 52ch; line-height: 1.7">Oktabr oyida tuşum <span class="fx-cursors__selection" data-color="green" data-name="Dilnoza">1 284 500 000 söm</span> böldi — sentabrga nisbatan 12 % köp. Eng katta ösiş Samarqand filialida, yangi mijozlar soni 214 ta.</p>
    <div class="fx-cursors__pointer" data-color="coral" style="--fx-cursors-x: 62%; --fx-cursors-y: 58%" aria-hidden="true"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 3l15 7.5-6.5 1.8L9.7 19z"/></svg><span class="fx-cursors__name">Aziz Karimov<span class="fx-cursors__chat">Bu raqamni grafikka ham qöşaylikmi?</span></span></div>
    <div class="fx-cursors__pointer" data-color="purple" style="--fx-cursors-x: 28%; --fx-cursors-y: 72%" aria-hidden="true"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 3l15 7.5-6.5 1.8L9.7 19z"/></svg><span class="fx-cursors__name">Mister Fox · AI</span></div>
    <div class="fx-cursors__pointer" data-color="green" data-state="idle" style="--fx-cursors-x: 80%; --fx-cursors-y: 18%" aria-hidden="true"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 3l15 7.5-6.5 1.8L9.7 19z"/></svg><span class="fx-cursors__name">Dilnoza</span></div>
  </div>
  <p class="fx-sr-only" aria-live="polite">Aziz Karimov izoh yozmoqda</p>
</div>
```

- Qilmang: Kursorni faqat rang bilan farqlamang — ism yorliği doim yonida (idle'da ham hover/fokusda qaytadi).
- Qilmang: 10 tadan ortiq kursorni bir vaqtda çizmang — eng yaqinlarini körsating, qolganini «+7» röyxatda.
- Qilmang: Har siçqonça harakatini ekran öquvçiga aytmang — faqat muhim hodisa (qöşildi, çiqdi, izoh yozmoqda).
- Qilmang: Pozitsiyani har kadrda yubormang — 30–60 ms oraliqda, oraliq harakatni CSS silliqlaydi.

## Dashboard qolipi (`dashboard`, beta, 0.28.0 dan)

Körsatkiçlar sahifasi qolipi (4.185): tepada sarlavha, yangilangan vaqt va davr tanlaş; KPI qatori (≤ 4, bitta hero raqam); 12 ustunli grafik kartalar töri (data-span: 4, 6, 8 yoki 12 — konteyner kengligiga qarab 2 yoki 1 ustunga tuşadi); pastda sönggi faollik. Içi mavjud komponentlardan: fx-stat, fx-chartcard, fx-chart, fx-table, fx-timeline.

- Qaçon: Bölim yoki biznesning asosiy körsatkiçlari bir sahifada: savdo, arizalar, moliya.
- Qaçon emas: Yozuvlar röyxati va filtr → `listpage`; Bitta yozuv tafsiloti → `recordpage`
- Variantlar: data-span=4|6|8|12 (standart 12)
- Klaviatura: Tab — Davr tanlaş, KPI, grafiklar (← → nuqtalar), faollik — tartib bilan
- Tokenlar: --fx-ease-standard, --fx-font-adjust-display, --fx-font-family-display, --fx-font-size-display-sm, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-semibold, --fx-motion-fast, --fx-popover-width, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-text-secondary, --fx-text-tertiary

```html
<section class="fx-dashboard" aria-labelledby="db-t">
  <header class="fx-dashboard__head">
    <div class="fx-dashboard__titles"><h1 class="fx-dashboard__title" id="db-t">Savdo</h1><span class="fx-dashboard__updated">Yangilandi: bugun, 10:42</span></div>
    <div class="fx-dashboard__controls"><div class="fx-segment" data-size="sm" role="group" aria-label="Davr"><button class="fx-segment__item" type="button" aria-pressed="false">7 kun</button><button class="fx-segment__item" type="button" aria-pressed="true">30 kun</button><button class="fx-segment__item" type="button" aria-pressed="false">Yil</button></div></div>
  </header>
  <div class="fx-dashboard__kpis">
    <div class="fx-stat" data-size="hero"><span class="fx-stat__label">Tuşum</span><span class="fx-stat__value">132 mln</span><span class="fx-delta" data-dir="up" data-tone="good">+8,2% <span class="fx-delta__period">30 kunda</span></span></div>
    <div class="fx-stat"><span class="fx-stat__label">Yopilgan bitimlar</span><span class="fx-stat__value">48</span><span class="fx-delta" data-dir="down" data-tone="bad">−4 <span class="fx-delta__period">30 kunda</span></span></div>
    <div class="fx-stat"><span class="fx-stat__label">Konversiya</span><span class="fx-stat__value">10,6 %</span><span class="fx-delta" data-dir="up" data-tone="good">+1,1 <span class="fx-delta__period">30 kunda</span></span></div>
  </div>
  <div class="fx-dashboard__grid">
    <section class="fx-chartcard" data-span="8" aria-labelledby="db-c1"><div class="fx-chartcard__head"><div class="fx-chartcard__titles"><h3 class="fx-chartcard__title" id="db-c1">Tuşum oylar böyiça</h3><span class="fx-chartcard__sub">mln söm</span></div></div>
      <div class="fx-chartcard__body"><figure class="fx-chart" data-fx-chart data-type="bar" data-unit="mln söm" data-ref="120:Reja"><figcaption class="fx-sr-only">Tuşum oylar böyiça</figcaption><table class="fx-chart__data"><thead><tr><th>Oy</th><th>Tuşum</th></tr></thead><tbody><tr><th>May</th><td>86</td></tr><tr><th>Iyun</th><td>94</td></tr><tr><th>Iyul</th><td>90</td></tr><tr><th>Avg</th><td>108</td></tr><tr><th>Sen</th><td>121</td></tr><tr><th>Okt</th><td data-role="accent">132</td></tr></tbody></table></figure></div></section>
    <section class="fx-chartcard" data-span="4" aria-labelledby="db-c2"><div class="fx-chartcard__head"><div class="fx-chartcard__titles"><h3 class="fx-chartcard__title" id="db-c2">Voronka</h3><span class="fx-chartcard__sub">bitimlar · oktyabr</span></div></div>
      <div class="fx-chartcard__body"><figure class="fx-chart" data-fx-chart data-type="funnel"><figcaption class="fx-sr-only">Savdo voronkasi</figcaption><table class="fx-chart__data"><thead><tr><th>Bosqiç</th><th>Bitimlar</th></tr></thead><tbody><tr><th>Lid</th><td>452</td></tr><tr><th>Taklif</th><td>190</td></tr><tr><th>Muzokara</th><td>74</td></tr><tr><th>Yutildi</th><td>48</td></tr></tbody></table></figure></div></section>
    <h2 class="fx-dashboard__section-title">Sönggi faollik</h2>
    <section class="fx-card" data-span="12"><ol class="fx-timeline"><li class="fx-timeline__item"><span class="fx-timeline__marker"></span><div class="fx-timeline__content"><p class="fx-timeline__title">Dilnoza Yusupova bitim №209 ni yopdi — 12 mln söm</p><span class="fx-timeline__time">09:58</span></div></li><li class="fx-timeline__item"><span class="fx-timeline__marker"></span><div class="fx-timeline__content"><p class="fx-timeline__title">Yangi lid: «Bek Quriliş» MChJ</p><span class="fx-timeline__time">09:31</span></div></li></ol></section>
  </div>
</section>
```

- Qilmang: Birinçi ekranga 7 dan köp karta va bittadan köp hero raqam qöymang.
- Qilmang: Bitta dashboard'da 3 dan köp grafik turi işlatmang; har karta — bitta savol.
- Qilmang: Sarlavhada ma'lumot yangilangan vaqtini tuşirib qoldirmang.
- Qilmang: Karta içida içki aylantiriş qilmang — kartani kattalaştiring yoki «Hammasi» sahifasiga havola bering.

## Ma'lumot töri (`datagrid`, beta, 0.24.0 dan)

Jadvaldan köra ilovaga yaqin tör (APG grid): katakma-katak klaviatura (←↑→↓, Home/End, Ctrl+Home/End, PageUp/PageDown), katakni joyida tahrirlaş (Enter/F2/harf bosiş; Enter saqlaydi, Esc bekor qiladi), ustun kengligi (tutqiçni sudraş yoki sarlavhada Alt+←/→), qotgan sarlavha va birinçi ustun(lar), qator tanlaş (belgi ustuni, Shift+Böş joy, Ctrl+A) va saralaş. Tuzilma div + role, qatorlar aria-rowindex bilan — virtualizatsiyaga tayyor: DOMda faqat körinadigan qatorlar bölsa ham aria-rowcount töliq sonni aytadi. Xulq foxui.js'da (data-fx-datagrid). Guruhlaş va jami (4.130): data-group-by — ustun böyiça yiğiladigan guruh sarlavhalari, data-agg="sum|avg|count" ustunlarida guruh va pastki «Jami» qatori. Ustunlar (4.131): data-reorder — sarlavhani sudrab ustun tartibi (klaviatura: sarlavhada Alt+Shift+←/→); ustunlar paneli [data-fx-datagrid-columns="<id>"] — köriniş belgisi, ↑ ↓ tartib va «Qotiriş» (ustun belgi ustunidan keyin qotadi). Katak oraliği va joylaş (4.132): data-range — Shift+strelka, Shift+bosiş yoki sudraş bilan törtburçak oraliq; Ctrl+C — TSV (Excel/Sheets'ga), Ctrl+V — nusxalangan jadval faol katakdan boşlab tahrirlanadigan kataklarga, bitta qiymat — butun oraliqqa; son kataklari tekşiriladi. Master–detail (4.133): qatordan keyin .fx-datagrid__detail va .fx-datagrid__expand katagi — bosiş yoki Enter/Böşliq oçadi; saralaş va guruhlaşda tafsilot öz qatori bilan yuradi.

- Qaçon: Köp qatorli ma'lumotni joyida tahrirlaş, saralaş va tanlaş kerak (CRM, inventar, narxlar röyxati). Klaviatura bilan tez işlaydigan iş jadvali.
- Qaçon emas: Faqat öqiladigan, oddiy ma'lumot jadvali → `table`; Içma-iç (iyerarxik) qatorlar → `treegrid`; Vazifalar röyxati — holat/ustuvorlik bilan → `row`
- Variantlar: data-pin-first=off|1|2 (standart off); data-gridlines=rows|both (standart rows); data-group-by=ustun raqami (0 dan); data-agg=sum|avg|count; data-reorder=; data-range=
- Klaviatura: ← ↑ → ↓ — Qöşni katakka ötadi; Home / End — Qatorning birinçi / oxirgi katagi; Ctrl+Home / Ctrl+End — Törning birinçi / oxirgi katagi; PageUp / PageDown — 10 qator tepaga / pastga; Enter, F2, harf — Tahrirlanadigan katakni tahrirga oçadi; sarlavhada saralaydi; Enter (tahrirda) — Saqlaydi; Esc (tahrirda) — Bekor qiladi; Boʻsh joy, Shift+Boʻsh joy — Qatorni tanlaydi / bekor qiladi; Ctrl+A — Hamma qatorni tanlaydi; Alt+← / Alt+→ — Sarlavhada ustun kengligini özgartiradi (Shift — katta qadam); Enter / Boʻsh joy, ←, → (guruh sarlavhasida) — Guruhni yiğadi yoki oçadi (aria-expanded); Alt+Shift+← / → — Sarlavhada: ustunni çapga / öngga suradi (data-reorder); Shift + strelka — Katak oraliğini kengaytiradi (data-range); Esc — bekor; Ctrl+C / Ctrl+V — Oraliqni TSV qilib nusxalaydi / Excel'dan joylaydi; Enter / Boʻshliq (▸ katagida) — Tafsilot qatorini oçadi / yopadi
- Tokenlar: --fx-bg-brand-solid, --fx-bg-brand-subtle, --fx-bg-field, --fx-bg-muted, --fx-bg-pressed, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-error, --fx-border-color-focus, --fx-border-color-strong, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-md, --fx-datagrid-height, --fx-ease-standard, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-motion-fast, --fx-popover-width, --fx-radius-nav, --fx-radius-surface, --fx-size-icon-sm, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-6, --fx-text-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<div class="fx-datagrid" role="grid" aria-label="Mijozlar" aria-multiselectable="true" aria-rowcount="7" data-fx-datagrid data-pin-first="2" data-gridlines="both" style="--fx-datagrid-height: 22rem; --_cols: 44px 200px 140px 140px 180px">
  <div class="fx-datagrid__head" role="rowgroup">
    <div role="row" class="fx-datagrid__row" aria-rowindex="1">
      <div role="columnheader" class="fx-datagrid__cell fx-datagrid__check" data-select-all><label class="fx-check"><input type="checkbox" tabindex="-1" aria-label="Hammasini tanlaş"><span class="fx-check__box"></span></label></div>
      <div role="columnheader" class="fx-datagrid__cell" data-sortable aria-sort="none">Mijoz<span class="fx-datagrid__resize" aria-hidden="true"></span></div>
      <div role="columnheader" class="fx-datagrid__cell" data-sortable aria-sort="none">Şahar<span class="fx-datagrid__resize" aria-hidden="true"></span></div>
      <div role="columnheader" class="fx-datagrid__cell">Holat<span class="fx-datagrid__resize" aria-hidden="true"></span></div>
      <div role="columnheader" class="fx-datagrid__cell" data-type="num" data-sortable aria-sort="none">Summa, söm<span class="fx-datagrid__resize" aria-hidden="true"></span></div>
    </div>
  </div>
  <div class="fx-datagrid__body" role="rowgroup">
    <div role="row" class="fx-datagrid__row" aria-rowindex="2" aria-selected="false">
      <div role="gridcell" class="fx-datagrid__cell fx-datagrid__check" data-select><label class="fx-check"><input type="checkbox" tabindex="-1" aria-label="Tanlaş: Aziz Karimov"><span class="fx-check__box"></span></label></div>
      <div role="gridcell" class="fx-datagrid__cell" data-editable>Aziz Karimov</div>
      <div role="gridcell" class="fx-datagrid__cell" data-editable>Toşkent</div>
      <div role="gridcell" class="fx-datagrid__cell"><span class="fx-status" data-tone="success">Tölangan</span></div>
      <div role="gridcell" class="fx-datagrid__cell" data-type="num" data-editable data-value="1200000">1 200 000</div>
    </div>
    <div role="row" class="fx-datagrid__row" aria-rowindex="3" aria-selected="false">
      <div role="gridcell" class="fx-datagrid__cell fx-datagrid__check" data-select><label class="fx-check"><input type="checkbox" tabindex="-1" aria-label="Tanlaş: Bobur Rahimov"><span class="fx-check__box"></span></label></div>
      <div role="gridcell" class="fx-datagrid__cell" data-editable>Bobur Rahimov</div>
      <div role="gridcell" class="fx-datagrid__cell" data-editable>Samarqand</div>
      <div role="gridcell" class="fx-datagrid__cell"><span class="fx-status" data-tone="warning">Kutilmoqda</span></div>
      <div role="gridcell" class="fx-datagrid__cell" data-type="num" data-editable data-value="450000">450 000</div>
    </div>
    <div role="row" class="fx-datagrid__row" aria-rowindex="4" aria-selected="false">
      <div role="gridcell" class="fx-datagrid__cell fx-datagrid__check" data-select><label class="fx-check"><input type="checkbox" tabindex="-1" aria-label="Tanlaş: Dilnoza Yusupova"><span class="fx-check__box"></span></label></div>
      <div role="gridcell" class="fx-datagrid__cell" data-editable>Dilnoza Yusupova</div>
      <div role="gridcell" class="fx-datagrid__cell" data-editable>Buxoro</div>
      <div role="gridcell" class="fx-datagrid__cell"><span class="fx-status" data-tone="success">Tölangan</span></div>
      <div role="gridcell" class="fx-datagrid__cell" data-type="num" data-editable data-value="2380000">2 380 000</div>
    </div>
    <div role="row" class="fx-datagrid__row" aria-rowindex="5" aria-selected="false">
      <div role="gridcell" class="fx-datagrid__cell fx-datagrid__check" data-select><label class="fx-check"><input type="checkbox" tabindex="-1" aria-label="Tanlaş: Eldor Nazarov"><span class="fx-check__box"></span></label></div>
      <div role="gridcell" class="fx-datagrid__cell" data-editable>Eldor Nazarov</div>
      <div role="gridcell" class="fx-datagrid__cell" data-editable>Namangan</div>
      <div role="gridcell" class="fx-datagrid__cell"><span class="fx-status" data-tone="error">Rad etilgan</span></div>
      <div role="gridcell" class="fx-datagrid__cell" data-type="num" data-editable data-value="90000">90 000</div>
    </div>
    <div role="row" class="fx-datagrid__row" aria-rowindex="6" aria-selected="false">
      <div role="gridcell" class="fx-datagrid__cell fx-datagrid__check" data-select><label class="fx-check"><input type="checkbox" tabindex="-1" aria-label="Tanlaş: Feruza Ismoilova"><span class="fx-check__box"></span></label></div>
      <div role="gridcell" class="fx-datagrid__cell" data-editable>Feruza Ismoilova</div>
      <div role="gridcell" class="fx-datagrid__cell" data-editable>Andijon</div>
      <div role="gridcell" class="fx-datagrid__cell"><span class="fx-status" data-tone="warning">Kutilmoqda</span></div>
      <div role="gridcell" class="fx-datagrid__cell" data-type="num" data-editable data-value="760000">760 000</div>
    </div>
    <div role="row" class="fx-datagrid__row" aria-rowindex="7" aria-selected="false">
      <div role="gridcell" class="fx-datagrid__cell fx-datagrid__check" data-select><label class="fx-check"><input type="checkbox" tabindex="-1" aria-label="Tanlaş: Gulnora Sattorova"><span class="fx-check__box"></span></label></div>
      <div role="gridcell" class="fx-datagrid__cell" data-editable>Gulnora Sattorova</div>
      <div role="gridcell" class="fx-datagrid__cell" data-editable>Toşkent</div>
      <div role="gridcell" class="fx-datagrid__cell"><span class="fx-status" data-tone="success">Tölangan</span></div>
      <div role="gridcell" class="fx-datagrid__cell" data-type="num" data-editable data-value="3150000">3 150 000</div>
    </div>
  </div>
</div>
<p class="fx-datagrid__foot">Katakni tahrirlaş — Enter yoki harf bosing, Esc bekor qiladi. Ustun kengligi — sarlavhada Alt+←/→.</p>
<!-- Guruhlash va jami (4.130) -->
<div class="fx-datagrid" role="grid" aria-label="Bitimlar şaharlar böyiça" data-fx-datagrid data-group-by="1" style="--_cols: 220px 140px 160px 160px">
  <div class="fx-datagrid__head" role="rowgroup"><div role="row" class="fx-datagrid__row">
    <div role="columnheader" class="fx-datagrid__cell" data-sortable aria-sort="none">Mijoz</div><div role="columnheader" class="fx-datagrid__cell">Şahar</div><div role="columnheader" class="fx-datagrid__cell">Holat</div><div role="columnheader" class="fx-datagrid__cell" data-type="num" data-agg="sum" data-sortable aria-sort="none">Summa, söm</div>
  </div></div>
  <div class="fx-datagrid__body" role="rowgroup">
    <div role="row" class="fx-datagrid__row"><div role="gridcell" class="fx-datagrid__cell">Aziz Karimov</div><div role="gridcell" class="fx-datagrid__cell">Toşkent</div><div role="gridcell" class="fx-datagrid__cell"><span class="fx-status" data-tone="success">Tölangan</span></div><div role="gridcell" class="fx-datagrid__cell" data-type="num" data-value="1200000">1 200 000</div></div>
    <div role="row" class="fx-datagrid__row"><div role="gridcell" class="fx-datagrid__cell">Bobur Rahimov</div><div role="gridcell" class="fx-datagrid__cell">Samarqand</div><div role="gridcell" class="fx-datagrid__cell"><span class="fx-status" data-tone="warning">Kutilmoqda</span></div><div role="gridcell" class="fx-datagrid__cell" data-type="num" data-value="450000">450 000</div></div>
    <div role="row" class="fx-datagrid__row"><div role="gridcell" class="fx-datagrid__cell">Dilnoza Yusupova</div><div role="gridcell" class="fx-datagrid__cell">Toşkent</div><div role="gridcell" class="fx-datagrid__cell"><span class="fx-status" data-tone="success">Tölangan</span></div><div role="gridcell" class="fx-datagrid__cell" data-type="num" data-value="2300000">2 300 000</div></div>
    <div role="row" class="fx-datagrid__row"><div role="gridcell" class="fx-datagrid__cell">Jasur Aliyev</div><div role="gridcell" class="fx-datagrid__cell">Samarqand</div><div role="gridcell" class="fx-datagrid__cell"><span class="fx-status" data-tone="success">Tölangan</span></div><div role="gridcell" class="fx-datagrid__cell" data-type="num" data-value="780000">780 000</div></div>
    <div role="row" class="fx-datagrid__row"><div role="gridcell" class="fx-datagrid__cell">Malika Saidova</div><div role="gridcell" class="fx-datagrid__cell">Toşkent</div><div role="gridcell" class="fx-datagrid__cell"><span class="fx-status" data-tone="error">Muddati ötgan</span></div><div role="gridcell" class="fx-datagrid__cell" data-type="num" data-value="310000">310 000</div></div>
  </div>
</div>
<!-- Ustunlar paneli va sudrash (4.131), katak oraligʻi va Excel'dan joylash (4.132), master–detail (4.133) -->
<div class="fx-card" style="padding:var(--fx-space-3);max-inline-size:22rem;margin-block-end:var(--fx-space-3)">
  <span class="fx-label" id="dg-x-cols">Ustunlar</span>
  <div class="fx-datagrid__columns" data-fx-datagrid-columns="dg-x" role="group" aria-labelledby="dg-x-cols"></div>
</div>
<div class="fx-datagrid" id="dg-x" role="grid" aria-label="Ulgurji buyurtmalar" data-fx-datagrid data-reorder data-range data-gridlines="both" style="--_cols: 44px 200px 140px 180px 160px">
  <div class="fx-datagrid__head" role="rowgroup"><div role="row" class="fx-datagrid__row">
    <div role="columnheader" class="fx-datagrid__cell" data-expand-all><span class="fx-sr-only">Tafsilot</span></div>
    <div role="columnheader" class="fx-datagrid__cell" data-col="mijoz" data-sortable aria-sort="none">Mijoz<span class="fx-datagrid__resize" aria-hidden="true"></span></div>
    <div role="columnheader" class="fx-datagrid__cell" data-col="shahar" data-sortable aria-sort="none">Şahar<span class="fx-datagrid__resize" aria-hidden="true"></span></div>
    <div role="columnheader" class="fx-datagrid__cell" data-col="telefon">Telefon<span class="fx-datagrid__resize" aria-hidden="true"></span></div>
    <div role="columnheader" class="fx-datagrid__cell" data-col="summa" data-type="num" data-sortable aria-sort="none">Summa, söm<span class="fx-datagrid__resize" aria-hidden="true"></span></div>
  </div></div>
  <div class="fx-datagrid__body" role="rowgroup">
    <div role="row" class="fx-datagrid__row"><div role="gridcell" class="fx-datagrid__cell fx-datagrid__expand" data-expand aria-label="Tafsilot: Aziz Karimov"></div><div role="gridcell" class="fx-datagrid__cell" data-editable>Aziz Karimov</div><div role="gridcell" class="fx-datagrid__cell" data-editable>Toşkent</div><div role="gridcell" class="fx-datagrid__cell" data-editable>+998 90 123 45 67</div><div role="gridcell" class="fx-datagrid__cell" data-type="num" data-editable data-value="12500000">12 500 000</div></div>
    <div role="row" class="fx-datagrid__row fx-datagrid__detail"><div role="gridcell" class="fx-datagrid__cell">Paxta mato — 300 m, ipak — 40 m; yetkaziş 21-oktyabr, Sergeli ombori.</div></div>
    <div role="row" class="fx-datagrid__row"><div role="gridcell" class="fx-datagrid__cell fx-datagrid__expand" data-expand aria-label="Tafsilot: Bobur Rahimov"></div><div role="gridcell" class="fx-datagrid__cell" data-editable>Bobur Rahimov</div><div role="gridcell" class="fx-datagrid__cell" data-editable>Samarqand</div><div role="gridcell" class="fx-datagrid__cell" data-editable>+998 93 210 11 05</div><div role="gridcell" class="fx-datagrid__cell" data-type="num" data-editable data-value="4800000">4 800 000</div></div>
    <div role="row" class="fx-datagrid__row fx-datagrid__detail"><div role="gridcell" class="fx-datagrid__cell">Trikotaj — 120 kg; tölov 50 % oldindan, qolgani yetkazilganda.</div></div>
    <div role="row" class="fx-datagrid__row"><div role="gridcell" class="fx-datagrid__cell fx-datagrid__expand" data-expand aria-label="Tafsilot: Dilnoza Yusupova"></div><div role="gridcell" class="fx-datagrid__cell" data-editable>Dilnoza Yusupova</div><div role="gridcell" class="fx-datagrid__cell" data-editable>Buxoro</div><div role="gridcell" class="fx-datagrid__cell" data-editable>+998 91 555 02 30</div><div role="gridcell" class="fx-datagrid__cell" data-type="num" data-editable data-value="7350000">7 350 000</div></div>
    <div role="row" class="fx-datagrid__row fx-datagrid__detail"><div role="gridcell" class="fx-datagrid__cell">Atlas — 85 m; mijoz namunani tasdiqladi, şartnoma №HF-0451.</div></div>
    <div role="row" class="fx-datagrid__row"><div role="gridcell" class="fx-datagrid__cell fx-datagrid__expand" data-expand aria-label="Tafsilot: Jasur Aliyev"></div><div role="gridcell" class="fx-datagrid__cell" data-editable>Jasur Aliyev</div><div role="gridcell" class="fx-datagrid__cell" data-editable>Namangan</div><div role="gridcell" class="fx-datagrid__cell" data-editable>+998 99 870 44 12</div><div role="gridcell" class="fx-datagrid__cell" data-type="num" data-editable data-value="2100000">2 100 000</div></div>
    <div role="row" class="fx-datagrid__row fx-datagrid__detail"><div role="gridcell" class="fx-datagrid__cell">Kiçik ulgurji: 6 xil mato, har biridan 20 m.</div></div>
  </div>
</div>
<p class="fx-datagrid__foot">Sarlavhani sudrang yoki Alt+Shift+←/→ — ustun tartibi. Shift+strelka — kataklar oraliği, Ctrl+C / Ctrl+V — Excel bilan almaşiş. ▸ — buyurtma tafsiloti.</p>
```

- Qilmang: Oddiy öqiladigan ma'lumot uçun tör işlatmang — jadval (table) yengilroq va tabiiy.
- Qilmang: Tahrirlanadigan katakni faqat rang bilan belgilamang — hover'da fon, tahrirda maydon va fokus halqasi bor.
- Qilmang: Bir törda 2 tadan köp qotgan ustun qilmang — kiçik ekranda özi siğmay qoladi.
- Qilmang: Katak içiga bir neçta tabga arziydigan tugma qöymang — tör bitta Tab bekati; içki amallarga Enter bilan kiriladi.
- Qilmang: Tahrirdan çiqib ketganda özgarişni jimgina yöqotmang — blur saqlaydi, Esc aniq bekor qiladi.
- Qilmang: Joylaşda tahrirlanmaydigan katakni jimgina özgartirmang — faqat data-editable kataklarga yoziladi.
- Qilmang: Tafsilot qatoriga ikkinçi tör qöyib klaviatura tuzoğini yasamang — içki jadval faqat öqiş uçun bölsin.

## Sana maydoni (`dateinput`, beta, 0.23.0 dan)

Sanani yozib kiritish: KK.OO.YYYY niqobi nuqtalarni oʻzi qoʻyadi, toʻliq sana tekshiriladi (mavjudligi, eng erta/eng kech sana, oʻchirilgan kunlar). Formaga ISO (YYYY-MM-DD) yashirin input orqali ketadi. Kalendarsiz — tugʻilgan sana kabi uzoq sanalar uchun qulay; kalendar bilan — fx-datepicker.

- Qaçon: Uzoq sana (tuğilgan kun, şartnoma sanasi) — klaviatura tezroq. Kalendar kerak bölmagan joy.
- Qaçon emas: Sanani köz bilan, hafta kunlari kontekstida tanlaş → `datepicker`; Davr (boşlaniş–tugaş) → `daterange`
- Variantlar: data-width=full|sm|md (standart full)
- Klaviatura: 0–9 — Raqam yozadi, nuqtalar özi qöyiladi; Backspace — Oxirgi raqamni öçiradi
- Tokenlar: --fx-border-color-error

```html
<label class="fx-field">
  <span class="fx-label">Tuğilgan sana</span>
  <span class="fx-input-group fx-dateinput" data-fx-dateinput data-max="2026-10-17" data-value="1994-03-08"><input class="fx-input-group__control" name="tugilgan" aria-describedby="di1-h"></span>
  <span class="fx-hint" id="di1-h">KK.OO.YYYY körinişida yozing.</span>
</label>
<label class="fx-field">
  <span class="fx-label">Yetkazib beriş sanasi</span>
  <span class="fx-input-group fx-dateinput" data-fx-dateinput data-min="2026-10-18" data-off-days="7" data-size="sm"><input class="fx-input-group__control" name="yetkazish" aria-describedby="di2-h"></span>
  <span class="fx-hint" id="di2-h">Ertadan boşlab, yakşanbadan boşqa kun.</span>
</label>
```

- Qilmang: Sanani 3 ta alohida select bilan bermang — bitta niqobli maydon tezroq.
- Qilmang: Faqat yaqin sana (bu hafta) tanlansa — fx-datepicker yaxşiroq.

## Sana tanlagiç (`datepicker`, beta, 0.23.0 dan)

Sana maydoni + kalendar tugmasi: yozib ham, kalendardan ham tanlanadi. Kalendar popover'da oçiladi (↓ yoki tugma), kun tanlansa maydon töladi va yopiladi, Esc yopadi. Footerda Tozalaş va Bugun. Tayyor sanalar va tabiiy til (4.101): popover çap tomonida «Bugun · Ertaga · Keyingi duşanba» (yonida sana), data-natural bilan maydonga «ertaga 15:00», «3 kundan keyin», «keyingi juma», «25-oktabr» yoziş mumkin — ostida taxmin çiqadi, Enter qabul qiladi.

- Qaçon: Bitta sana tanlaş (uçraşuv, muddat, bron). Yozib ham, bosib ham kiritiş kerak.
- Qaçon emas: Boşlaniş–tugaş davri → `daterange`; Faqat oy yoki yil → `calendar`
- Klaviatura: ↓ — Kalendarni oçadi; Esc — Yopadi, fokus maydonga qaytadi; Enter — Kunni tanlaydi (kalendarda); ↑ ↓, Home, End — Tayyor sanalar röyxatida yuriş; Enter (maydonda, soʻz yozilgan boʻlsa) — Tabiiy tildagi sanani qabul qiladi
- Tokenlar: --fx-bg-brand-subtle, --fx-bg-muted, --fx-border-color-default, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-sm, --fx-ease-standard, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-semibold, --fx-motion-fast, --fx-motion-instant, --fx-motion-press, --fx-radius-control, --fx-space-1, --fx-space-12, --fx-space-3, --fx-space-4, --fx-space-8, --fx-text-brand, --fx-text-disabled, --fx-text-error, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<div class="fx-field">
  <label class="fx-label" for="dp1">Uçraşuv sanasi</label>
  <div class="fx-datepicker" data-fx-datepicker>
    <span class="fx-input-group fx-dateinput" data-fx-dateinput data-min="2026-10-17" data-off-days="7" data-value="2026-10-24">
      <input class="fx-input-group__control" id="dp1" name="uchrashuv">
      <button class="fx-input-group__btn" type="button" popovertarget="dp1-pop" aria-label="Kalendarni oçiş"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M5 3v2M15 3v2M3.5 8h13M5 5h10a1.5 1.5 0 0 1 1.5 1.5v8A1.5 1.5 0 0 1 15 16H5a1.5 1.5 0 0 1-1.5-1.5v-8A1.5 1.5 0 0 1 5 5z" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
    </span>
    <div class="fx-popover fx-datepicker__pop" popover id="dp1-pop">
      <div class="fx-calendar" data-footer="today clear"></div>
    </div>
  </div>
</div>
<div class="fx-field">
  <label class="fx-label" for="dp2">Qönğiroq qiliş sanasi</label>
  <div class="fx-datepicker" data-fx-datepicker data-natural data-presets="bugun ertaga indinga dushanba hafta oy">
    <span class="fx-input-group fx-dateinput" data-fx-dateinput data-min="2026-10-01" data-off-days="7">
      <input class="fx-input-group__control" id="dp2" name="qongiroq">
      <button class="fx-input-group__btn" type="button" popovertarget="dp2-pop" aria-label="Kalendarni oçiş"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M5 3v2M15 3v2M3.5 8h13M5 5h10a1.5 1.5 0 0 1 1.5 1.5v8A1.5 1.5 0 0 1 15 16H5a1.5 1.5 0 0 1-1.5-1.5v-8A1.5 1.5 0 0 1 5 5z" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
    </span>
    <p class="fx-datepicker__guess"></p>
    <div class="fx-popover fx-datepicker__pop" popover id="dp2-pop">
      <div class="fx-datepicker__body"><div class="fx-datepicker__presets"></div><div class="fx-calendar" data-footer="today clear"></div></div>
    </div>
  </div>
</div>
```

- Qilmang: Içki kalendarga data-fx-calendar bermang — min/max/öçirilgan kunlarni maydondan oladi, xulq özi ulaydi.
- Qilmang: Davr uçun ikkita datepicker qöymang — fx-daterange.
- Qilmang: Tabiiy tilni yagona yöl qilmang — KK.OO.YYYY va kalendar ham işlaydi; taxmin har doim matn bilan körsatilsin.

## Sana oraliği (`daterange`, beta, 0.23.0 dan)

Boşlaniş–tugaş davri: bitta tugma-maydon, popover'da çapda tayyor oraliqlar (Bugun, Keça, Oxirgi 7 kun, Şu oy, Ötgan oy), öngda 2 oylik kalendar (birinçi bosiş — boşi, ikkinçisi — oxiri, orasi hoverda körinadi). Qöllaş bosilganda qiymat yoziladi, Bekor — özgarişsiz. Nisbiy oraliq va avto yangilaş (4.102): data-relative="15m 1h 24h 7d" — röyxat boşida «Oxirgi 15 daqiqa / 1 soat / 24 soat / 7 kun»; qöllanganda qiymat «now-15m» / «now» (har safar qayta hisoblanadi, hodisada hisoblangan from/to ISO). data-refresh="off|10s|30s|1m|5m" — maydon yonida «Yangilaş» tanlovi; yoqilsa har N soniyada «fx-range-refresh» (sahifa yaşirin bölsa töxtaydi) va «Jonli · har 30 s» yozuvi. Monitoring, loglar, sotuv paneli uçun.

- Qaçon: Hisobot, tahlil, filtr davri. Tayyor oraliqlar tez-tez kerak bölganda.
- Qaçon emas: Bitta sana → `datepicker`; Faqat kalendarni sahifada körsatiş → `calendar`
- Variantlar: data-relative=15m 1h 24h 7d; data-refresh=off|10s|30s|1m|5m (standart off)
- Klaviatura: ↑ ↓ — Tayyor oraliqlar orasida; Home / End — Birinçi / oxirgi oraliq; Enter — Oraliqni tanlaydi (kalendarda — kunni); Esc — Yopadi, özgariş saqlanmaydi
- Tokenlar: --fx-bg-brand-subtle, --fx-bg-field, --fx-bg-muted, --fx-border-color-default, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-sm, --fx-duration-pulse, --fx-ease-standard, --fx-fg-success, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-semibold, --fx-motion-fast, --fx-motion-instant, --fx-motion-press, --fx-radius-circle, --fx-radius-control, --fx-size-icon-md, --fx-size-status-dot-sm, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-8, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<div class="fx-field">
  <label class="fx-label" id="dr1-l">Hisobot davri</label>
  <div class="fx-daterange" data-fx-daterange data-name="davr" data-value="2026-10-01/2026-10-17">
    <button type="button" class="fx-input fx-daterange__trigger" popovertarget="dr1-pop" aria-labelledby="dr1-l dr1-t"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M5 3v2M15 3v2M3.5 8h13M5 5h10a1.5 1.5 0 0 1 1.5 1.5v8A1.5 1.5 0 0 1 15 16H5a1.5 1.5 0 0 1-1.5-1.5v-8A1.5 1.5 0 0 1 5 5z" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg><span class="fx-daterange__text" id="dr1-t" data-empty="Davrni tanlang"></span></button>
    <div class="fx-popover fx-daterange__pop" popover id="dr1-pop">
      <div class="fx-daterange__body">
        <div class="fx-daterange__presets"></div>
        <div class="fx-calendar" data-mode="range" data-months="2"></div>
      </div>
      <div class="fx-popover__actions">
        <button type="button" class="fx-btn" data-act="cancel">Bekor</button>
        <button type="button" class="fx-btn" data-variant="primary" data-act="apply">Qöllaş</button>
      </div>
    </div>
  </div>
</div>
<!-- Nisbiy oraliq + avto yangilash (4.102): monitoring paneli -->
<div class="fx-field">
  <label class="fx-label" id="dr2-l">Server xatolari — davr</label>
  <div class="fx-daterange" data-fx-daterange data-name="davr2" data-relative="15m 1h 24h 7d" data-presets="bugun kecha 7" data-value="now-1h/now" data-refresh="30s">
    <button type="button" class="fx-input fx-daterange__trigger" popovertarget="dr2-pop" aria-labelledby="dr2-l dr2-t"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M10 5.5V10l3 2M17 10a7 7 0 1 1-14 0 7 7 0 0 1 14 0z" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg><span class="fx-daterange__text" id="dr2-t" data-empty="Davrni tanlang"></span></button>
    <div class="fx-popover fx-daterange__pop" popover id="dr2-pop">
      <div class="fx-daterange__body"><div class="fx-daterange__presets"></div><div class="fx-calendar" data-mode="range" data-months="1"></div></div>
      <div class="fx-popover__actions"><button type="button" class="fx-btn" data-act="cancel">Bekor</button><button type="button" class="fx-btn" data-variant="primary" data-act="apply">Qöllaş</button></div>
    </div>
  </div>
</div>
```

- Qilmang: Presetlar içida 6–7 tadan köp variant bermang — data-presets bilan kerakligini tanlang.
- Qilmang: Kalendar içiga data-fx-calendar bermang — xulq özi ulaydi.
- Qilmang: Avto yangilaşni standart yoqib qöymang — foydalanuvçi özi tanlasin (server yuki, trafik).
- Qilmang: Nisbiy oraliqni «01.10 – 17.10» deb saqlamang — «now-24h» saqlanadi, aks holda ertaga eskirgan davr oçiladi.

## Kunlar tasmasi (`daystrip`, beta, 0.29.0 dan)

Gorizontal 7 kunlik mini kalendar (4.104): bron, qabul, yetkazib beriş va jadval sahifalari tepasida — töliq oy törisiz tez kun tanlaş. ‹ › — hafta, hafta Duşanbadan (data-align="today" — bugundan boşlab 7 kun). Bugun «Bugun» yozuvi va qalin halqa, band kun — burçakda nuqta (+ ekran öquvçiga «bron bor»), yopiq kun — çizilgan raqam va «yopiq». Kalendar bilan bir xil yordamçilar (oy nomlari, Du–Ya).

- Qaçon: Bron / qabul / yetkazib beriş sahifasida yaqin kunlardan birini tanlaş. Jadval yoki vaqt slotlari ustida kun almaştirgiç.
- Qaçon emas: Istalgan sana, oy töri kerak → `calendar`; Sana oraliği → `daterange`; Kun içidagi vaqt → `timeslots`
- Variantlar: data-size=md|sm (standart md); data-align=week|today (standart week)
- Klaviatura: ← → — Oldingi / keyingi kun (tanlanadi); hafta çetidan ötsa — hafta almaşadi; Home / End — Haftaning birinçi / oxirgi kuni (fokus); PageUp / PageDown — Oldingi / keyingi hafta; Boʻshliq / Enter — Fokusdagi kunni tanlaydi
- Tokenlar: --fx-bg-brand-solid, --fx-bg-muted, --fx-bg-pressed, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-strong, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-sm, --fx-ease-standard, --fx-fg-warning, --fx-font-size-lg, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-line-height-tight, --fx-motion-fast, --fx-motion-instant, --fx-motion-press, --fx-popover-width, --fx-radius-circle, --fx-radius-control, --fx-size-icon-md, --fx-size-status-dot-sm, --fx-space-1, --fx-space-2, --fx-text-brand, --fx-text-disabled, --fx-text-on-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<section class="fx-card" style="padding:var(--fx-space-4);display:grid;gap:var(--fx-space-3);max-inline-size:36rem">
  <h3 style="margin:0">Stomatologiya qabuli — «Mehr Klinikasi», Yunusobod</h3>
  <div class="fx-daystrip" data-fx-daystrip data-name="sana" data-value="2026-10-21" data-min="2026-10-01" data-marks="2026-10-22,2026-10-24" data-disabled="2026-10-23" data-off-days="7" aria-label="Qabul sanasi"></div>
  <p style="margin:0;color:var(--fx-text-secondary);font-size:var(--fx-font-size-sm)">Nuqta — böş vaqt kam qolgan kun. Yakşanba — dam oliş.</p>
</section>
<div class="fx-daystrip" data-fx-daystrip data-size="sm" data-align="today" aria-label="Yetkazib beriş kuni" style="margin-block-start:var(--fx-space-4)"></div>
```

- Qilmang: Uzoq sanani (tuğilgan kun) tasma bilan tanlatmang — kalendar yoki sana maydoni.
- Qilmang: Band kunni faqat rang bilan bildirmang — nuqta va matn bor.
- Qilmang: Bir sahifada ikkita tasmani bir xil sana uçun qöymang.

## Özgariş körsatkiçi (`delta`, beta, 0.22.0 dan)

Strelka + son + davr: «▲ +12,4% ötgan oyga nisbatan». Yönaliş (yuqori/past/özgarişsiz) va yaxşi/yomon ohang alohida beriladi; haqiqiy minus belgisi U+2212. Chip varianti (20.10): data-variant="chip" — ohang fonli pill (yaxşi — yaşil, yomon — qizil, betaraf — kulrang), KPI kartaning yuqori öng çetida.

- Qaçon: KPI plitkasida, jadval katagida, sarlavha yonida özgariş.
- Qaçon emas: Holat yorliği (faol/nofaol) → `status`
- Variantlar: data-dir=down|flat (standart up); data-tone=good|bad (standart neutral); data-variant=chip (standart text); data-size=md (standart sm)
- Tokenlar: --fx-bg-error-subtle, --fx-bg-muted, --fx-bg-success-subtle, --fx-border-width-default, --fx-fg-error, --fx-fg-success, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-regular, --fx-radius-tag, --fx-size-status-dot, --fx-space-1, --fx-space-2, --fx-text-secondary, --fx-text-tertiary

```html
<span class="fx-delta" data-dir="up" data-tone="good">+12,4% <span class="fx-delta__period">ötgan oyga nisbatan</span></span>
<span class="fx-delta" data-dir="down" data-tone="good">−3,1% <span class="fx-delta__period">xarajat</span></span>
<span class="fx-delta" data-dir="down" data-tone="bad">−8% <span class="fx-delta__period">arizalar</span></span>
<span class="fx-delta" data-dir="flat">0%</span>
<span style="display:inline-flex;gap:var(--fx-space-2);margin-inline-start:var(--fx-space-4)"><span class="fx-delta" data-variant="chip" data-dir="up" data-tone="good">+3,3%</span><span class="fx-delta" data-variant="chip" data-dir="down" data-tone="bad">−2,1%</span><span class="fx-delta" data-variant="chip" data-dir="flat">0,0%</span><span class="fx-delta" data-variant="chip" data-size="md" data-dir="up" data-tone="good">+12,5% <span class="fx-delta__period">oyma-oy</span></span></span>
```

- Qilmang: Matnda tire (-) örniga haqiqiy minus (−) yozing.
- Qilmang: Pastga strelkani avtomatik «yomon» deb bermang — xarajat kamayişi yaxşi (data-tone alohida).

## Dialog (`dialog`, beta, 0.1.0 dan)

Tasdiq va qisqa formalar uçun modal oyna. Native <dialog> + showModal(). Tasdiqlaş varianti (alertdialog, closedby=none), «yozib tasdiqlang» (matn mos kelsagina tugma yoqiladi), ölçamlar sm/lg/töliq ekran, uzun mazmunda yopişqoq sarlavha/amallar. Ustma-ust (4.154): data-stack'li dialog ustida ikkinçisi oçilsa, pastdagisi kiçrayib orqaga ketadi, parda ikki qavat qoraymaydi. Sudraladigan (data-draggable): sarlavha qatoridan siçqonça/barmoq bilan yoki .fx-dialog__grip tutqiçi + strelkalar; yopilganda markazga qaytadi.

- Qaçon: Tasdiq va qisqa forma — foydalanuvçi javobisiz davom etib bölmaydi.
- Qaçon emas: Qisqa ma'lumot tugma yonida → `popover`; Amal natijasi haqida xabar → `toast`; Tugma yonida tezkor tasdiq (modalsiz) → `popover`
- Variantlar: data-variant=alert (standart default); data-size=sm|lg|full (standart md); data-scroll=on; data-stack=off|on (standart off); data-draggable=off|on (standart off)
- Klaviatura: Esc — Yopadi; Tab — Fokus oyna içida aylanadi; Strelkalar (tutqichda) — Sudraladigan oynani suradi; Shift bilan — 4 barobar; Home (tutqichda) — Oynani markazga qaytaradi
- Tokenlar: --fx-bg-muted, --fx-bg-overlay, --fx-bg-pressed, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-sm, --fx-dialog-width, --fx-ease-emphasized, --fx-ease-enter, --fx-ease-exit, --fx-fg-error, --fx-font-size-lg, --fx-font-size-sm, --fx-font-weight-semibold, --fx-motion-base, --fx-motion-exit-base, --fx-motion-scale-enter, --fx-motion-shift-md, --fx-radius-nav, --fx-radius-overlay, --fx-shadow-lg, --fx-size-icon-sm, --fx-size-status-dot, --fx-space-10, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-6, --fx-space-8, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<dialog class="fx-dialog" id="d1">
  <h2 class="fx-dialog__title">Öçirilsinmi?</h2>
  <p class="fx-dialog__body">Bu amalni qaytarib bölmaydi.</p>
  <form method="dialog" class="fx-dialog__actions">
    <button class="fx-btn">Bekor qiliş</button>
    <button class="fx-btn" data-variant="danger">Öçiriş</button>
  </form>
</dialog>
<button class="fx-btn" commandfor="d1" command="show-modal">Oçiş</button>
<dialog class="fx-dialog" id="d2" data-variant="alert" role="alertdialog" closedby="none" aria-labelledby="d2t" data-fx-dialog>
  <h2 class="fx-dialog__title" id="d2t">Loyiha butunlay öçiriladi</h2>
  <div class="fx-dialog__body">
    Hamma ariza va hujjatlar yöqoladi, qaytarib bölmaydi.
    <div class="fx-dialog__confirm">
      <label class="fx-dialog__confirm-label" for="d2i">Tasdiqlaş uçun <code>crm-demo</code> deb yozing</label>
      <input class="fx-input" id="d2i" autocomplete="off" data-fx-dialog-match="crm-demo">
    </div>
  </div>
  <form method="dialog" class="fx-dialog__actions">
    <button class="fx-btn" autofocus>Bekor qiliş</button>
    <button class="fx-btn" data-variant="danger" data-fx-dialog-confirm disabled>Öçiriş</button>
  </form>
</dialog>
<button class="fx-btn" data-variant="danger" commandfor="d2" command="show-modal">Loyihani öçiriş</button>
<!-- Ustma-ust (4.154): mijoz kartasi ustida «Yangi kontakt» -->
<dialog class="fx-dialog" id="d3" data-fx-dialog data-stack aria-labelledby="d3t">
  <h2 class="fx-dialog__title" id="d3t">Mijoz: «Ğallaorol Agro»</h2>
  <div class="fx-dialog__body">Mas'ul şaxs körsatilmagan. Kontakt qöşing yoki röyxatdan tanlang.</div>
  <form method="dialog" class="fx-dialog__actions">
    <button class="fx-btn" value="cancel">Yopiş</button>
    <button class="fx-btn" data-variant="primary" type="button" commandfor="d4" command="show-modal">Yangi kontakt</button>
  </form>
</dialog>
<dialog class="fx-dialog" id="d4" data-fx-dialog data-size="sm" aria-labelledby="d4t">
  <h2 class="fx-dialog__title" id="d4t">Yangi kontakt</h2>
  <div class="fx-dialog__body"><label class="fx-label" for="d4i">Ism</label><input class="fx-input" id="d4i" value="Jasur Qodirov"></div>
  <form method="dialog" class="fx-dialog__actions"><button class="fx-btn">Bekor qiliş</button><button class="fx-btn" data-variant="primary">Saqlaş</button></form>
</dialog>
<button class="fx-btn" commandfor="d3" command="show-modal">Mijoz kartasi (ustma-ust)</button>
<!-- Sudraladigan (4.154) -->
<dialog class="fx-dialog" id="d5" data-fx-dialog data-draggable aria-labelledby="d5t">
  <div class="fx-dialog__head"><button class="fx-dialog__grip" type="button" aria-label="Oynani suriş (strelkalar)"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M7 5h.01M13 5h.01M7 10h.01M13 10h.01M7 15h.01M13 15h.01" stroke-width="2" stroke-linecap="round"/></svg></button><h2 class="fx-dialog__title" id="d5t">Kurs kalkulyatori</h2></div>
  <div class="fx-dialog__body">1 USD = 12 650 söm. Oynani sarlavhasidan surib, ostidagi jadvalni köring.</div>
  <form method="dialog" class="fx-dialog__actions"><button class="fx-btn">Yopiş</button></form>
</dialog>
<button class="fx-btn" commandfor="d5" command="show-modal">Sudraladigan oyna</button>
```

- Qilmang: Dialog içida yana dialog oçmang — zarur bölsa faqat data-stack bilan va 2 qavatdan oşirmang.
- Qilmang: Tasdiqlaş dialogida fokus «Öçiriş»da boşlanmasin — xavfsiz tugmada (autofocus).
- Qilmang: «Yozib tasdiqlang»ni har kiçik amalga qöymang — faqat qaytmas, katta yöqotişda.

## Ajratgiç (`divider`, beta, 0.22.0 dan)

Kontentni ikkiga ajratuvçi nozik çiziq. Böş yoki içida yorliq bilan («yoki»); gorizontal va vertikal; <hr> yoki role="separator".

- Qaçon: Bir sahifadagi mantiqiy bölimlarni yoki qatordagi guruhlarni vizual ajratiş. Kiriş formasida «yoki» ajratgiçi.
- Qaçon emas: Röyxat qatorlari orasidagi çiziq → `list`; Menyu bandlari guruhi → `menu`
- Variantlar: data-orientation=horizontal|vertical (standart horizontal); data-align=center|start|end (standart center); data-strength=default|strong (standart default)
- Tokenlar: --fx-border-color-default, --fx-border-color-strong, --fx-border-width-default, --fx-font-size-xs, --fx-space-3, --fx-space-4, --fx-space-6, --fx-text-tertiary

```html
<p>Hisobingiz bormi?</p>
<hr class="fx-divider">
<div class="fx-divider" role="separator">yoki</div>
<div style="display:flex;gap:1rem;align-items:center"><a class="fx-link" href="#">Profil</a><span class="fx-divider" data-orientation="vertical" role="separator" aria-orientation="vertical"></span><a class="fx-link" href="#">Çiqiş</a></div>
```

- Qilmang: Har elementni çiziq bilan ajratmang — oraliq (fx-stack gap) köpinça yetarli.
- Qilmang: Dekorativ çiziqni ekran öquvçiga öqitmang: ma'no bermasa aria-hidden="true".

## Ta'rif röyxati (`dl`, beta, 0.14.0 dan)

Nom — qiymat juftliklari: tafsilot varaği, profil, buyurtma ma'lumoti. Ikki ustun (standart) yoki ustma-ust (tor joyda). Variantlar: çiziqli qatorlar, ixçam, ustunli guruhlar (<div> içida dt+dd). Kengaytma: qiymat yonida .fx-dl__action yoki .fx-copy, data-columns=2|3.

- Qaçon: Bitta yozuvning maydonlari.
- Qaçon emas: Köp yozuv → `table`
- Variantlar: data-layout=row|stacked|groups (standart row); data-variant=divided (standart default); data-density=compact (standart default); data-columns=2|3
- Tokenlar: --fx-border-color-default, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-popover-width, --fx-radius-badge, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-6, --fx-text-brand, --fx-text-primary, --fx-text-tertiary

```html
<dl class="fx-dl">
  <dt>Telefon</dt><dd>+998 90 123 45 67</dd>
  <dt>Qiziqiş</dt><dd>Obuna</dd>
  <dt>Birinçi ariza</dt><dd>17.10.2026, 09:14</dd>
</dl>
<dl class="fx-dl" data-variant="divided" data-density="compact"><dt>Holat</dt><dd>Faol</dd><dt>Reja</dt><dd>Yillik</dd></dl>
<dl class="fx-dl" data-layout="groups"><div><dt>Mijoz</dt><dd>Aziz Karimov</dd></div><div><dt>Şahar</dt><dd>Toşkent</dd></div><div><dt>Summa</dt><dd>1 200 000 söm</dd></div></dl>
<dl class="fx-dl" data-columns="2"><dt>Telefon</dt><dd>+998 90 123 45 67<button type="button" class="fx-dl__action">Özgartiriş</button></dd><dt>Şahar</dt><dd>Toşkent</dd></dl>
```

- Qilmang: Jadval ma'lumotini dl bilan qilmang — köp yozuv bölsa jadval.

## Dock (`dock`, beta, 0.29.0 dan)

Ilovalar yoki bölimlar uçun ikonlar qatori (4.76): kursor ostidagi ikon kattalaşadi, qöşnilari ozroq (macOS Dock kabi), klaviatura fokusida ham. Faqat CSS (:has bilan qöşnilar). Har bandda tepada çiqadigan yorliq, joriy sahifa — pastda nuqta (aria-current). Barmoqli qurilmada, harakat kamaytirilganda va data-magnify="off" da — oddiy tugmalar qatori.

- Qaçon: Landing sahifasida mahsulot modullari yoki ilovalar namoyişi. Işxona/launcher sahifasida tez-tez oçiladigan bölimlar.
- Qaçon emas: Vositalar qatori (tahrirlaş amallari) → `toolbar`; Ilova asosiy menyusi → `shell`
- Variantlar: data-size=sm (standart md); data-magnify=off (standart on); data-color=blue|green|yellow|pink|purple|brand (standart muted)
- Klaviatura: Tab / Shift+Tab — Bandlar böylab; fokusdagi band kattalaşadi va yorliği çiqadi; Enter — Bölimni oçadi
- Tokenlar: --fx-bg-brand-solid, --fx-bg-category-blue, --fx-bg-category-green, --fx-bg-category-pink, --fx-bg-category-purple, --fx-bg-category-yellow, --fx-bg-muted, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-lg, --fx-control-h-md, --fx-control-h-sm, --fx-ease-spring, --fx-ease-standard, --fx-font-size-xs, --fx-motion-base, --fx-motion-fast, --fx-motion-press, --fx-motion-shift-sm, --fx-radius-badge, --fx-radius-circle, --fx-radius-overlay, --fx-radius-surface, --fx-shadow-lg, --fx-size-icon-lg, --fx-space-1, --fx-space-2, --fx-space-3, --fx-text-on-brand, --fx-text-on-category, --fx-text-primary

```html
<div style="display:grid;place-items:center;padding:var(--fx-space-12) var(--fx-space-4) var(--fx-space-6)">
<nav aria-label="Tezkor bölimlar" style="max-inline-size:100%;min-inline-size:0"><ul class="fx-dock">
  <li><a class="fx-dock__item" href="#" aria-current="page"><svg viewBox="0 0 256 256" aria-hidden="true"><path d="M219.31,108.68l-80-80a16,16,0,0,0-22.62,0l-80,80A15.87,15.87,0,0,0,32,120v96a8,8,0,0,0,8,8h64a8,8,0,0,0,8-8V160h32v56a8,8,0,0,0,8,8h64a8,8,0,0,0,8-8V120A15.87,15.87,0,0,0,219.31,108.68ZM208,208H160V152a8,8,0,0,0-8-8H104a8,8,0,0,0-8,8v56H48V120l80-80,80,80Z"/></svg><span class="fx-dock__label">Boş sahifa</span></a></li>
  <li><a class="fx-dock__item" href="#" data-color="blue"><svg viewBox="0 0 256 256" aria-hidden="true"><path d="M216,48H40a8,8,0,0,0-8,8V208a16,16,0,0,0,16,16H88a16,16,0,0,0,16-16V160h48v16a16,16,0,0,0,16,16h40a16,16,0,0,0,16-16V56A8,8,0,0,0,216,48ZM88,208H48V128H88Zm0-96H48V64H88Zm64,32H104V64h48Zm56,32H168V128h40Zm0-64H168V64h40Z"/></svg><span class="fx-dock__label">Bitimlar</span></a></li>
  <li><a class="fx-dock__item" href="#" data-color="green"><svg viewBox="0 0 256 256" aria-hidden="true"><path d="M244.8,150.4a8,8,0,0,1-11.2-1.6A51.6,51.6,0,0,0,192,128a8,8,0,0,1-7.37-4.89,8,8,0,0,1,0-6.22A8,8,0,0,1,192,112a24,24,0,1,0-23.24-30,8,8,0,1,1-15.5-4A40,40,0,1,1,219,117.51a67.94,67.94,0,0,1,27.43,21.68A8,8,0,0,1,244.8,150.4ZM190.92,212a8,8,0,1,1-13.84,8,57,57,0,0,0-98.16,0,8,8,0,1,1-13.84-8,72.06,72.06,0,0,1,33.74-29.92,48,48,0,1,1,58.36,0A72.06,72.06,0,0,1,190.92,212ZM128,176a32,32,0,1,0-32-32A32,32,0,0,0,128,176ZM72,120a8,8,0,0,0-8-8A24,24,0,1,1,87.24,82a8,8,0,1,0,15.5-4A40,40,0,1,0,37,117.51,67.94,67.94,0,0,0,9.6,139.19a8,8,0,1,0,12.8,9.61A51.6,51.6,0,0,1,64,128,8,8,0,0,0,72,120Z"/></svg><span class="fx-dock__label">Mijozlar</span></a></li>
  <li><a class="fx-dock__item" href="#" data-color="pink"><svg viewBox="0 0 256 256" aria-hidden="true"><path d="M128,24A104,104,0,0,0,36.18,176.88L24.83,210.93a16,16,0,0,0,20.24,20.24l34.05-11.35A104,104,0,1,0,128,24Zm0,192a87.87,87.87,0,0,1-44.06-11.81,8,8,0,0,0-6.54-.67L40,216,52.47,178.6a8,8,0,0,0-.66-6.54A88,88,0,1,1,128,216Z"/></svg><span class="fx-dock__label">Xabarlar</span></a></li>
  <li><a class="fx-dock__item" href="#" data-color="yellow"><svg viewBox="0 0 256 256" aria-hidden="true"><path d="M208,32H184V24a8,8,0,0,0-16,0v8H88V24a8,8,0,0,0-16,0v8H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM72,48v8a8,8,0,0,0,16,0V48h80v8a8,8,0,0,0,16,0V48h24V80H48V48ZM208,208H48V96H208V208Z"/></svg><span class="fx-dock__label">Kalendar</span></a></li>
  <li><a class="fx-dock__item" href="#" data-color="purple"><svg viewBox="0 0 256 256" aria-hidden="true"><path d="M224,200h-8V40a8,8,0,0,0-8-8H152a8,8,0,0,0-8,8V80H96a8,8,0,0,0-8,8v40H48a8,8,0,0,0-8,8v64H32a8,8,0,0,0,0,16H224a8,8,0,0,0,0-16ZM160,48h40V200H160ZM104,96h40V200H104ZM56,144H88v56H56Z"/></svg><span class="fx-dock__label">Hisobotlar</span></a></li>
  <li class="fx-dock__sep" role="separator"></li>
  <li><a class="fx-dock__item" href="#"><svg viewBox="0 0 256 256" aria-hidden="true"><path d="M128,80a48,48,0,1,0,48,48A48.05,48.05,0,0,0,128,80Zm0,80a32,32,0,1,1,32-32A32,32,0,0,1,128,160Zm109.94-52.79a8,8,0,0,0-3.89-5.4l-29.83-17-.12-33.62a8,8,0,0,0-2.83-6.08,111.91,111.91,0,0,0-36.72-20.67,8,8,0,0,0-6.46.59L128,41.85,97.88,25a8,8,0,0,0-6.47-.6A112.1,112.1,0,0,0,54.73,45.15a8,8,0,0,0-2.83,6.07l-.15,33.65-29.83,17a8,8,0,0,0-3.89,5.4,106.47,106.47,0,0,0,0,41.56,8,8,0,0,0,3.89,5.4l29.83,17,.12,33.62a8,8,0,0,0,2.83,6.08,111.91,111.91,0,0,0,36.72,20.67,8,8,0,0,0,6.46-.59L128,214.15,158.12,231a7.91,7.91,0,0,0,3.9,1,8.09,8.09,0,0,0,2.57-.42,112.1,112.1,0,0,0,36.68-20.73,8,8,0,0,0,2.83-6.07l.15-33.65,29.83-17a8,8,0,0,0,3.89-5.4A106.47,106.47,0,0,0,237.94,107.21Zm-15,34.91-28.57,16.25a8,8,0,0,0-3,3c-.58,1-1.19,2.06-1.81,3.06a7.94,7.94,0,0,0-1.22,4.21l-.15,32.25a95.89,95.89,0,0,1-25.37,14.3L134,199.13a8,8,0,0,0-3.91-1h-.19c-1.21,0-2.43,0-3.64,0a8.08,8.08,0,0,0-4.1,1l-28.84,16.1A96,96,0,0,1,67.88,201l-.11-32.2a8,8,0,0,0-1.22-4.22c-.62-1-1.23-2-1.8-3.06a8.09,8.09,0,0,0-3-3.06l-28.6-16.29a90.49,90.49,0,0,1,0-28.26L61.67,97.63a8,8,0,0,0,3-3c.58-1,1.19-2.06,1.81-3.06a7.94,7.94,0,0,0,1.22-4.21l.15-32.25a95.89,95.89,0,0,1,25.37-14.3L122,56.87a8,8,0,0,0,4.1,1c1.21,0,2.43,0,3.64,0a8.08,8.08,0,0,0,4.1-1l28.84-16.1A96,96,0,0,1,188.12,55l.11,32.2a8,8,0,0,0,1.22,4.22c.62,1,1.23,2,1.8,3.06a8.09,8.09,0,0,0,3,3.06l28.6,16.29A90.49,90.49,0,0,1,222.9,142.12Z"/></svg><span class="fx-dock__label">Sozlamalar</span></a></li>
  <li><a class="fx-dock__item" href="#"><svg viewBox="0 0 256 256" aria-hidden="true"><path d="M229.66,218.34l-50.07-50.06a88.11,88.11,0,1,0-11.31,11.31l50.06,50.07a8,8,0,0,0,11.32-11.32ZM40,112a72,72,0,1,1,72,72A72.08,72.08,0,0,1,40,112Z"/></svg><span class="fx-dock__label">Qidiruv</span></a></li>
</ul></nav>
</div>
```

- Qilmang: Asosiy navigatsiyani faqat Dock'ga qoldirmang — yorliqsiz ikonlarni hamma tuşunmaydi; sayt yoki ilova menyusi alohida bölsin.
- Qilmang: 8–10 tadan köp band qöymang.
- Qilmang: Kattalaşişni har kiçik ikon qatoriga (toolbar) qöllamang — bu landing va launcher uçun.

## Prujinali sudraş (`drag`, beta, 0.29.0 dan)

Elementni barmoq yoki siçqonça bilan suriş: sudralayotganda körsatkiçga yopişadi va biroz kötariladi, qöyib yuborilganda tezligi bilan biroz davom etadi (inersiya) va prujina bilan joyiga qaytadi (HIG, M3 Expressive, Vaul). data-release="dismiss" — eni 40 %idan uzoq yoki tez surilsa, element şu tomonga uçib ketadi va yopiladi (swipe bilan yopiş: bildirişnoma, karta, varaq); çegaradan ötganda element xiralaşib ogohlantiradi. data-axis — x (standart), y yoki both. Hodisalar: fx-drag-dismiss (bekor qilsa böladi), fx-drag-dismissed, fx-drag-return. Qaytariladigan elementda rezina qarşilik bor. Harakat kamaytirilsa — inersiya va prujina yöq.

- Qaçon: Swipe bilan yopiladigan bildirişnoma, taklif yoki karta (mobil). Landing sahifada «tirik» fizik karta — prujina his qilinsin.
- Qaçon emas: Röyxat tartibini özgartiriş → `sortable`; Pastdan çiquvçi varaq (sheet) yopilişi → `sheet`
- Variantlar: data-axis=x|y|both (standart x); data-release=return|dismiss (standart return); data-spring=bounce|soft (standart bounce)
- Klaviatura: ← → ↑ ↓ — Elementni turtadi, prujina bilan qaytadi; Delete / Backspace — dismiss rejimida — yopadi
- Tokenlar: --fx-border-color-focus, --fx-border-width-focus, --fx-drag-x, --fx-drag-y, --fx-ease-bounce, --fx-ease-enter, --fx-ease-exit, --fx-ease-spring, --fx-ease-standard, --fx-motion-base, --fx-motion-fast, --fx-motion-press, --fx-motion-slow, --fx-shadow-lg, --fx-space-3

```html
<p id="drag-hint" class="fx-sr-only">Çapga yoki öngga suring yoki Delete tugmasini bosing — bildirişnoma yopiladi.</p>
<ul class="fx-drag-stack" aria-label="Bildirişnomalar" style="max-inline-size:26rem">
  <li class="fx-card" data-fx-drag data-axis="x" data-release="dismiss" tabindex="0" aria-describedby="drag-hint" style="display:flex;align-items:start;gap:var(--fx-space-3)">
    <div style="flex:1;min-inline-size:0"><h3 class="fx-card__title">Yangi buyurtma #1042</h3><p class="fx-card__text">Dilnoza Karimova · 1 250 000 söm · 2 daqiqa oldin</p></div>
    <button type="button" class="fx-btn" data-variant="ghost" data-shape="icon" data-size="sm" aria-label="Yopiş: Yangi buyurtma #1042">✕</button>
  </li>
  <li class="fx-card" data-fx-drag data-axis="x" data-release="dismiss" tabindex="0" aria-describedby="drag-hint" style="display:flex;align-items:start;gap:var(--fx-space-3)">
    <div style="flex:1;min-inline-size:0"><h3 class="fx-card__title">Tölov qabul qilindi</h3><p class="fx-card__text">Payme · 480 000 söm · 15 daqiqa oldin</p></div>
    <button type="button" class="fx-btn" data-variant="ghost" data-shape="icon" data-size="sm" aria-label="Yopiş: Tölov qabul qilindi">✕</button>
  </li>
  <li class="fx-card" data-fx-drag data-axis="x" data-release="dismiss" tabindex="0" aria-describedby="drag-hint" style="display:flex;align-items:start;gap:var(--fx-space-3)">
    <div style="flex:1;min-inline-size:0"><h3 class="fx-card__title">Mijoz izoh qoldirdi</h3><p class="fx-card__text">«Yetkazib beriş vaqtini özgartirsa böladimi?» · 1 soat oldin</p></div>
    <button type="button" class="fx-btn" data-variant="ghost" data-shape="icon" data-size="sm" aria-label="Yopiş: Mijoz izoh qoldirdi">✕</button>
  </li>
</ul>
<div class="fx-card" data-fx-drag data-axis="both" tabindex="0" aria-label="Prujinali karta: suring va qöyib yuboring" style="margin-block-start:var(--fx-space-6);max-inline-size:16rem;text-align:center">
  <p class="fx-card__title">Meni suring</p>
  <p class="fx-card__text">Qöyib yuborsangiz — inersiya bilan davom etib, prujina bilan joyiga qaytadi.</p>
</div>
```

- Qilmang: Yopişni faqat swipe bilan qoldirmang — har kartada «Yopiş» tugmasi bölsin (klaviatura, ekran öquvçi, siçqonça).
- Qilmang: Saralaş uçun işlatmang — tartib özgarsa sortable.
- Qilmang: Sahifa vertikal aylanadigan joyda data-axis="y" qöymang — scroll bilan töqnaşadi.

## Fayl yuklaş (`dropzone`, beta, 0.14.0 dan)

Fayl tanlaş yoki sudrab taşlaş maydoni: bosilsa oyna oçiladi, ustiga olib kelinganda brend tusi, tanlangan fayllar nomi körinadi. Native input type="file" içida. Kengaytma: data-variant=compact, .fx-dropzone__limit, fayl qatorlari .fx-dropzone__list/__file (progress, data-state=error|done, qayta uriniş, thumbnail). Buferdan joylaş va papka (4.105): data-paste bilan Ctrl+V skrinşotni qöşadi (nomi «skrinshot-sana-vaqt.png»), papka taşlansa içidagi hamma fayl olinadi, «Papka tanlaş» tugmasi ham bor.

- Qaçon: Skrinşot, hujjat, rasm yuklaş.
- Qaçon emas: Bitta kiçik fayl, joy tor → `button`
- Variantlar: data-variant=compact; data-paste=on|page
- Klaviatura: Tab, Enter/Space — Fayl tanlaş oynasi; Ctrl+V — Buferdagi skrinşot yoki faylni qöşadi (data-paste)
- Tokenlar: --fx-bg-brand-solid, --fx-bg-brand-subtle, --fx-bg-muted, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-error, --fx-border-color-focus, --fx-border-color-strong, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-md, --fx-ease-standard, --fx-fg-success, --fx-font-adjust-mono, --fx-font-family-mono, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-motion-fast, --fx-radius-badge, --fx-radius-circle, --fx-radius-control, --fx-radius-surface, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-6, --fx-space-8, --fx-text-brand, --fx-text-error, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<label class="fx-dropzone" data-fx-dropzone>
  <input type="file" multiple accept="image/*,.pdf">
  <span class="fx-dropzone__title">Faylni şu yerga taşlang yoki tanlang</span>
  <span class="fx-dropzone__hint">PNG, JPG yoki PDF, 10 MB gaça</span>
  <span class="fx-dropzone__files" data-files aria-live="polite"></span>
</label>
<ul class="fx-dropzone__list"><li class="fx-dropzone__file" data-state="error"><span class="fx-dropzone__name">hisobot.pdf</span><span class="fx-dropzone__meta">Hajmi 10 MB dan oşdi</span><button type="button" class="fx-dropzone__retry">Qayta uriniş</button></li></ul>
<label class="fx-dropzone" data-fx-dropzone data-paste>
  <input type="file" multiple accept="image/*,.pdf,.docx">
  <span class="fx-dropzone__title">Hujjatlarni taşlang, tanlang yoki joylang</span>
  <span class="fx-dropzone__paste">Skrinşot: <kbd>Ctrl</kbd>+<kbd>V</kbd></span>
  <span class="fx-dropzone__hint">Butun papkani ham taşlaş mumkin · <button type="button" class="fx-dropzone__folder" data-folder>Papka tanlaş</button></span>
  <span class="fx-dropzone__files" data-files aria-live="polite"></span>
</label>
```

- Qilmang: Ruxsat etilgan tur va hajmni yaşirmang — izohda yozing.

## Effektlar (spotlight, çegara nuri, yaltiraş, yönalişli hover) (`effects`, beta, 0.28.0 dan)

Landing va «wow» sahifalar uçun ixtiyoriy effektlar qatlami: istalgan yuzaga (karta, bento katagi, narx kartasi) data-fx atributi bilan qöşiladi. «spotlight» — kursorni kuzatuvçi yumşoq nur: kartaning çegarasi va foni kursor ostida yonadi; data-fx-effects konteyner içida kursor yaqinidagi qöşni kartalar çegarasi ham yonadi (Linear, Magic UI uslubi). «beam» — çegara böylab aylanib yuruvçi nur, «tavsiya» yoki «yangi» urğusi uçun; data-fx-glow bilan taşqi yumşoq nur. Ranglar mavzudan (brend yoki toifa rangi) — HEX yöq. Çeksiz aylaniş faqat ekranda körinib turganda; harakat kamaytirilsa, calm yoki none rejimda — nur statik turadi. «glare» (4.54) — hover yoki klaviatura fokusida karta ustidan bitta diagonal yaltiraş ötadi (::before işlatadi — beam data-fx-glow bilan birga qöyilmaydi). «direction» (4.55) — içidagi qoplama (.fx-effects__overlay) kursor kirgan tomondan sirpanib çiqadi va çiqqan tomonga ketadi; klaviatura fokusida pastdan çiqadi, hover yöq qurilmada qoplama doim pastda körinadi.

- Qaçon: Landing sahifadagi xususiyatlar töri, bento va narx kartalari — «tirik» sezilsin. Bitta urğu: eng ommabop tarif, yangi funksiya kartasi, AI kiriş nuqtasi. Portfolio/loyiha töri: rasm ustida nom va izoh kursor tomonidan çiqadi (direction); tarif kartasiga yaltiraş (glare).
- Qaçon emas: Oddiy ma'lumot kartasi, ilova içidagi panel → `card`; Yangilik yoki holatni bildiriş → `badge`
- Variantlar: data-fx=spotlight|beam|glare|direction (standart none); data-fx-color=blue|purple|pink|green (standart brand); data-fx-speed=slow|fast (standart normal)
- Tokenlar: --fx-beam-angle, --fx-bg-brand-solid, --fx-bg-category-blue, --fx-bg-category-green, --fx-bg-category-pink, --fx-bg-category-purple, --fx-bg-muted, --fx-bg-overlay, --fx-bg-static-light, --fx-bg-surface, --fx-border-color-surface, --fx-border-width-default, --fx-duration-pulse, --fx-ease-emphasized, --fx-ease-enter, --fx-ease-standard, --fx-font-size-lg, --fx-font-size-sm, --fx-font-weight-semibold, --fx-motion-base, --fx-motion-instant, --fx-motion-slow, --fx-motion-slower, --fx-mx, --fx-my, --fx-space-1, --fx-space-10, --fx-space-12, --fx-space-4, --fx-space-5, --fx-spot, --fx-spot-fill, --fx-viz-accent

```html
<div data-fx-effects style="display:grid;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));gap:var(--fx-space-4)">
  <article class="fx-card" data-fx="spotlight">
    <h3 class="fx-card__title">Tokenlar</h3>
    <p class="fx-card__text">Rang, oraliq va şrift — bitta manbadan. Mavzu almaşsa, butun sayt bir zumda yangilanadi.</p>
  </article>
  <article class="fx-card" data-fx="spotlight beam" data-fx-glow>
    <span class="fx-badge" data-tone="brand" style="justify-self:start">Tavsiya</span>
    <h3 class="fx-card__title">MCP orqali AI agent</h3>
    <p class="fx-card__text">Agent komponentlarni özi topadi, qoidalarni tekşiradi va xatosiz kod yozadi.</p>
  </article>
  <article class="fx-card" data-fx="spotlight" data-fx-color="blue">
    <h3 class="fx-card__title">npx foxui update</h3>
    <p class="fx-card__text">Yangi versiya taklif bölib keladi — özgarişlarni körib, bitta buyruq bilan olasiz.</p>
  </article>
</div>
<div data-fx-effects style="display:grid;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:var(--fx-space-4);margin-block-start:var(--fx-space-6)">
  <a class="fx-card" href="#" data-fx="direction" style="padding:0;aspect-ratio:4/3;background:linear-gradient(150deg, var(--fx-bg-category-blue), var(--fx-bg-category-purple))"><span class="fx-effects__overlay"><span class="fx-effects__title">Samarqand Grand</span><span class="fx-effects__meta">Mehmonxona sayti · bron qiliş</span></span></a>
  <a class="fx-card" href="#" data-fx="direction" style="padding:0;aspect-ratio:4/3;background:linear-gradient(150deg, var(--fx-bg-category-green), var(--fx-bg-category-blue))"><span class="fx-effects__overlay"><span class="fx-effects__title">Tong maktabi</span><span class="fx-effects__meta">LMS · 1 200 öquvçi</span></span></a>
  <a class="fx-card" href="#" data-fx="direction" style="padding:0;aspect-ratio:4/3;background:linear-gradient(150deg, var(--fx-bg-category-coral), var(--fx-bg-category-yellow))"><span class="fx-effects__overlay"><span class="fx-effects__title">Zarafşon Tekstil</span><span class="fx-effects__meta">ERP · ombor va savdo</span></span></a>
</div>
<div data-fx-effects style="display:grid;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));gap:var(--fx-space-4);margin-block-start:var(--fx-space-6)">
  <a class="fx-card" href="#" data-fx="glare" style="text-decoration:none;color:inherit"><span class="fx-badge" data-tone="brand" style="justify-self:start">Pro</span><h3 class="fx-card__title">Yillik obuna</h3><p class="fx-card__text">2 oy bepul · barça yangilanişlar va MCP</p></a>
  <a class="fx-card" href="#" data-fx="glare spotlight" style="text-decoration:none;color:inherit"><h3 class="fx-card__title">Jamoa</h3><p class="fx-card__text">5 kişigaça · umumiy mavzu va tokenlar</p></a>
</div>
```

- Qilmang: Effektni ilova (CRM, jadval, forma) içida işlatmang — bu landing va marketing qatlami.
- Qilmang: Bitta ekranda bir neçta çegara nurini qöymang — urğu bitta bölsin (eng ommabop tarif yoki asosiy CTA).
- Qilmang: Ma'noni faqat nur bilan bermang — «Tavsiya» belgisi söz bilan ham yozilsin.
- Qilmang: Yönalişli qoplamaga muhim amalni yaşirmang — karta butuniça havola bölsin, qoplamada faqat nom va izoh.

## Elevation va yuza qatlamlari (`elevation`, beta, 0.28.0 dan)

Yuza qatlamlari poydevori. Elevation 0–5 (4.7): har daraja soya (--fx-elevation-N) + yuza tusi (--fx-elevation-tint-N) juftligi — yoruğda soya, qoronğida yuza yoruğroq bölib ajraladi; soya uslub tugmalariga (blur, depth) va «Çegara» öqiga böysunadi. data-hover="raise" — hover'da bir daraja kötariladi. Şişa material (4.16): fx-material thin/regular/thick — şaffof yuza, orqa fon xiralaşuvi, nozik çegara; qöllanmasa yoki şaffoflik/kontrast sozlamasida tekis yuza. Viz palitralar (4.20): ketma-ket --fx-viz-seq-1…7 (kamdan köpga, brend) va ikki qutbli --fx-viz-div-1…7 (xavf ← kontekst → ösiş), mavzu bilan almaşadi; fx-viz-scale — legenda çiziği, data-viz-step — katakni böyaş.

- Qaçon: Yuza darajasini belgilaş: karta (1), sudralayotgan element (2), menyu (3), dialog (4), toast (5). Yopişqoq header yoki varaq ostidan kontent ötayotgani sezilişi kerak bölganda — fx-material. Heatmap, choropleth, foiz özgarişi jadvali — viz-seq / viz-div.
- Qaçon emas: Kontent guruhi uçun yuza (çegarali) → `card`; Kategoriya (toifa) ranglari → `badge`
- Variantlar: data-level=0|1|2|3|4|5 (standart 1); data-hover=none|raise (standart none); data-material=thin|regular|thick (standart regular); data-scale=seq|div (standart seq)
- Tokenlar: --fx-bg-surface, --fx-border-color-default, --fx-border-color-strong, --fx-border-width-default, --fx-ease-spring, --fx-ease-standard, --fx-elevation-0, --fx-elevation-1, --fx-elevation-2, --fx-elevation-3, --fx-elevation-4, --fx-elevation-5, --fx-elevation-tint-0, --fx-elevation-tint-1, --fx-elevation-tint-2, --fx-elevation-tint-3, --fx-elevation-tint-4, --fx-elevation-tint-5, --fx-font-size-xs, --fx-knob-motion-lift, --fx-motion-base, --fx-motion-lift, --fx-radius-badge, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-space-8, --fx-text-primary, --fx-text-secondary, --fx-viz-brand, --fx-viz-context, --fx-viz-div-1, --fx-viz-div-2, --fx-viz-div-3, --fx-viz-div-4, --fx-viz-div-5, --fx-viz-div-6, --fx-viz-div-7, --fx-viz-risk, --fx-viz-seq-1, --fx-viz-seq-2, --fx-viz-seq-3, --fx-viz-seq-4, --fx-viz-seq-5, --fx-viz-seq-6, --fx-viz-seq-7

```html
<div class="fx-grid" data-min="sm" data-gap="4">
  <div class="fx-elevation" data-level="0" style="padding: var(--fx-space-4); border-radius: var(--fx-radius-surface)">0 · Tekis panel</div>
  <div class="fx-elevation" style="padding: var(--fx-space-4); border-radius: var(--fx-radius-surface)">1 · Mijoz kartasi</div>
  <div class="fx-elevation" data-level="2" style="padding: var(--fx-space-4); border-radius: var(--fx-radius-surface)">2 · Sudralayotgan bitim</div>
  <div class="fx-elevation" data-level="3" style="padding: var(--fx-space-4); border-radius: var(--fx-radius-surface)">3 · Menyu</div>
  <div class="fx-elevation" data-level="4" style="padding: var(--fx-space-4); border-radius: var(--fx-radius-surface)">4 · Dialog</div>
  <div class="fx-elevation" data-level="5" style="padding: var(--fx-space-4); border-radius: var(--fx-radius-surface)">5 · Bildirişnoma</div>
  <a class="fx-elevation" data-hover="raise" href="#" style="padding: var(--fx-space-4); border-radius: var(--fx-radius-surface); color: inherit; text-decoration: none">Hover'da kötariladi</a>
</div>
<div class="fx-material" data-material="regular" style="padding: var(--fx-space-4); border-radius: var(--fx-radius-overlay); margin-block-start: var(--fx-space-4)">Şişa panel: «Yangi buyurtma — Aziza Karimova, 340 000 söm»</div>
<div class="fx-viz-scale" data-scale="seq" role="img" aria-label="Şkala: 0 dan 120 tagaça buyurtma" style="margin-block-start: var(--fx-space-4)"><span class="fx-viz-scale__min">0</span><i></i><i></i><i></i><i></i><i></i><i></i><i></i><span class="fx-viz-scale__max">120</span></div>
<div class="fx-viz-scale" data-scale="div" role="img" aria-label="Şkala: −30 % dan +30 % gaça özgariş" style="margin-block-start: var(--fx-space-2)"><span class="fx-viz-scale__min">−30 %</span><i></i><i></i><i></i><i></i><i></i><i></i><i></i><span class="fx-viz-scale__max">+30 %</span></div>
<table class="fx-table" style="margin-block-start: var(--fx-space-4)"><thead><tr><th>Filial</th><th>Du</th><th>Se</th><th>Ch</th></tr></thead><tbody><tr><td>Çilonzor</td><td data-viz-step="seq-2">14</td><td data-viz-step="seq-4">52</td><td data-viz-step="seq-3">31</td></tr><tr><td>Yunusobod</td><td data-viz-step="seq-3">33</td><td data-viz-step="seq-1">6</td><td data-viz-step="seq-4">48</td></tr></tbody></table>
```

- Qilmang: Soyani qölda yozmang (box-shadow: 0 4px …) — darajani tanlang: soya uslub va chegara oʻqiga boʻysunadi.
- Qilmang: Bir ekranda 3 tadan ortiq darajani yonma-yon işlatmang — ierarxiya yöqoladi.
- Qilmang: Şişa materialni matn köp bölgan katta yuzada işlatmang — orqa fon öqişni buzadi; header, varaq, toast uçun.
- Qilmang: Viz poğonani yagona ma'no belgisi qilmang: katak içida qiymat yoki legenda bölsin.

## Email şablonlari (`email`, beta, 0.29.0 dan)

Tranzaksion xatlar uçun naqş (4.181): tasdiq kodi, parol tiklaş, hisob-faktura va xabarnoma. Poçta mijozlari (Gmail, Outlook, Apple Mail, Mail.ru) flex/grid'ni bilmaydi — şuning uçun tuzilma JADVALLI: <table role="presentation"> içma-iç, bitta ustun, eni ~600 px, tugma — jadval katagidagi havola. Uslub bu yerda FoxUI tokenlarida (hujjat saytida köriş, mavzu va qoronği rejim bilan almaşiş); yuborişdan oldin build bosqiçida tokenlar qiymatga aylantirilib, uslublar inline qilinadi (masalan juice) — şu sababli faqat inline'ga çidaydigan xossalar işlatilgan. .fx-email__preheader — xatlar röyxatida mavzu yonida çiqadigan yaşirin qisqa matn. data-tone — kartaning tepa çiziği: brand (standart), success (tölov), warning (xavfsizlik), error (muvaffaqiyatsiz tölov).

- Qaçon: Röyxatdan ötiş, kiriş kodi, parol tiklaş xatlari. Tölov çeki, hisob-faktura, obuna yangilanişi. Taklif, izoh, topşiriq haqida xabarnomalar.
- Qaçon emas: Sayt içidagi bildirişnoma → `toast`; Ilova içidagi xabarlar qutisi → `inbox`
- Variantlar: data-tone=brand|success|warning|error (standart brand)
- Klaviatura: Tab — Logo → asosiy tugma → zaxira havola → footer havolalari
- Tokenlar: --fx-bg-brand-solid, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-strong, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-dialog-width, --fx-fg-error, --fx-fg-success, --fx-fg-warning, --fx-font-adjust-mono, --fx-font-family-mono, --fx-font-family-sans, --fx-font-size-2xl, --fx-font-size-lg, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xl, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-line-height-normal, --fx-line-height-relaxed, --fx-line-height-snug, --fx-radius-control, --fx-radius-surface, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-space-6, --fx-space-8, --fx-text-brand, --fx-text-on-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<table class="fx-email" role="presentation" aria-label="Tasdiq kodi xati" style="margin-block-end: var(--fx-space-10)">
  <tr><td class="fx-email__outer">
    <span class="fx-email__preheader">Tasdiq kodi: 482 913. 10 daqiqa amal qiladi.</span>
    <table class="fx-email__container" role="presentation">
      <tr><td class="fx-email__header"><a class="fx-email__logo" href="https://foxui.dev">FoxUI</a></td></tr>
      <tr><td class="fx-email__card">
        <h1 class="fx-email__title">Emailingizni tasdiqlang</h1>
        <p class="fx-email__text">Assalomu alaykum, Aziz! Röyxatdan ötişni yakunlaş uçun quyidagi kodni kiriting:</p>
        <p class="fx-email__code">482913</p>
        <p class="fx-email__muted">Kod 10 daqiqa amal qiladi. Siz söramagan bölsangiz — bu xatni e'tiborsiz qoldiring.</p>
      </td></tr>
      <tr><td class="fx-email__footer">«FoxUI» MChJ · Toşkent, Buyuk Ipak Yöli 45<br>Bu xat salom@foxui.dev hisobingiz uçun yuborildi. <a href="#">Xabarnoma sozlamalari</a> · <a href="#">Obunadan çiqiş</a></td></tr>
    </table>
  </td></tr>
</table>
<table class="fx-email" role="presentation" data-tone="warning" aria-label="Parol tiklaş xati" style="margin-block-end: var(--fx-space-10)">
  <tr><td class="fx-email__outer">
    <span class="fx-email__preheader">Parolni tiklaş havolasi — 1 soat amal qiladi.</span>
    <table class="fx-email__container" role="presentation">
      <tr><td class="fx-email__header"><a class="fx-email__logo" href="https://foxui.dev">FoxUI</a></td></tr>
      <tr><td class="fx-email__card">
        <h1 class="fx-email__title">Parolni tiklaş</h1>
        <p class="fx-email__text">Hisobingiz uçun parolni tiklaş söraldi (18-oktabr, 14:32, Toşkent, Chrome).</p>
        <table role="presentation"><tr><td class="fx-email__action"><a class="fx-email__button" href="#">Yangi parol örnatiş</a></td></tr></table>
        <p class="fx-email__muted">Tugma işlamasa, havolani brauzerga nusxalang:<br><a class="fx-email__link" href="#">https://foxui.dev/parol/tiklash?t=8f2c…</a></p>
        <p class="fx-email__notice">Siz söramagan bölsangiz, parolingiz özgarmaydi. Xavotir bölsa — salom@foxui.dev ga yozing.</p>
      </td></tr>
      <tr><td class="fx-email__footer">«FoxUI» MChJ · Toşkent, Buyuk Ipak Yöli 45<br>Bu xat salom@foxui.dev hisobingiz uçun yuborildi. <a href="#">Xabarnoma sozlamalari</a> · <a href="#">Obunadan çiqiş</a></td></tr>
    </table>
  </td></tr>
</table>
<table class="fx-email" role="presentation" data-tone="success" aria-label="Hisob-faktura xati" style="margin-block-end: var(--fx-space-10)">
  <tr><td class="fx-email__outer">
    <span class="fx-email__preheader">Tölov qabul qilindi: 1 200 000 söm, FX-2026-0412.</span>
    <table class="fx-email__container" role="presentation">
      <tr><td class="fx-email__header"><a class="fx-email__logo" href="https://foxui.dev">FoxUI</a></td></tr>
      <tr><td class="fx-email__card">
        <h1 class="fx-email__title">Tölov qabul qilindi</h1>
        <p class="fx-email__text">Rahmat! «Ipak Yöli Savdo» MChJ jamoasi uçun yillik obuna faollaştirildi.</p>
        <table class="fx-email__meta" role="presentation"><tr><td>Hisob-faktura</td><td class="fx-email__num">FX-2026-0412</td></tr><tr><td>Sana</td><td class="fx-email__num">18.10.2026</td></tr><tr><td>Tölov usuli</td><td class="fx-email__num">Click · **** 4417</td></tr></table>
        <table class="fx-email__items">
          <tr><th scope="col">Xizmat</th><th scope="col" class="fx-email__num">Summa</th></tr>
          <tr><td>FoxUI Jamoa — yillik, 5 örin</td><td class="fx-email__num">1 090 909 söm</td></tr>
          <tr><td>QQS 10%</td><td class="fx-email__num">109 091 söm</td></tr>
          <tr class="fx-email__total"><td>Jami</td><td class="fx-email__num">1 200 000 söm</td></tr>
        </table>
        <table role="presentation"><tr><td class="fx-email__action"><a class="fx-email__button" href="#">Hisob-fakturani yuklab oliş (PDF)</a></td></tr></table>
      </td></tr>
      <tr><td class="fx-email__footer">«FoxUI» MChJ · Toşkent, Buyuk Ipak Yöli 45<br>Bu xat salom@foxui.dev hisobingiz uçun yuborildi. <a href="#">Xabarnoma sozlamalari</a> · <a href="#">Obunadan çiqiş</a></td></tr>
    </table>
  </td></tr>
</table>
<table class="fx-email" role="presentation" aria-label="Xabarnoma xati" style="margin-block-end: var(--fx-space-10)">
  <tr><td class="fx-email__outer">
    <span class="fx-email__preheader">Dilnoza Yusupova sizni «Mijozlar CRM» loyihasiga qöşdi.</span>
    <table class="fx-email__container" role="presentation">
      <tr><td class="fx-email__header"><a class="fx-email__logo" href="https://foxui.dev">FoxUI</a></td></tr>
      <tr><td class="fx-email__card">
        <h1 class="fx-email__title">Sizni loyihaga taklif qilişdi</h1>
        <p class="fx-email__text"><strong>Dilnoza Yusupova</strong> sizni «Mijozlar CRM» loyihasiga <strong>Tahrirlovçi</strong> sifatida qöşdi.</p>
        <hr class="fx-email__divider">
        <p class="fx-email__muted">«Yangi mijozlar sahifasi tayyor — körib çiqib izoh qoldiring, iltimos.»</p>
        <table role="presentation"><tr><td class="fx-email__action"><a class="fx-email__button" href="#">Loyihani oçiş</a></td></tr></table>
      </td></tr>
      <tr><td class="fx-email__footer">«FoxUI» MChJ · Toşkent, Buyuk Ipak Yöli 45<br>Bu xat salom@foxui.dev hisobingiz uçun yuborildi. <a href="#">Xabarnoma sozlamalari</a> · <a href="#">Obunadan çiqiş</a></td></tr>
    </table>
  </td></tr>
</table>
```

- Qilmang: Flex, grid, position, CSS özgaruvçisini inline qilinmagan holda yubormang — Outlook va Gmail ularni taşlab yuboradi.
- Qilmang: Muhim ma'lumotni (kod, summa) faqat rasmda bermang — rasmlar köpinça öçirilgan böladi.
- Qilmang: Bitta xatda bir neçta asosiy tugma qöymang — bitta harakat, qolgani matnli havola.
- Qilmang: Obunadan çiqiş va kompaniya manzilini olib taşlamang — marketing xatlarida bu qonun talabi.

## Emoji tanlagiç (`emojipicker`, beta, 0.24.0 dan)

Emoji tanlaş paneli: qidiruv (özbekça va inglizça sözlar), 7 toifa tabi, “Oxirgilar” (brauzerda saqlanadi). Brauzerning öz emojilari — rasm yuklanmaydi. Tanlanganda `fx-emoji-select` hodisasi; `data-target` bilan maydonning kursor örniga yoziladi. Odatda popover içida işlatiladi.

- Qaçon: Çat, izoh yoki reaktsiyaga emoji qöşiş.
- Qaçon emas: Tez reaktsiya (3–5 ta) → `msgactions`
- Klaviatura: ← → — Tablar yoki emojilar orasida; ↑ ↓ — Emoji qatorlari orasida; Home, End — Birinçi / oxirgi; Enter, Space — Emoji tanlaydi
- Tokenlar: --fx-bg-brand-solid, --fx-bg-brand-subtle, --fx-bg-muted, --fx-bg-pressed, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-ease-standard, --fx-font-size-lg, --fx-font-size-sm, --fx-font-size-xl, --fx-font-size-xs, --fx-font-weight-medium, --fx-motion-fast, --fx-motion-instant, --fx-motion-press, --fx-popover-width, --fx-radius-circle, --fx-radius-nav, --fx-radius-overlay, --fx-shadow-md, --fx-size-control-md, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-6, --fx-text-tertiary

```html
<div class="fx-field">
  <label class="fx-label" for="emoji-demo">Xabar</label>
  <input class="fx-input" id="emoji-demo" placeholder="Xabar yozing…">
</div>
<div class="fx-emojipicker" data-fx-emojipicker data-target="#emoji-demo"></div>
```

- Qilmang: Emoji bilan iş natijasini yolğiz bildirmang (✅ ning yonida söz ham bölsin).
- Qilmang: Brend ikonlari örnida emoji işlatmang — ular platformaga qarab har xil çiqadi.
- Qilmang: Panelni sahifaga doimiy qöymang — `popover` içida, tugma bosilganda oçing.

## Böş holat (`empty`, beta, 0.10.0 dan)

Röyxat yoki jadvalda hali heç narsa yöq, qidiruv topmadi yoki yuklaşda xato: belgi, sarlavha, bitta qator izoh va keyingi qadam. Kengaytma: data-state=first|search|forbidden (xato bilan 4 tayyor holat), .fx-empty__art[data-size=sm|lg|illustration], .fx-empty__link.

- Qaçon: Böş röyxat, topilmagan qidiruv, yuklaş xatosi.
- Qaçon emas: Ma'lumot yuklanmoqda → `skeleton`
- Variantlar: data-state=empty|error|first|search|forbidden (standart empty); data-size=default|compact (standart default)
- Tokenlar: --fx-bg-brand-subtle, --fx-bg-error-subtle, --fx-bg-muted, --fx-bg-warning-subtle, --fx-border-color-focus, --fx-border-width-focus, --fx-fg-error, --fx-fg-warning, --fx-font-size-md, --fx-font-size-sm, --fx-font-weight-semibold, --fx-radius-badge, --fx-radius-surface, --fx-size-icon-lg, --fx-space-1, --fx-space-10, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-6, --fx-space-8, --fx-text-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<div class="fx-empty">
  <div class="fx-empty__art" aria-hidden="true">∅</div>
  <p class="fx-empty__title">Hali ariza yöq</p>
  <p class="fx-empty__text">Saytdagi forma orqali kelgan arizalar şu yerda körinadi.</p>
  <div class="fx-empty__actions"><a class="fx-btn" href="#">Formani oçiş</a></div>
</div>
<div class="fx-empty" data-state="error" data-size="compact">
  <div class="fx-empty__art" aria-hidden="true">!</div>
  <p class="fx-empty__title">Yuklab bölmadi</p>
  <p class="fx-empty__text">Internetni tekşirib, qayta urinib köring.</p>
  <div class="fx-empty__actions"><button class="fx-btn" data-size="sm">Qayta uriniş</button></div>
</div>
<div class="fx-empty" data-state="search"><div class="fx-empty__art" data-size="lg" aria-hidden="true">?</div><h3 class="fx-empty__title">Heç narsa topilmadi</h3><p class="fx-empty__text">Boşqa söz bilan qidiring.</p><a class="fx-empty__link" href="#">Filtrlarni tozalaş</a></div>
```

- Qilmang: «Ma'lumot yöq» deb töxtamang — keyingi qadamni ayting.

## Xatolar xulosasi (`error-summary`, beta, 0.22.0 dan)

Forma tepasida: «Quyidagilarni tuzating» sarlavhasi va har xatoga havola. Yuborişda fokus şu blokka ketadi, havola bosilsa tegişli maydonga fokus beriladi. Maydon ostidagi xato matni bilan birga işlaydi, uni almaştirmaydi.

- Qaçon: Forma yuborilganda bir neçta maydonda xato çiqqan.
- Qaçon emas: Bitta umumiy xabar (server xatosi, tarmoq) → `alert`; Qisqa vaqtli xabar → `toast`
- Klaviatura: Tab — Xato havolalari orasida; Enter — Havola — tegişli maydonga fokus
- Tokenlar: --fx-bg-error-subtle, --fx-border-color-focus, --fx-border-width-focus, --fx-fg-error, --fx-font-size-sm, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-radius-control, --fx-radius-surface, --fx-size-status-dot, --fx-space-1, --fx-space-2, --fx-space-4, --fx-space-5, --fx-text-primary

```html
<div class="fx-errors" data-fx-errsummary role="alert" tabindex="-1" aria-labelledby="xx-t">
  <h2 class="fx-errors__title" id="xx-t">Quyidagilarni tuzating</h2>
  <ul class="fx-errors__list">
    <li><a href="#xx-ism">Ismni yozing</a></li>
    <li><a href="#xx-tel">Telefon raqami 9 ta raqamdan iborat bölsin</a></li>
  </ul>
</div>
<div class="fx-field" data-invalid>
  <label class="fx-label" for="xx-ism">Ism</label>
  <input class="fx-input" id="xx-ism" aria-invalid="true" aria-describedby="xx-ism-h">
  <span class="fx-hint" id="xx-ism-h">Ismni yozing.</span>
</div>
```

- Qilmang: Faqat bitta xato bölsa ham maydon ostidagi matnni olib taşlamang — xulosa qöşimça, almaştiriş emas.
- Qilmang: Havola matnini maydon ostidagi matn bilan bir xil yozing — foydalanuvçi ikki xil gap öqimasin.

## Xato sahifalari töplami (`errorpage`, beta, 0.28.0 dan)

Töliq xato sahifasi şabloni (4.183): tepada sayt belgisi va kiriş, markazda naqşli fon ustida ulkan kod (404, 500, 503 — tepadan pastga sönuvçi, holat rangida), ostida fx-result (sarlavha, izoh, tugmalar — 500/503/offline holatlari result'da), qidiruv maydoni va foydali havolalar kartalari, pastda ingiçka footer (xato kodi, «xato haqida xabar beriş»). data-status kodning rangini beradi; data-size="block" — hujjat içida namuna sifatida.

- Qaçon: Saytning 404, 500, 503 va oflayn sahifalari — bitta şablondan. Ruxsat yöq (403) sahifasi — kiriş tugmasi bilan.
- Qaçon emas: Sahifa içidagi kiçik natija bloki → `result`; Röyxat böş → `empty`
- Variantlar: data-status=500|503 (standart 404); data-size=block (standart page)
- Klaviatura: Tab — Qidiruv, havolalar va tugmalar orasida
- Tokenlar: --fx-bg-page, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-strong, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-dialog-width, --fx-ease-emphasized, --fx-ease-enter, --fx-ease-standard, --fx-fg-error, --fx-fg-warning, --fx-font-adjust-display, --fx-font-family-display, --fx-font-size-display-md, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-semibold, --fx-knob-motion, --fx-knob-motion-lift, --fx-motion-base, --fx-motion-fast, --fx-motion-lift, --fx-motion-shift-lg, --fx-motion-slower, --fx-popover-width, --fx-radius-overlay, --fx-radius-surface, --fx-shadow-sm, --fx-space-1, --fx-space-10, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-6, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<div class="fx-errorpage" data-size="block" data-status="404">
  <header class="fx-errorpage__bar"><a class="fx-site-header__brand" href="#" style="color:inherit;text-decoration:none;display:inline-flex;gap:var(--fx-space-2);align-items:center;font-weight:var(--fx-font-weight-semibold)"><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true"><rect x="3" y="3" width="18" height="18" rx="6" fill="currentColor"/></svg>Çorsu</a><a class="fx-btn" data-variant="ghost" data-size="sm" href="#">Kiriş</a></header>
  <main class="fx-errorpage__main">
    <div class="fx-bg" data-pattern="dots" data-glow aria-hidden="true"></div>
    <p class="fx-errorpage__code" aria-hidden="true">404</p>
    <div class="fx-result" data-status="404">
      <h1 class="fx-result__title">Bu sahifa topilmadi</h1>
      <p class="fx-result__text">Manzil özgargan yoki sahifa öçirilgan bölişi mumkin. Qidirib köring yoki quyidagi bölimlardan birini tanlang.</p>
    </div>
    <form class="fx-errorpage__search" role="search" action="#"><label class="fx-sr-only" for="ep-q">Saytdan qidiriş</label><input class="fx-input" id="ep-q" type="search" placeholder="Masalan: narxlar, hujjatlar"><button class="fx-btn" data-variant="primary" type="submit">Qidiriş</button></form>
    <ul class="fx-errorpage__links">
      <li><a class="fx-errorpage__link" href="#"><span class="fx-errorpage__link-title">Boş sahifa</span><span class="fx-errorpage__link-text">Yangiliklar va asosiy bölimlar</span></a></li>
      <li><a class="fx-errorpage__link" href="#"><span class="fx-errorpage__link-title">Hujjatlar</span><span class="fx-errorpage__link-text">Örnatiş va komponentlar</span></a></li>
      <li><a class="fx-errorpage__link" href="#"><span class="fx-errorpage__link-title">Yordam</span><span class="fx-errorpage__link-text">Savol yozing — 1 iş kunida javob</span></a></li>
    </ul>
  </main>
  <footer class="fx-errorpage__footer"><span>© 2026 Çorsu</span><span>Xato kodi: 404 · <a href="#">Xato haqida xabar beriş</a></span></footer>
</div>
```

- Qilmang: Xato sahifasida navigatsiyani yöq qilmang — foydalanuvçi qayerga borişni bilsin.
- Qilmang: Hazil bilan muammoni yaşirmang — nima bölgani va nima qiliş kerakligi aniq yozilsin.
- Qilmang: 500 sahifada texnik tafsilot (stack trace) körsatmang — sörov raqami yetarli.

## FAB va speed dial (`fab`, beta, 0.28.0 dan)

Ekran burçagidagi bitta asosiy amal (4.150, M3 FAB): telefonda «Yangi bitim», «Ariza qöşiş». Speed dial — bosilsa 3–5 amal ikon va yozuv bilan yoyiladi, asosiy tugma ✕ ga aylanadi. Kengaytirilgan (data-extended) — ikon + yozuv. Klaviatura: APG «Menu Button».

- Qaçon: Telefon ilovasida ekranning bitta asosiy yaratiş amali (yangi bitim, ariza, xabar).
- Qaçon emas: Oddiy sahifa amali → `button`; Köp amallar röyxati → `menu`
- Variantlar: data-position=end|start|inline (standart end); data-extended=true; data-size=sm (standart md)
- Klaviatura: Enter / Boʻsh joy / ↑ — Amallarni oçadi, birinçisiga fokus; ↑ ↓, Home, End — Amallar orasida yuradi; Esc — Yopadi, fokus asosiy tugmaga
- Tokenlar: --fx-bg-brand-solid, --fx-bg-brand-solid-hover, --fx-bg-muted, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-focus, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-lg, --fx-control-h-md, --fx-duration-stagger, --fx-ease-emphasized, --fx-ease-standard, --fx-font-size-md, --fx-font-size-sm, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-knob-motion-stagger, --fx-knob-pill, --fx-motion-base, --fx-motion-fast, --fx-motion-instant, --fx-motion-press, --fx-motion-shift-md, --fx-radius-circle, --fx-shadow-lg, --fx-shadow-md, --fx-size-icon-md, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-6, --fx-text-on-brand, --fx-text-primary, --fx-text-secondary

```html
<div class="fx-fab" data-fx-fab data-position="inline">
  <ul class="fx-fab__actions" id="fab-yangi" role="menu" aria-label="Yangi yaratiş" hidden>
    <li role="none"><button class="fx-fab__action" type="button" role="menuitem" data-action="bitim"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 7h16v12H4zM9 7V5h6v2" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg>Bitim</button></li>
    <li role="none"><button class="fx-fab__action" type="button" role="menuitem" data-action="mijoz"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM4 20c1.5-3.5 4.5-5 8-5s6.5 1.5 8 5" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg>Mijoz</button></li>
    <li role="none"><button class="fx-fab__action" type="button" role="menuitem" data-action="vazifa"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M5 12l4 4 10-10" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg>Vazifa</button></li>
  </ul>
  <button class="fx-fab__btn" type="button" aria-haspopup="menu" aria-controls="fab-yangi" aria-expanded="false"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 5v14M5 12h14" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg><span class="fx-fab__label">Yangi yaratiş</span></button>
</div>
<div class="fx-fab" data-position="inline" data-extended>
  <button class="fx-fab__btn" type="button"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 5v14M5 12h14" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg><span class="fx-fab__label">Yangi ariza</span></button>
</div>
```

- Qilmang: Sahifada bittadan köp FAB qöymang — u eng asosiy amal.
- Qilmang: Speed dialda 5 dan köp amal bermang va yozuvsiz ikon qoldirmang.
- Qilmang: Kompyuterda katta jadval ustida yopib qöymasin — kompyuterda sahifa sarlavhasidagi asosiy tugma afzal.
- Qilmang: Xavfli amal (öçiriş) uçun FAB işlatmang.

## Faset filtr paneli (`facets`, beta, 0.28.0 dan)

Röyxat yonidagi guruhlangan filtrlar (4.167, Algolia/Polaris uslubida): har guruh yiğiladi, har variantda natijalar soni, uzun röyxatda «Yana N ta» va guruh içida qidiruv, guruh sarlavhasida tanlanganlar soni, yuqorida «Tozalaş». Natijasi 0 variant xira. CRM röyxati, katalog, hisobotlar uçun.

- Qaçon: Köp maydonli röyxat yoki katalogni bir neçta mezon böyiça toraytiriş (bosqiç, şahar, mas'ul).
- Qaçon emas: 2–3 tezkor filtr → `filterbar`; Murakkab şartlar (VA/YOKI) → `filterbar`
- Variantlar: data-limit=son
- Klaviatura: Tab — Guruh sarlavhasi, variantlar, «Yana», «Tozalaş» böylab; Enter / Boʻsh joy — Guruhni yiğadi/oçadi, variantni belgilaydi
- Tokenlar: --fx-bg-brand-solid, --fx-bg-muted, --fx-bg-subtle, --fx-border-color-default, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-ease-standard, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-motion-fast, --fx-nav-width, --fx-radius-badge, --fx-radius-circle, --fx-radius-control, --fx-size-icon-sm, --fx-size-min-target, --fx-space-1, --fx-space-2, --fx-space-3, --fx-text-brand, --fx-text-on-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<aside class="fx-facets" data-fx-facets aria-label="Bitimlar filtri">
  <div class="fx-facets__head"><h2 class="fx-facets__title">Filtrlar</h2><button class="fx-facets__clear" type="button" data-facets-clear hidden>Tozalaş (<span data-facets-count>0</span>)</button></div>
  <details class="fx-facets__group" open>
    <summary class="fx-facets__legend">Bosqiç <span class="fx-facets__badge" hidden></span></summary>
    <div class="fx-facets__body">
    <ul class="fx-facets__list" aria-label="Bosqiç">
      <li><label class="fx-facets__option"><span class="fx-check"><input type="checkbox" name="bosqich" value="yangi"><span class="fx-check__box"></span></span><span class="fx-facets__label">Yangi lid</span><span class="fx-facets__count">48</span></label></li>
      <li><label class="fx-facets__option"><span class="fx-check"><input type="checkbox" name="bosqich" value="aloqa"><span class="fx-check__box"></span></span><span class="fx-facets__label">Aloqa</span><span class="fx-facets__count">31</span></label></li>
      <li><label class="fx-facets__option"><span class="fx-check"><input type="checkbox" name="bosqich" value="taklif" checked><span class="fx-check__box"></span></span><span class="fx-facets__label">Taklif</span><span class="fx-facets__count">19</span></label></li>
      <li><label class="fx-facets__option"><span class="fx-check"><input type="checkbox" name="bosqich" value="muzokara"><span class="fx-check__box"></span></span><span class="fx-facets__label">Muzokara</span><span class="fx-facets__count">7</span></label></li>
      <li><label class="fx-facets__option"><span class="fx-check"><input type="checkbox" name="bosqich" value="yutildi"><span class="fx-check__box"></span></span><span class="fx-facets__label">Yutildi</span><span class="fx-facets__count">5</span></label></li>
    </ul></div>
  </details>
  <details class="fx-facets__group" open data-limit="4">
    <summary class="fx-facets__legend">Şahar <span class="fx-facets__badge" hidden></span></summary>
    <div class="fx-facets__body"><input class="fx-input fx-facets__search" data-size="sm" type="search" placeholder="Şahar qidiriş" aria-label="Şahar qidiriş">
    <ul class="fx-facets__list" aria-label="Şahar">
      <li><label class="fx-facets__option"><span class="fx-check"><input type="checkbox" name="shahar" value="tsh"><span class="fx-check__box"></span></span><span class="fx-facets__label">Toşkent</span><span class="fx-facets__count">64</span></label></li>
      <li><label class="fx-facets__option"><span class="fx-check"><input type="checkbox" name="shahar" value="smq"><span class="fx-check__box"></span></span><span class="fx-facets__label">Samarqand</span><span class="fx-facets__count">22</span></label></li>
      <li><label class="fx-facets__option"><span class="fx-check"><input type="checkbox" name="shahar" value="bux"><span class="fx-check__box"></span></span><span class="fx-facets__label">Buxoro</span><span class="fx-facets__count">11</span></label></li>
      <li><label class="fx-facets__option"><span class="fx-check"><input type="checkbox" name="shahar" value="nam"><span class="fx-check__box"></span></span><span class="fx-facets__label">Namangan</span><span class="fx-facets__count">9</span></label></li>
      <li><label class="fx-facets__option"><span class="fx-check"><input type="checkbox" name="shahar" value="and"><span class="fx-check__box"></span></span><span class="fx-facets__label">Andijon</span><span class="fx-facets__count">6</span></label></li>
      <li><label class="fx-facets__option"><span class="fx-check"><input type="checkbox" name="shahar" value="far"><span class="fx-check__box"></span></span><span class="fx-facets__label">Farğona</span><span class="fx-facets__count">4</span></label></li>
      <li><label class="fx-facets__option"><span class="fx-check"><input type="checkbox" name="shahar" value="xor"><span class="fx-check__box"></span></span><span class="fx-facets__label">Xorazm</span><span class="fx-facets__count">2</span></label></li>
      <li><label class="fx-facets__option"><span class="fx-check"><input type="checkbox" name="shahar" value="nuk"><span class="fx-check__box"></span></span><span class="fx-facets__label">Nukus</span><span class="fx-facets__count">0</span></label></li>
    </ul></div>
  </details>
  <details class="fx-facets__group" open>
    <summary class="fx-facets__legend">Mas'ul <span class="fx-facets__badge" hidden></span></summary>
    <div class="fx-facets__body">
    <ul class="fx-facets__list" aria-label="Mas'ul">
      <li><label class="fx-facets__option"><span class="fx-check"><input type="checkbox" name="masul" value="aziz"><span class="fx-check__box"></span></span><span class="fx-facets__label">Aziz Karimov</span><span class="fx-facets__count">28</span></label></li>
      <li><label class="fx-facets__option"><span class="fx-check"><input type="checkbox" name="masul" value="dilnoza"><span class="fx-check__box"></span></span><span class="fx-facets__label">Dilnoza Yusupova</span><span class="fx-facets__count">21</span></label></li>
      <li><label class="fx-facets__option"><span class="fx-check"><input type="checkbox" name="masul" value="bobur"><span class="fx-check__box"></span></span><span class="fx-facets__label">Bobur Rahimov</span><span class="fx-facets__count">14</span></label></li>
    </ul></div>
  </details>
</aside>
```

- Qilmang: Har variant yonidagi sonni olib taşlamang — foydalanuvçi böş natijaga tuşmasin.
- Qilmang: Guruhda 5–7 dan köp variantni birdaniga körsatmang — data-limit va qidiruv bering.
- Qilmang: Tor ekranda çap ustun sifatida qoldirmang — filterbar «Filtrlar» varaği (sheet) içiga oling.

## FAQ bölimi (`faq`, beta, 0.28.0 dan)

Köp beriladigan savollar bölimi (4.173): sarlavha bloki, accordion asosidagi savol-javoblar (bir vaqtda bittasi oçiq — details name) va oxirida «Javob topmadingizmi?» bloki. data-layout: stack (standart — sarlavha tepada, markazda) yoki split (sarlavha çapda, scroll'da yopişib turadi; savollar öngda). Qidiruv natijalarida savollar çiqişi uçun bölim yoniga FAQPage strukturaviy ma'lumoti (application/ld+json) qöyiladi — sahifadagi matn bilan bir xil bölsin.

- Qaçon: Narx sahifasi va landing oxirida — e'tirozlarga javob. Yordam markazining qisqa boş sahifasi.
- Qaçon emas: Bitta yiğiladigan blok → `accordion`; Töliq hujjat sahifasi → `prose`
- Variantlar: data-layout=split (standart stack)
- Klaviatura: Enter, Space — Savolni oçadi / yopadi; Tab — Savollar orasida
- Tokenlar: --fx-bg-subtle, --fx-dialog-width, --fx-font-adjust-display, --fx-font-family-display, --fx-font-size-display-sm, --fx-font-size-md, --fx-font-size-sm, --fx-font-weight-semibold, --fx-radius-surface, --fx-size-topbar, --fx-space-1, --fx-space-10, --fx-space-12, --fx-space-3, --fx-space-4, --fx-space-5, --fx-space-6, --fx-text-secondary

```html
<section class="fx-faq" data-layout="split" aria-labelledby="faq-t">
  <header class="fx-faq__head"><h2 class="fx-faq__title" id="faq-t">Köp beriladigan savollar</h2><p class="fx-faq__text">Obuna, litsenziya va yangilanişlar haqida qisqaça.</p></header>
  <div class="fx-accordion fx-faq__list" data-variant="flush">
    <details class="fx-accordion__item" name="faq-namuna" open><summary class="fx-accordion__summary">Obuna tugasa nima böladi?</summary><div class="fx-accordion__body">Yuklab olingan versiyalar sizda abadiy qoladi va işlayveradi. Töxtaydi: yangilanişlar, MCP orqali AI agent va yangi bloklar.</div></details>
    <details class="fx-accordion__item" name="faq-namuna"><summary class="fx-accordion__summary">Bitta litsenziya neçta qurilmada işlaydi?</summary><div class="fx-accordion__body">1 litsenziya — 1 kişi, 3 ta qurilma (masalan iş kompyuteri, uy kompyuteri va noutbuk).</div></details>
    <details class="fx-accordion__item" name="faq-namuna"><summary class="fx-accordion__summary">Umrbod (lifetime) litsenziya bormi?</summary><div class="fx-accordion__body">Yöq. FoxUI har oy yangilanadi va yangi komponentlar qöşiladi — şuning uçun faqat oylik va yillik obuna.</div></details>
    <details class="fx-accordion__item" name="faq-namuna"><summary class="fx-accordion__summary">Figma fayli ham beriladimi?</summary><div class="fx-accordion__body">Yöq — FoxUI faqat kod: npm paket, CLI va AI agent uçun MCP. Dizayn hujjat saytida jonli körinadi.</div></details>
    <details class="fx-accordion__item" name="faq-namuna"><summary class="fx-accordion__summary">Kerakli komponent bölmasa-çi?</summary><div class="fx-accordion__body">Kabinetdan skrinşot yuborasiz — bir hafta içida komponent umumiy tizimga qöşiladi va npx foxui update bilan keladi.</div></details>
  </div>
  <div class="fx-faq__more"><p class="fx-faq__more-text"><strong>Javob topmadingizmi?</strong><span>Savolingizni yozing — bir iş kunida javob beramiz.</span></p><a class="fx-btn" href="#">Boğlaniş</a></div>
</section>
<script type="application/ld+json">{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"Obuna tugasa nima böladi?","acceptedAnswer":{"@type":"Answer","text":"Yuklab olingan versiyalar sizda abadiy qoladi va işlayveradi. Töxtaydi: yangilanişlar, MCP orqali AI agent va yangi bloklar."}},{"@type":"Question","name":"Bitta litsenziya neçta qurilmada işlaydi?","acceptedAnswer":{"@type":"Answer","text":"1 litsenziya — 1 kişi, 3 ta qurilma (masalan iş kompyuteri, uy kompyuteri va noutbuk)."}}]}</script>
```

- Qilmang: Javobda «ha» yoki «yöq» bilan töxtamang — qisqa sababini ayting.
- Qilmang: 10 tadan ortiq savol qöymang — toifalarga böling yoki alohida yordam sahifasi.
- Qilmang: Strukturaviy ma'lumotdagi matnni sahifadagidan farqli yozmang.

## Rangli ikon plitkasi (`featured`, beta, 0.22.0 dan)

Ikon rangli yumşoq plitkada: böş holat, xususiyat röyxati, dialog tepasi. Ohang (brend, neytral, holat), uslub (yoruğ, töq, çiziqli), ölçam sm–xl, şakl kvadrat yoki doira.

- Qaçon: Böş holat, xususiyat kartasi, dialog tepasidagi belgi.
- Qaçon emas: Foydalanuvçi tasviri → `avatar`; Matnli holat → `badge`
- Variantlar: data-tone=neutral|success|warning|error|info (standart brand); data-style=solid|outline (standart light); data-size=sm|lg|xl (standart md); data-shape=circle (standart square)
- Tokenlar: --fx-bg-brand-solid, --fx-bg-brand-subtle, --fx-bg-error-solid, --fx-bg-error-subtle, --fx-bg-info-subtle, --fx-bg-muted, --fx-bg-page, --fx-bg-success-subtle, --fx-bg-surface, --fx-bg-warning-subtle, --fx-border-width-default, --fx-control-h-lg, --fx-control-h-md, --fx-control-h-sm, --fx-fg-error, --fx-fg-info, --fx-fg-success, --fx-fg-warning, --fx-radius-circle, --fx-radius-control, --fx-text-brand, --fx-text-on-brand, --fx-text-on-error, --fx-text-primary, --fx-text-secondary

```html
<span class="fx-featured" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 3l2.5 6 6.5.5-5 4.3 1.6 6.4L12 16.8 6.4 20.2 8 13.8 3 9.5 9.5 9z"/></svg></span>
<span class="fx-featured" data-tone="success" data-shape="circle" data-size="lg" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M5 12l5 5 9-10"/></svg></span>
<span class="fx-featured" data-tone="error" data-style="outline" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 8v5M12 17h.01"/></svg></span>
```

- Qilmang: Plitka ma'noni yolğiz rang bilan bermasin — yoniga sarlavha matni.
- Qilmang: Bir ekranda 3 tadan köp turli ohang qöymang.

## Xususiyatlar bölimi (`features`, beta, 0.28.0 dan)

Landingdagi xususiyatlar bölimi (4.171): markazlaşgan sarlavha bloki (eyebrow, sarlavha, izoh) va ikonli tör — har bandda rangli ikon (toifa ranglari), nom va qisqa izoh; data-layout="cards" — har band karta içida. Ikkinçi şakl — almaşinuvçi qatorlar (.fx-features__rows): matn va media yonma-yon, har keyingi qatorda örin almaşadi; matn ostida ✓ röyxat. Telefonda bitta ustun.

- Qaçon: Landingda mahsulot imkoniyatlarini 3–6 band bilan körsatiş. Muhim 2–3 imkoniyatni media bilan batafsil oçiş (rows).
- Qaçon emas: Turli ölçamdagi vizual mozaika → `bento`; Tariflarni taqqoslaş → `pricing`
- Variantlar: data-layout=cards (standart grid); data-align=start (standart center); data-color=blue|green|pink|yellow|coral|purple (standart brand)
- Tokenlar: --fx-bg-brand-subtle, --fx-bg-category-blue-subtle, --fx-bg-category-coral-subtle, --fx-bg-category-green-subtle, --fx-bg-category-pink-subtle, --fx-bg-category-purple-subtle, --fx-bg-category-yellow-subtle, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-surface, --fx-border-width-default, --fx-dialog-width, --fx-fg-success, --fx-font-adjust-display, --fx-font-family-display, --fx-font-size-display-sm, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xl, --fx-font-weight-semibold, --fx-popover-width, --fx-radius-control, --fx-radius-overlay, --fx-radius-surface, --fx-shadow-sm, --fx-size-control-md, --fx-size-icon-lg, --fx-size-icon-md, --fx-space-1, --fx-space-10, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-6, --fx-space-8, --fx-text-brand, --fx-text-primary, --fx-text-secondary

```html
<section class="fx-features" aria-labelledby="ft-t">
  <header class="fx-features__head"><p class="fx-features__eyebrow">Nega FoxUI</p><h2 class="fx-features__title" id="ft-t">Bir marta quriladi — hamma joyda işlaydi</h2><p class="fx-features__text">Şakl va tizim FoxUI'dan, rang va şrift — tanlanadigan kutubxonadan.</p></header>
  <ul class="fx-features__grid">
    <li class="fx-features__item"><span class="fx-features__icon" data-color="purple" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3a9 9 0 1 0 0 18c1.1 0 1.6-.9 1.2-1.8-.5-1.1.3-2.2 1.5-2.2H17a4 4 0 0 0 4-4c0-5-4-10-9-10z"/><circle cx="7.5" cy="11" r="1"/><circle cx="10.5" cy="7" r="1"/><circle cx="15.5" cy="7.5" r="1"/></svg></span><h3 class="fx-features__name">8 rang mavzusi</h3><p class="fx-features__desc">Brendingizga eng yaqinini tanlang — pastel, neytral va holat ranglari mavzu bilan birga keladi.</p></li>
    <li class="fx-features__item"><span class="fx-features__icon" data-color="green" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3l8 3v6c0 4.5-3.4 8.3-8 9-4.6-.7-8-4.5-8-9V6z"/><path d="M8.5 12l2.5 2.5 4.5-5"/></svg></span><h3 class="fx-features__name">Kontrast qöriqçisi</h3><p class="fx-features__desc">Har mavzu yoruğ va qoronği rejimda WCAG AA tekşiruvidan ötadi — build'da, avtomatik.</p></li>
    <li class="fx-features__item"><span class="fx-features__icon" data-color="blue" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M4 7V5h16v2M9 19h6M12 5v14"/></svg></span><h3 class="fx-features__name">Özbekça şriftlar</h3><p class="fx-features__desc">Kutubxonadagi har şrift ʻ belgisini töğri çiqaradi; almaşsa ham ölçam buzilmaydi.</p></li>
    <li class="fx-features__item"><span class="fx-features__icon" data-color="pink" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3l1.8 5.2L19 10l-5.2 1.8L12 17l-1.8-5.2L5 10l5.2-1.8z"/><path d="M19 15l.8 2.2L22 18l-2.2.8L19 21l-.8-2.2L16 18l2.2-.8z"/></svg></span><h3 class="fx-features__name">AI agent uçun MCP</h3><p class="fx-features__desc">Agent komponent, token va qoidalarni özi oladi — öylab topmaydi.</p></li>
    <li class="fx-features__item"><span class="fx-features__icon" data-color="yellow" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M20 11a8 8 0 0 0-14.5-4.5L4 8M4 4v4h4M4 13a8 8 0 0 0 14.5 4.5L20 16M20 20v-4h-4"/></svg></span><h3 class="fx-features__name">Yangilaniş — taklif</h3><p class="fx-features__desc">npx foxui update nima özgarganini körsatadi; qabul qiliş sizning qölingizda.</p></li>
    <li class="fx-features__item"><span class="fx-features__icon" data-color="coral" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M13 2L4 14h7l-1 8 9-12h-7z"/></svg></span><h3 class="fx-features__name">Yengil va tez</h3><p class="fx-features__desc">Boğliqliksiz CSS va kiçik JS xulqlar; ikonlar sahifada bir marta.</p></li>
  </ul>
</section>
<section class="fx-features" style="margin-block-start:var(--fx-space-12)" aria-label="Batafsil">
  <div class="fx-features__rows">
    <div class="fx-features__row"><div class="fx-features__item"><p class="fx-features__eyebrow">Mexanizm va libos</p><h3 class="fx-features__name">Avval işlaydi, keyin çiroyli böladi</h3><p class="fx-features__desc">Sahifa, forma va ma'lumot «kulrang qolip»da quriladi; libos tokenlar orqali keyin kiyiladi — mexanizm özgarmaydi.</p><ul class="fx-features__list"><li>Mavzu bitta atribut bilan almaşadi</li><li>Uslub: Qattiq, Örta, Momiq, Aylana</li><li>Yoruğ va qoronği — avtomatik</li></ul></div><div class="fx-features__media" aria-hidden="true"><div class="fx-bg" data-pattern="dots"></div><div class="fx-card" style="inline-size:min(100%,20rem)"><h4 class="fx-card__title">Yangi ariza</h4><p class="fx-card__text">Aziz Karimov · +998 90 123 45 67</p><button class="fx-btn" data-variant="primary" type="button" tabindex="-1">Qabul qiliş</button></div></div></div>
    <div class="fx-features__row"><div class="fx-features__item"><p class="fx-features__eyebrow">Qöriqçi</p><h3 class="fx-features__name">Xato kodga yetib bormaydi</h3><p class="fx-features__desc">HEX rang, qölda yozilgan oraliq yoki notöğri ʻ — npx foxui check hammasini topadi va qanday tuzatişni aytadi.</p></div><div class="fx-features__media" aria-hidden="true"><div class="fx-code" data-variant="snippet"><pre class="fx-code__pre"><code>npx foxui check</code></pre></div></div></div>
  </div>
</section>
```

- Qilmang: Törga 9 tadan ortiq band qöymang — eng muhim 3–6 tasi.
- Qilmang: Har bandga uzun abzats yozmang — nom + 1–2 qator.
- Qilmang: Ikonlarni bezak uçun turli uslubda aralaştirmang — bitta çiziq qalinligi.

## Fayl tugmasi (`file`, beta, 0.22.0 dan)

Oddiy «Fayl tanlaş» maydoni: native input type="file", maydon şaklida — tugma va tanlangan fayl nomi brauzerdan. Bitta yoki köp fayl, accept bilan tur çeklanadi. Sudrab taşlaş kerak bölsa — dropzone. Fayl turi belgisi (4.142): .fx-file__icon[data-type=pdf|doc|xls|ppt|zip|img|txt] — bukilgan burçakli varaq va kengaytma yorliği; .fx-file__item — belgi, nom va hajm qatori.

- Qaçon: Bitta yoki bir neçta fayl tanlaş, sudrab taşlaş şart emas (forma, profil).
- Qaçon emas: Sudrab taşlaş va katta yuklaş maydoni → `dropzone`
- Variantlar: data-size=sm|lg (standart md); data-type=pdf|doc|xls|ppt|zip|img|txt; data-size=sm|lg (standart md)
- Klaviatura: Space / Enter — Fayl tanlaş oynasini oçadi
- Tokenlar: --fx-bg-category-blue, --fx-bg-category-coral, --fx-bg-category-green, --fx-bg-category-pink, --fx-bg-category-purple, --fx-bg-category-yellow, --fx-bg-field, --fx-bg-muted, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-error, --fx-border-color-field, --fx-border-color-focus, --fx-border-color-strong, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-lg, --fx-control-h-md, --fx-control-h-sm, --fx-ease-standard, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-knob-pill, --fx-motion-fast, --fx-radius-badge, --fx-radius-control, --fx-space-3, --fx-space-4, --fx-text-disabled, --fx-text-on-category, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<div class="fx-field">
  <label class="fx-label" for="fayl1">Şartnoma nusxasi</label>
  <input class="fx-file" id="fayl1" type="file" accept=".pdf,image/*" aria-describedby="fayl1-h">
  <span class="fx-hint" id="fayl1-h">PDF yoki rasm, 10 MB gaça.</span>
</div>
<div class="fx-field" data-invalid>
  <label class="fx-label" for="fayl2">Rasmlar</label>
  <input class="fx-file" id="fayl2" type="file" multiple accept="image/*" aria-describedby="fayl2-h">
  <span class="fx-hint" id="fayl2-h">Eng köpi 5 ta rasm tanlang.</span>
</div>
<!-- Fayl turi belgilari (4.142) -->
<div class="fx-file__item"><span class="fx-file__icon" data-type="pdf" aria-hidden="true"><span>PDF</span></span><span class="fx-file__meta"><span class="fx-file__name">Şartnoma №214 — Aziz Karimov.pdf</span><span class="fx-file__size">PDF · 1,2 MB</span></span></div>
<div class="fx-file__item"><span class="fx-file__icon" data-type="xls" aria-hidden="true"><span>XLS</span></span><span class="fx-file__meta"><span class="fx-file__name">Oktyabr savdo hisoboti.xlsx</span><span class="fx-file__size">Excel · 384 KB</span></span></div>
<div class="fx-file__item"><span class="fx-file__icon" data-type="doc" aria-hidden="true"><span>DOC</span></span><span class="fx-file__meta"><span class="fx-file__name">Tijoriy taklif.docx</span><span class="fx-file__size">Word · 96 KB</span></span></div>
<span class="fx-file__icon" data-type="zip" data-size="sm" aria-hidden="true"><span>ZIP</span></span> <span class="fx-file__icon" data-type="img" aria-hidden="true"><span>JPG</span></span> <span class="fx-file__icon" data-type="ppt" data-size="lg" aria-hidden="true"><span>PPT</span></span>
```

- Qilmang: Native input'ni yaşirib, örniga div-tugma yasamang — klaviatura va ekran öquvçi buziladi.
- Qilmang: Hajm va turni faqat xatoda aytmang — hint'da oldindan yozing.
- Qilmang: Fayl turini faqat rang bilan bildirmang — yorliq (PDF, XLS) va nom/hajm qatorida tur sözi bölsin.

## Filtr qatori (`filterbar`, beta, 0.23.0 dan)

Röyxat sahifasining filtr qatori: qidiruv, 2–3 faset chip, «Filtrlar» varaq tugmasi (faol filtrlar soni bilan), öng çetda köriniş menyusi; ostida faol filtrlar teglari va «Hammasini tozalaş». Xulq foxui.js'da: tegni olib taşlaş, tozalaş, son, fokusni saqlaş (#140, PDP listpage__bar). Sörov quruvçi (4.168, data-builder): şart qatorlari (maydon · operator · qiymat) va VA/YOKI guruhlari, pastda sörovning öqiladigan matni.

- Qaçon: Jadval yoki röyxat ustida qidiriş va 2–3 tez filtr kerak; qolgan filtrlar varaqda.
- Qaçon emas: Faqat qidiruv → `search`; Murakkab, köp şartli filtr (guruhlangan qoidalar) → `sheet`
- Variantlar: data-builder=true
- Klaviatura: Tab, Enter — Chip/tugma işlaydi; × — tegni olib taşlaydi; Space — Faset chipni yoqadi/öçiradi; ← → (VA/YOKI) — Boğlovçini almaştiradi (radio guruhi)
- Tokenlar: --fx-bg-brand-solid, --fx-bg-muted, --fx-bg-pressed, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-strong, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-sm, --fx-font-adjust-mono, --fx-font-family-mono, --fx-font-size-lg, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-semibold, --fx-popover-width, --fx-radius-badge, --fx-radius-circle, --fx-radius-control, --fx-radius-surface, --fx-shadow-sm, --fx-size-icon-md, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-6, --fx-text-error, --fx-text-on-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<div class="fx-filterbar" data-fx-filterbar>
  <div class="fx-filterbar__main" role="search" aria-label="Arizalarni filtrlaş">
    <div class="fx-filterbar__search"><label class="fx-search" data-size="sm"><svg viewBox="0 0 20 20" aria-hidden="true"><circle cx="9" cy="9" r="5.5" fill="none" stroke="currentColor" stroke-width="1.5"/><path d="m13.5 13.5 3.5 3.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg><input class="fx-search__input" type="search" placeholder="Ism, telefon yoki raqam" aria-label="Qidiriş"></label></div>
    <div class="fx-filterbar__facets">
      <button class="fx-chip" type="button" aria-pressed="false">Mening arizalarim</button>
      <button class="fx-chip" type="button" aria-pressed="true">Muddati ötgan <span class="fx-chip__count">12</span></button>
    </div>
    <div class="fx-filterbar__end">
      <button class="fx-btn fx-filterbar__trigger" data-size="sm" type="button" commandfor="fb-sheet" command="show-modal"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M3 5h14M6 10h8M8.5 15h3" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg>Filtrlar <span class="fx-filterbar__count" data-filter-count>2</span></button>
    </div>
  </div>
  <div class="fx-filterbar__tags" aria-label="Faol filtrlar">
    <span class="fx-filterbar__tags-label">Faol:</span>
    <span class="fx-chip" data-type="tag" data-value="holat:yangi">Holat: Yangi <button class="fx-chip__remove" type="button" aria-label="Olib taşlaş: Holat Yangi">×</button></span>
    <span class="fx-chip" data-type="tag" data-value="shahar:samarqand">Şahar: Samarqand <button class="fx-chip__remove" type="button" aria-label="Olib taşlaş: Şahar Samarqand">×</button></span>
    <button class="fx-filterbar__clear" type="button" data-clear-all>Hammasini tozalaş</button>
  </div>
</div>
<dialog class="fx-sheet" id="fb-sheet" aria-labelledby="fb-sheet-t"><div class="fx-sheet__head"><h2 class="fx-sheet__title" id="fb-sheet-t">Filtrlar</h2><form method="dialog"><button class="fx-btn" data-variant="ghost" data-shape="icon" aria-label="Yopiş">×</button></form></div><div class="fx-sheet__body"><p>Holat, şahar, summa oraliği.</p></div></dialog>
<!-- Soʻrov quruvchi (4.168) -->
<div class="fx-filterbar" data-builder data-fx-filterbar>
  <div class="fx-filterbar__group" role="group" aria-label="Şartlar">
    <div class="fx-filterbar__join" role="radiogroup" aria-label="Şartlarni boğlaş"><button type="button" role="radio" aria-checked="true" data-op="and">VA</button><button type="button" role="radio" aria-checked="false" data-op="or">YOKI</button></div>
    <div class="fx-filterbar__rule">
      <select class="fx-select" data-size="sm" aria-label="Maydon"><option value="bosqich" selected>Bosqiç</option><option value="summa">Summa</option><option value="shahar">Şahar</option><option value="masul">Mas'ul</option></select>
      <select class="fx-select" data-size="sm" aria-label="Operator"><option value="eq" selected>teng</option><option value="neq">teng emas</option><option value="gt">katta</option><option value="lt">kiçik</option><option value="has">öz içiga oladi</option></select>
      <input class="fx-input" data-size="sm" aria-label="Qiymat" value="Muzokara">
      <button class="fx-filterbar__remove" type="button" aria-label="Şartni öçiriş">×</button>
    </div>
    <div class="fx-filterbar__rule">
      <select class="fx-select" data-size="sm" aria-label="Maydon"><option value="bosqich">Bosqiç</option><option value="summa" selected>Summa</option><option value="shahar">Şahar</option><option value="masul">Mas'ul</option></select>
      <select class="fx-select" data-size="sm" aria-label="Operator"><option value="eq">teng</option><option value="neq">teng emas</option><option value="gt" selected>katta</option><option value="lt">kiçik</option><option value="has">öz içiga oladi</option></select>
      <input class="fx-input" data-size="sm" aria-label="Qiymat" value="5 000 000">
      <button class="fx-filterbar__remove" type="button" aria-label="Şartni öçiriş">×</button>
    </div>
    <div class="fx-filterbar__add"><button class="fx-btn" data-variant="ghost" data-size="sm" type="button" data-add="rule">+ Şart</button><button class="fx-btn" data-variant="ghost" data-size="sm" type="button" data-add="group">+ Guruh</button></div>
  </div>
  <output class="fx-filterbar__summary" aria-live="polite"></output>
</div>
```

- Qilmang: 2–3 tadan köp faset chip qöymang — qolganini «Filtrlar» varağiga olib öting.
- Qilmang: Faol filtrni faqat rang bilan körsatmang — teg (matn) va «Filtrlar» tugmasida son.
- Qilmang: «Hammasini tozalaş»ni birinçi darajali tugma qilmang — havola körinişida.

## Mamlakat bayroği (`flag`, beta, 0.29.0 dan)

Sodda geometrik bayroqlar (4.145) — telefon kodi (+998), til va valyuta tanlagiçlari, mijoz mamlakati ustuni uçun. Faqat CSS gradientlar: rasm yuklanmaydi, inline SVG va emoji yöq (emoji bayroq Windows'da «UZ» harflari bölib çiqadi). Çizma 4:3; data-shape="circle" — avatar va til tugmasi uçun doira. 12 mamlakat: Özbekiston, Qozoğiston, Rossiya, Turkiya, AQSh, BAA, Xitoy, Koreya, Tojikiston, Qirğiziston, Germaniya, Yaponiya. Mayda detallar (yulduz, gerb) nuqta yoki halqaga soddalaştirilgan — 16–24 px'da baribir körinmaydi.

- Qaçon: Telefon raqami maydonida mamlakat kodi (+998) yonida. Mijozlar jadvalida mamlakat ustuni, valyuta va til tanlagiç.
- Qaçon emas: Brend yoki kompaniya logotipi → `avatar`; Telefon raqami kiritiş (kod tanlaş bilan) → `phone`
- Variantlar: data-country=uz|kz|ru|tr|us|ae|cn|kr|tj|kg|de|jp; data-size=sm|md|lg|xl (standart md); data-shape=rect|circle (standart rect)
- Tokenlar: --fx-bg-muted, --fx-border-color-default, --fx-border-width-default, --fx-color-amber-300, --fx-color-black, --fx-color-blue-300, --fx-color-blue-600, --fx-color-blue-700, --fx-color-blue-900, --fx-color-green-600, --fx-color-red-600, --fx-color-white, --fx-font-size-sm, --fx-radius-badge, --fx-radius-circle, --fx-size-icon-lg, --fx-size-icon-md, --fx-size-icon-sm, --fx-space-12, --fx-space-2, --fx-text-primary, --fx-text-tertiary

```html
<ul aria-label="Telefon kodlari" style="display:grid;gap:var(--fx-space-2);list-style:none;padding:0;margin:0">
  <li class="fx-flag-label"><span class="fx-flag" data-country="uz" role="img" aria-label="Özbekiston"></span>Özbekiston <span class="fx-flag-label__code">+998</span></li>
  <li class="fx-flag-label"><span class="fx-flag" data-country="kz" role="img" aria-label="Qozoğiston"></span>Qozoğiston <span class="fx-flag-label__code">+7</span></li>
  <li class="fx-flag-label"><span class="fx-flag" data-country="ru" role="img" aria-label="Rossiya"></span>Rossiya <span class="fx-flag-label__code">+7</span></li>
  <li class="fx-flag-label"><span class="fx-flag" data-country="tr" role="img" aria-label="Turkiya"></span>Turkiya <span class="fx-flag-label__code">+90</span></li>
  <li class="fx-flag-label"><span class="fx-flag" data-country="us" role="img" aria-label="AQSh"></span>AQSh <span class="fx-flag-label__code">+1</span></li>
  <li class="fx-flag-label"><span class="fx-flag" data-country="ae" role="img" aria-label="BAA"></span>BAA <span class="fx-flag-label__code">+971</span></li>
  <li class="fx-flag-label"><span class="fx-flag" data-country="cn" role="img" aria-label="Xitoy"></span>Xitoy <span class="fx-flag-label__code">+86</span></li>
  <li class="fx-flag-label"><span class="fx-flag" data-country="kr" role="img" aria-label="Koreya Respublikasi"></span>Koreya Respublikasi <span class="fx-flag-label__code">+82</span></li>
  <li class="fx-flag-label"><span class="fx-flag" data-country="tj" role="img" aria-label="Tojikiston"></span>Tojikiston <span class="fx-flag-label__code">+992</span></li>
  <li class="fx-flag-label"><span class="fx-flag" data-country="kg" role="img" aria-label="Qirğiziston"></span>Qirğiziston <span class="fx-flag-label__code">+996</span></li>
  <li class="fx-flag-label"><span class="fx-flag" data-country="de" role="img" aria-label="Germaniya"></span>Germaniya <span class="fx-flag-label__code">+49</span></li>
  <li class="fx-flag-label"><span class="fx-flag" data-country="jp" role="img" aria-label="Yaponiya"></span>Yaponiya <span class="fx-flag-label__code">+81</span></li>
</ul>
<p class="fx-flag-label"><span class="fx-flag" data-country="uz" data-size="xl" role="img" aria-label="Özbekiston"></span><span class="fx-flag" data-country="uz" data-size="lg" data-shape="circle" role="img" aria-label="Özbekiston"></span><span class="fx-flag" data-country="tr" data-size="lg" data-shape="circle" role="img" aria-label="Turkiya"></span><span class="fx-flag" data-country="us" data-size="sm" role="img" aria-label="AQSh"></span></p>
```

- Qilmang: Bayroqni yolğiz qoldirmang — yonida mamlakat nomi yoki kodi bölsin (bayroqlar öxşaş: Rossiya va Sloveniya, Indoneziya va Polşa).
- Qilmang: Til tanlagiçda bayroqni til belgisi qilmang (ingliz tili ≠ AQSh) — til nomini yozing, bayroq faqat qöşimça.
- Qilmang: Röyxatda yöq mamlakat uçun boşqa bayroqni qöymang — data-country notöğri bölsa neytral kulrang törtburçak çiqadi.

## Suzuvçi oyna (`floatwin`, beta, 0.29.0 dan)

Sahifa ustida qoladigan, modal bölmagan panel (4.152): video qönğiroq, AI yordamçi, kalkulyator, tezkor eslatma — foydalanuvçi orqadagi sahifa bilan işlaşda davom etadi. Sarlavha qatoridan sudraladi (siçqonça, barmoq yoki tutqiç + strelkalar), pastki burçakdan ölçami özgaradi (Alt+strelka ham), yiğiladi (sarlavhaga ikki marta bosiş yoki tugma), yopiladi (Esc). Oyna ekrandan çiqib ketmaydi. Joylaşuv: end (standart, öng past) · start · top-end · inline (oqimda).

- Qaçon: Iş davomida yonida turişi kerak bölgan vosita: qönğiroq, çat, AI yordamçi, kalkulyator. Foydalanuvçi panelni özi joylaştirmoqçi (sahifaning kerakli qismini yopmasin).
- Qaçon emas: Javob talab qiladigan tasdiq → `dialog`; Yon tomondan çiqadigan tafsilot paneli → `sheet`; Bir amal tugmasi yonidagi qisqa ma'lumot → `popover`
- Variantlar: data-placement=end|start|top-end|inline (standart end); data-resize=both|none (standart both)
- Klaviatura: Strelkalar (tutqichda) — Oynani suradi; Shift bilan — 4 barobar; Alt + strelkalar (tutqichda) — Ölçamni özgartiradi; Home (tutqichda) — Boşlanğiç joyiga qaytaradi; Esc — Yopadi, fokus oçgan tugmaga
- Tokenlar: --fx-bg-muted, --fx-bg-pressed, --fx-bg-surface, --fx-bg-surface-container-low, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-md, --fx-control-h-sm, --fx-ease-emphasized, --fx-ease-enter, --fx-ease-standard, --fx-elevation-4, --fx-elevation-5, --fx-font-size-sm, --fx-font-weight-semibold, --fx-motion-base, --fx-motion-fast, --fx-motion-scale-enter, --fx-popover-width, --fx-radius-nav, --fx-radius-overlay, --fx-size-icon-sm, --fx-size-topbar, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-6, --fx-space-8, --fx-text-primary, --fx-text-secondary, --fx-z-overlay

```html
<section class="fx-floatwin" id="qongiroq" data-fx-floatwin data-placement="inline" aria-labelledby="qongiroq-t">
  <div class="fx-floatwin__bar">
    <button class="fx-floatwin__grip" type="button" aria-label="Oynani suriş" aria-describedby="qongiroq-yordam"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M7 5h.01M13 5h.01M7 10h.01M13 10h.01M7 15h.01M13 15h.01" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
    <h2 class="fx-floatwin__title" id="qongiroq-t">Qönğiroq — Sardor Toʻxtayev · 04:12</h2>
    <button class="fx-floatwin__btn" type="button" data-floatwin="collapse" aria-label="Yiğiş"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M5 12l5-5 5 5" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
    <button class="fx-floatwin__btn" type="button" data-floatwin="close" aria-label="Yopiş"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M5 5l10 10M15 5L5 15" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
  </div>
  <div class="fx-floatwin__body">
    <p class="fx-text" data-tone="secondary" style="margin: 0">Mijoz: «Ğallaorol Agro» · Bitim: 12 500 000 söm</p>
    <p class="fx-text" style="margin-block: var(--fx-space-3) 0">Eslatma: narx böyiça çegirma söraydi, keyingi hafta şartnoma.</p>
    <p class="fx-text" data-tone="tertiary" id="qongiroq-yordam" style="margin-block: var(--fx-space-3) 0">Tutqiç fokusda: strelkalar — suriş, Alt+strelka — ölçam, Home — joyiga.</p>
  </div>
</section>
<button class="fx-btn" type="button" data-floatwin-open="qongiroq" style="margin-block-start: var(--fx-space-3)">Qönğiroq oynasini oçiş</button>
```

- Qilmang: Foydalanuvçi javobisiz davom eta olmaydigan narsani suzuvçi oynaga qöymang — dialog.
- Qilmang: Bir paytda ikkitadan köp suzuvçi oyna oçmang — bir-birini yopadi.
- Qilmang: Tutqiçsiz qoldirmang — klaviatura bilan surib bölmaydi.

## Iş holati (`flow`, beta, 0.22.0 dan)

Vazifa holati doirasi: backlog (punktir), qilinadi (çegara), jarayonda (yarmi), tekşiruvda (¾), bajarildi (töla + ✓), bekor (xira + ×). Şakl va rang birga. Ustuvorlik rangi (Ustoz 21.10): data-priority="urgent|high|normal|low" — şakl holatni, rang ustuvorlikni bildiradi (bajarilgan va bekor — öz rangida). Haqiqiy foiz: --fx-flow-value. Yorliq .fx-flow-tag — doira + söz kapsulada, data-variant="soft" — rangli oç fon.

- Qaçon: Vazifa, sprint, reliz holati röyxat va doskada.
- Qaçon emas: Tölov yoki umumiy holat söz bilan → `status`
- Variantlar: data-state=backlog|todo|progress|review|done|cancelled|paused|blocked|failed|live|update (standart todo); data-size=md|lg (standart md); data-priority=urgent|high|normal|low (standart —); data-tone=status (standart —); data-size=lg (standart sm); data-shape=icon (standart —)
- Tokenlar: --fx-bg-brand-solid, --fx-bg-static-light, --fx-bg-surface, --fx-border-color-default, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-md, --fx-fg-error, --fx-fg-info, --fx-fg-success, --fx-fg-warning, --fx-flow-value, --fx-font-size-md, --fx-font-size-xs, --fx-font-weight-medium, --fx-knob-pill, --fx-radius-badge, --fx-radius-circle, --fx-radius-control, --fx-radius-pill, --fx-size-icon-md, --fx-size-icon-sm, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-6, --fx-text-on-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<span class="fx-flow" data-state="backlog" role="img" aria-label="Backlog"></span> <span class="fx-flow" data-state="todo" role="img" aria-label="Qilinadi"></span> <span class="fx-flow" data-state="progress" role="img" aria-label="Jarayonda"></span> <span class="fx-flow" data-state="review" role="img" aria-label="Tekşiruvda"></span> <span class="fx-flow" data-state="done" role="img" aria-label="Bajarildi"></span> <span class="fx-flow" data-state="cancelled" role="img" aria-label="Bekor"></span>
<!-- shakl — holat, rang — ustuvorlik --><div style="inline-size:100%;display:flex;flex-wrap:wrap;align-items:center;gap:var(--fx-space-4)"><span style="inline-size:7rem;color:var(--fx-text-tertiary);font-size:var(--fx-font-size-xs)">Şoşilinç</span><span class="fx-flow" data-size="lg" data-state="backlog" data-priority="urgent" role="img" aria-label="Rejada, şoşilinç"></span><span class="fx-flow" data-size="lg" data-state="todo" data-priority="urgent" role="img" aria-label="Navbatda, şoşilinç"></span><span class="fx-flow" data-size="lg" data-state="progress" data-priority="urgent" role="img" aria-label="Jarayonda, şoşilinç"></span><span class="fx-flow" data-size="lg" data-state="review" data-priority="urgent" role="img" aria-label="Körib çiqilmoqda, şoşilinç"></span><span class="fx-flow" data-size="lg" data-state="done" data-priority="urgent" role="img" aria-label="Bajarildi, şoşilinç"></span><span class="fx-flow" data-size="lg" data-state="cancelled" data-priority="urgent" role="img" aria-label="Bekor, şoşilinç"></span></div><div style="inline-size:100%;display:flex;flex-wrap:wrap;align-items:center;gap:var(--fx-space-4)"><span style="inline-size:7rem;color:var(--fx-text-tertiary);font-size:var(--fx-font-size-xs)">Yuqori</span><span class="fx-flow" data-size="lg" data-state="backlog" data-priority="high" role="img" aria-label="Rejada, yuqori"></span><span class="fx-flow" data-size="lg" data-state="todo" data-priority="high" role="img" aria-label="Navbatda, yuqori"></span><span class="fx-flow" data-size="lg" data-state="progress" data-priority="high" role="img" aria-label="Jarayonda, yuqori"></span><span class="fx-flow" data-size="lg" data-state="review" data-priority="high" role="img" aria-label="Körib çiqilmoqda, yuqori"></span><span class="fx-flow" data-size="lg" data-state="done" data-priority="high" role="img" aria-label="Bajarildi, yuqori"></span><span class="fx-flow" data-size="lg" data-state="cancelled" data-priority="high" role="img" aria-label="Bekor, yuqori"></span></div><div style="inline-size:100%;display:flex;flex-wrap:wrap;align-items:center;gap:var(--fx-space-4)"><span style="inline-size:7rem;color:var(--fx-text-tertiary);font-size:var(--fx-font-size-xs)">Oddiy</span><span class="fx-flow" data-size="lg" data-state="backlog" data-priority="normal" role="img" aria-label="Rejada, oddiy"></span><span class="fx-flow" data-size="lg" data-state="todo" data-priority="normal" role="img" aria-label="Navbatda, oddiy"></span><span class="fx-flow" data-size="lg" data-state="progress" data-priority="normal" role="img" aria-label="Jarayonda, oddiy"></span><span class="fx-flow" data-size="lg" data-state="review" data-priority="normal" role="img" aria-label="Körib çiqilmoqda, oddiy"></span><span class="fx-flow" data-size="lg" data-state="done" data-priority="normal" role="img" aria-label="Bajarildi, oddiy"></span><span class="fx-flow" data-size="lg" data-state="cancelled" data-priority="normal" role="img" aria-label="Bekor, oddiy"></span></div><div style="inline-size:100%;display:flex;flex-wrap:wrap;align-items:center;gap:var(--fx-space-4)"><span style="inline-size:7rem;color:var(--fx-text-tertiary);font-size:var(--fx-font-size-xs)">Past</span><span class="fx-flow" data-size="lg" data-state="backlog" data-priority="low" role="img" aria-label="Rejada, past"></span><span class="fx-flow" data-size="lg" data-state="todo" data-priority="low" role="img" aria-label="Navbatda, past"></span><span class="fx-flow" data-size="lg" data-state="progress" data-priority="low" role="img" aria-label="Jarayonda, past"></span><span class="fx-flow" data-size="lg" data-state="review" data-priority="low" role="img" aria-label="Körib çiqilmoqda, past"></span><span class="fx-flow" data-size="lg" data-state="done" data-priority="low" role="img" aria-label="Bajarildi, past"></span><span class="fx-flow" data-size="lg" data-state="cancelled" data-priority="low" role="img" aria-label="Bekor, past"></span></div>
<div style="inline-size:100%;display:flex;flex-wrap:wrap;gap:var(--fx-space-2)"><span class="fx-flow-tag"><span class="fx-flow" data-state="backlog" aria-hidden="true"></span>Rejada</span><span class="fx-flow-tag"><span class="fx-flow" data-state="todo" aria-hidden="true"></span>Navbatda</span><span class="fx-flow-tag"><span class="fx-flow" data-state="progress" aria-hidden="true"></span>Jarayonda</span><span class="fx-flow-tag"><span class="fx-flow" data-state="paused" aria-hidden="true"></span>Pauza</span><span class="fx-flow-tag"><span class="fx-flow" data-state="review" aria-hidden="true"></span>Körib çiqilmoqda</span><span class="fx-flow-tag"><span class="fx-flow" data-state="done" aria-hidden="true"></span>Bajarildi</span><span class="fx-flow-tag"><span class="fx-flow" data-state="cancelled" aria-hidden="true"></span>Bekor</span></div>
<div style="inline-size:100%;display:flex;flex-wrap:wrap;gap:var(--fx-space-2)"><span class="fx-flow-tag" data-variant="soft"><span class="fx-flow" data-state="progress" data-priority="urgent" style="--fx-flow-value: 80%" aria-hidden="true"></span>Şoşilinç · 80 %</span><span class="fx-flow-tag" data-variant="soft"><span class="fx-flow" data-state="progress" data-priority="high" style="--fx-flow-value: 46%" aria-hidden="true"></span>Yuqori · 46 %</span><span class="fx-flow-tag" data-variant="soft"><span class="fx-flow" data-state="progress" data-priority="normal" style="--fx-flow-value: 25%" aria-hidden="true"></span>Oddiy · 25 %</span><span class="fx-flow-tag" data-variant="soft"><span class="fx-flow" data-state="progress" data-priority="low" style="--fx-flow-value: 10%" aria-hidden="true"></span>Past · 10 %</span></div>
<div style="inline-size:100%;display:flex;flex-wrap:wrap;gap:var(--fx-space-2)"><span class="fx-flow-tag"><span class="fx-flow" data-state="blocked" aria-hidden="true"></span>Tösiq</span><span class="fx-flow-tag"><span class="fx-flow" data-state="failed" aria-hidden="true"></span>Xato</span><span class="fx-flow-tag"><span class="fx-flow" data-state="live" aria-hidden="true"></span>Jonli</span><span class="fx-flow-tag"><span class="fx-flow" data-state="update" aria-hidden="true"></span>Yangilaniş bor</span></div>
<div style="display:grid;grid-template-columns:auto auto;gap:var(--fx-space-3) var(--fx-space-10);justify-content:start;align-items:center"><span class="fx-flow-tag" data-variant="soft" data-tone="status" data-size="lg" data-shape="icon" role="img" aria-label="Qoralama" title="Qoralama"><span class="fx-flow" data-state="backlog" aria-hidden="true"></span></span><span class="fx-flow-tag" data-variant="soft" data-tone="status" data-size="lg"><span class="fx-flow" data-state="backlog" aria-hidden="true"></span>Qoralama</span><span class="fx-flow-tag" data-variant="soft" data-tone="status" data-size="lg" data-shape="icon" role="img" aria-label="Jarayonda" title="Jarayonda"><span class="fx-flow" data-state="progress" aria-hidden="true"></span></span><span class="fx-flow-tag" data-variant="soft" data-tone="status" data-size="lg"><span class="fx-flow" data-state="progress" aria-hidden="true"></span>Jarayonda</span><span class="fx-flow-tag" data-variant="soft" data-tone="status" data-size="lg" data-shape="icon" role="img" aria-label="Körib çiqilmoqda" title="Körib çiqilmoqda"><span class="fx-flow" data-state="review" aria-hidden="true"></span></span><span class="fx-flow-tag" data-variant="soft" data-tone="status" data-size="lg"><span class="fx-flow" data-state="review" aria-hidden="true"></span>Körib çiqilmoqda</span><span class="fx-flow-tag" data-variant="soft" data-tone="status" data-size="lg" data-shape="icon" role="img" aria-label="Bajarildi" title="Bajarildi"><span class="fx-flow" data-state="done" aria-hidden="true"></span></span><span class="fx-flow-tag" data-variant="soft" data-tone="status" data-size="lg"><span class="fx-flow" data-state="done" aria-hidden="true"></span>Bajarildi</span></div>
<div style="display:flex;flex-wrap:wrap;gap:var(--fx-space-2)"><span class="fx-flow-tag" data-variant="soft" data-tone="status"><span class="fx-flow" data-state="paused" aria-hidden="true"></span>Pauza</span><span class="fx-flow-tag" data-variant="soft" data-tone="status"><span class="fx-flow" data-state="blocked" aria-hidden="true"></span>Tösiq</span><span class="fx-flow-tag" data-variant="soft" data-tone="status"><span class="fx-flow" data-state="progress" aria-hidden="true"></span>Qisman</span></div>
```

- Qilmang: Holatni faqat rang bilan bildirmang — içki şakl ham özgaradi.

## Fokus, holat qatlami va kontrast (`focus`, beta, 0.28.0 dan)

Özaro ta'sir poydevori. Fokus halqasi oilasi (4.10): taşqi (standart), içki (data-ring="inset" — qirqiladigan konteyner, jadval katagi), ikki qavatli halo (rangli/qoronği fonda ham körinadi) va contrast (halqa matn rangida — brend banner, rels ustida); bitta elementga fx-focus-ring yoki butun blokka fx-focus-scope. Holat qatlami (4.17): fx-state — yuzada bitta qoplama, hover 8 % · fokus 10 % · bosiş 10 % · sudraş 16 %, rangi matn rangidan (har mavzu va fonda özi töğri). Yuqori kontrast (4.15): prefers-contrast: more yoki data-fx-contrast="more" — çegaralar va xira matn töqlaşadi, fokus halqasi qalinlaşadi, havolalar tagiga çiziladi.

- Qaçon: Yangi interaktiv yuza (röyxat bandi, karta, chip) — hover/bosiş rangini tanlaş örniga fx-state. Rangli yoki rasmli fon ustidagi tugma va havolalar — data-ring="halo" yoki "contrast". Mijoz loyihasida «yuqori kontrast» sozlamasi — data-fx-contrast.
- Qaçon emas: Tugmaning öz hover rangi yetarli → `button`; Tanlov guruhi (bir neçtadan biri) → `togglegroup`
- Variantlar: data-ring=outside|inset|halo|contrast (standart outside); data-state-layer=current|brand|selected (standart current); data-fx-contrast=system|more|normal (standart system)
- Tokenlar: --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-strong, --fx-border-width-default, --fx-border-width-focus, --fx-color-neutral-200, --fx-color-neutral-300, --fx-color-neutral-500, --fx-color-neutral-700, --fx-color-neutral-800, --fx-ease-standard, --fx-focus-halo, --fx-focus-inset, --fx-focus-offset, --fx-knob-outline, --fx-motion-fast, --fx-state-drag, --fx-state-focus, --fx-state-hover, --fx-state-press, --fx-text-brand

```html
<div class="fx-cluster" data-gap="3">
  <button class="fx-btn fx-focus-ring">Taşqi halqa</button>
  <button class="fx-btn fx-focus-ring" data-ring="inset">Içki halqa</button>
  <button class="fx-btn fx-focus-ring" data-ring="halo" data-variant="primary">Halo</button>
</div>
<div class="fx-focus-scope" data-ring="contrast" style="margin-block-start: var(--fx-space-4); padding: var(--fx-space-4); border-radius: var(--fx-radius-surface); background: var(--fx-bg-brand-solid); color: var(--fx-text-on-brand)">
  Tarifingiz 3 kundan keyin tugaydi. <a href="#" style="color: inherit">Uzaytiriş</a>
</div>
<ul class="fx-list" style="margin-block-start: var(--fx-space-4)">
  <li><a class="fx-list__link fx-state" href="#">Dilnoza Rahimova — 3 ta oçiq bitim</a></li>
  <li><a class="fx-list__link fx-state" href="#" aria-current="page">Sardor Toʻxtayev — qönğiroq kutilmoqda</a></li>
  <li><a class="fx-list__link fx-state" href="#" data-state-layer="brand">Ğayrat Olimov — yangi mijoz</a></li>
</ul>
<section data-fx-contrast="more" style="margin-block-start: var(--fx-space-4)">
  <p class="fx-text" data-tone="tertiary">Yuqori kontrast: xira matn töqlaşgan, <a href="#">havola</a> tagiga çizilgan.</p>
  <input class="fx-input" placeholder="Mijoz ismi" aria-label="Mijoz ismi">
</section>
```

- Qilmang: outline: none qoʻyib fokusni yashirmang — halqa turini (data-ring) almashtiring.
- Qilmang: Holat qatlami rangini qölda tanlamang — u matn rangidan oladi; brend tusi kerak bölsa data-state-layer="brand".
- Qilmang: Holatni faqat qoplama bilan bildirmang: tanlangan bandda aria-selected / aria-current ham bölsin.
- Qilmang: Kontrast rejimini «qoronği rejim» bilan almaştirmang — ular alohida öqlar.

## Fokusli kartalar (`focuscards`, beta, 0.29.0 dan)

Portfolio, loyiha yoki jamoa töri: bitta karta ustiga borilganda (yoki klaviatura bilan fokuslanganda) qolgan kartalar xiralaşadi va biroz kiçrayadi — köz bitta kartaga tuşadi (Aceternity Focus Cards). Sarlavha va izoh kartaning pastidan qoronği gradient ustida çiqadi; hover yöq qurilmada (telefon) sarlavha doim körinadi. Faqat CSS (:has). data-caption="always" — sarlavha doim körinadi; data-ratio="wide" — 4:3 kartalar; data-size — ustun kengligi.

- Qaçon: Landing sahifadagi portfolio yoki «Bizning loyihalar» töri. Jamoa a'zolari, kurslar yoki mahsulot kategoriyalari — rasm asosiy bölganda.
- Qaçon emas: Rasmlar galereyasi (kattalaştirib köriş bilan) → `gallery`; Matnli xususiyatlar töri → `features`
- Variantlar: data-caption=hover|always (standart hover); data-ratio=portrait|wide (standart portrait); data-size=sm|md|lg (standart md)
- Klaviatura: Tab — Keyingi karta; qolganlari xiralaşadi, sarlavha çiqadi; Enter — Kartani oçadi
- Tokenlar: --fx-bg-muted, --fx-bg-overlay, --fx-bg-static-light, --fx-border-color-focus, --fx-border-width-focus, --fx-ease-emphasized, --fx-ease-standard, --fx-font-size-lg, --fx-font-size-sm, --fx-font-weight-semibold, --fx-line-height-tight, --fx-motion-base, --fx-motion-press, --fx-motion-shift-md, --fx-motion-slow, --fx-radius-surface, --fx-space-1, --fx-space-10, --fx-space-12, --fx-space-4

```html
<ul class="fx-focuscards" data-size="sm" aria-label="Loyihalar">
  <li><a class="fx-focuscards__item" href="#"><span class="fx-focuscards__media" aria-hidden="true" style="background:radial-gradient(circle at 30% 25%, var(--fx-bg-category-blue-subtle), transparent 55%), linear-gradient(150deg, var(--fx-bg-category-blue), var(--fx-bg-category-purple))"></span><span class="fx-focuscards__body"><span class="fx-focuscards__title">Samarqand Grand mehmonxonasi</span><span class="fx-focuscards__meta">Veb-sayt · bron qiliş</span></span></a></li>
  <li><a class="fx-focuscards__item" href="#"><span class="fx-focuscards__media" aria-hidden="true" style="background:radial-gradient(circle at 30% 25%, var(--fx-bg-category-green-subtle), transparent 55%), linear-gradient(150deg, var(--fx-bg-category-green), var(--fx-bg-category-blue))"></span><span class="fx-focuscards__body"><span class="fx-focuscards__title">Tong maktabi</span><span class="fx-focuscards__meta">LMS · 1 200 öquvçi</span></span></a></li>
  <li><a class="fx-focuscards__item" href="#"><span class="fx-focuscards__media" aria-hidden="true" style="background:radial-gradient(circle at 30% 25%, var(--fx-bg-category-coral-subtle), transparent 55%), linear-gradient(150deg, var(--fx-bg-category-coral), var(--fx-bg-category-yellow))"></span><span class="fx-focuscards__body"><span class="fx-focuscards__title">Zarafşon Tekstil</span><span class="fx-focuscards__meta">ERP · ombor va savdo</span></span></a></li>
  <li><a class="fx-focuscards__item" href="#"><span class="fx-focuscards__media" aria-hidden="true" style="background:radial-gradient(circle at 30% 25%, var(--fx-bg-category-pink-subtle), transparent 55%), linear-gradient(150deg, var(--fx-bg-category-pink), var(--fx-bg-category-purple))"></span><span class="fx-focuscards__body"><span class="fx-focuscards__title">Mehr klinikasi</span><span class="fx-focuscards__meta">Helpdesk · navbat</span></span></a></li>
</ul>
```

- Qilmang: Kartalarda muhim amal tugmalarini yaşirmang — sarlavha butun karta havolasi bölsin.
- Qilmang: Ilova içidagi röyxat yoki jadval örniga işlatmang — bu körgazma (portfolio, landing) uçun.
- Qilmang: Rasm ustidagi matnni gradientsiz qoldirmang — kontrast yöqoladi.

## Formatlaş (fxFormat) (`format`, beta, 0.29.0 dan)

Qiymatni özbekça körinişga keltiradigan yagona funksiya (4.23): son (1 250 000,5), pul («1 250 000 söm», USD/EUR/RUB), foiz («12 %»), bayt («1,2 MB»), birlik («3 dona»), ixçam son («1,3 mln», «12 ming»), sana («17 oktyabr 2026», «17.10.2026»), vaqt va nisbiy vaqt («5 daqiqa oldin», «keça»). Minglar — bölinmas böş joy, kasr — vergul, manfiy — «−». Brauzer ICU'siga tayanmaydi — hamma joyda bir xil. HTML'da data-fx-format (matnni yozadi, value/datetime özgarsa yangilaydi) yoki JS'da window.fxFormat(qiymat, tur, parametrlar).

- Qaçon: Jadval, karta, KPI'da pul, foiz, fayl hajmi, miqdor körsatiş. Server xom son yuboradi — körinişni frontend bir xil qoidada beradi.
- Qaçon emas: Pul kiritiş maydoni (yozayotganda formatlaş) → `number`; Har daqiqa yangilanadigan «5 daqiqa oldin» → `reltime`; Özgariş foizi strelka bilan → `delta`
- Variantlar: data-type=number|currency|percent|bytes|unit|compact|date|time|datetime|relative (standart number); data-weight=inherit|bold (standart inherit)
- Tokenlar: --fx-border-color-strong, --fx-fg-error, --fx-fg-success, --fx-font-weight-bold, --fx-text-tertiary

```html
<dl class="fx-dl">
  <dt>Şartnoma summasi</dt><dd><data class="fx-format" data-fx-format data-type="currency" value="12500000">12500000</data></dd>
  <dt>Tölangan</dt><dd><data class="fx-format" data-fx-format data-type="percent" value="0.64">0.64</data></dd>
  <dt>Oylik ösiş</dt><dd><data class="fx-format" data-fx-format data-type="percent" data-sign value="0.034">0.034</data></dd>
  <dt>Biriktirilgan fayl</dt><dd><data class="fx-format" data-fx-format data-type="bytes" value="1258291">1258291</data></dd>
  <dt>Ombordagi qoldiq</dt><dd><data class="fx-format" data-fx-format data-type="unit" data-unit="dona" value="1240">1240</data></dd>
  <dt>Yillik aylanma</dt><dd><data class="fx-format" data-fx-format data-type="compact" value="4380000000">4380000000</data></dd>
  <dt>Şartnoma sanasi</dt><dd><time class="fx-format" data-fx-format data-type="date" datetime="2026-10-17T10:00:00+05:00">17.10.2026</time></dd>
  <dt>Oxirgi faollik</dt><dd><time class="fx-format" data-fx-format data-type="relative" datetime="2026-10-18T09:30:00+05:00">18.10.2026</time></dd>
</dl>
```

- Qilmang: Raqamni qölda toLocaleString() bilan formatlamang — brauzerlarda turliça çiqadi; fxFormat işlating.
- Qilmang: Nisbiy vaqtni doimiy yangilanadigan joyda işlatmang — u bir marta yoziladi; jonli soat uçun reltime.
- Qilmang: Foizni rang bilan yolğiz bildirmang — data-sign «+» / «−» belgisini ham yozadi.

## Rasmlar töri (`gallery`, beta, 0.24.0 dan)

Rasmlar töri: avto ustunlar yoki qotirilgan (data-cols 2–4), «mosaic» — birinçi rasm katta, oxirgisida «+N». Elementlar havola yoki tugma; lightbox bilan data-fx-lightbox-target orqali ulanadi (bosilsa katta körinadi).

- Qaçon: Köp rasmni bir qaraşda körsatiş va bosilganda kattalaştiriş kerak bölganda.
- Qaçon emas: Rasmlar ketma-ket bittadan → `carousel`; Yagona rasm → `image`
- Variantlar: data-cols=auto|2|3|4|6|8 (standart auto); data-variant=grid|mosaic (standart grid); data-ratio=1/1|4/3|16/9 (standart 1/1); data-size=md|sm (standart md)
- Klaviatura: Tab — Rasmlar orasida; Enter — Lightbox'da oçadi
- Tokenlar: --fx-bg-muted, --fx-bg-overlay, --fx-border-color-focus, --fx-border-width-focus, --fx-ease-standard, --fx-font-size-xl, --fx-font-weight-semibold, --fx-motion-slow, --fx-radius-badge, --fx-radius-control, --fx-space-1, --fx-space-12, --fx-space-2, --fx-text-on-brand

```html
<ul class="fx-gallery" data-cols="3" data-variant="mosaic" aria-label="Loyiha rasmlari" style="max-inline-size: 32rem">
  <li><a class="fx-gallery__item" href="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23e8875a%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23c2410c%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EBozor%3C%2Ftext%3E%3C%2Fsvg%3E" data-fx-lightbox-target="lb1" data-caption="Bozor"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23e8875a%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23c2410c%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EBozor%3C%2Ftext%3E%3C%2Fsvg%3E" alt="Bozor" loading="lazy"></a></li>
  <li><a class="fx-gallery__item" href="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%235a8be8%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%231d4ed8%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EOmbor%3C%2Ftext%3E%3C%2Fsvg%3E" data-fx-lightbox-target="lb1" data-caption="Ombor"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%235a8be8%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%231d4ed8%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EOmbor%3C%2Ftext%3E%3C%2Fsvg%3E" alt="Ombor" loading="lazy"></a></li>
  <li><a class="fx-gallery__item" href="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%234fb286%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23047857%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EOfis%3C%2Ftext%3E%3C%2Fsvg%3E" data-fx-lightbox-target="lb1" data-caption="Ofis"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%234fb286%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23047857%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EOfis%3C%2Ftext%3E%3C%2Fsvg%3E" alt="Ofis" loading="lazy"></a></li>
  <li><a class="fx-gallery__item" href="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23a78bfa%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%236d28d9%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EStudiya%3C%2Ftext%3E%3C%2Fsvg%3E" data-fx-lightbox-target="lb1" data-caption="Studiya"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23a78bfa%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%236d28d9%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EStudiya%3C%2Ftext%3E%3C%2Fsvg%3E" alt="Studiya" loading="lazy"></a></li>
  <li><a class="fx-gallery__item" href="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23f0b429%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23b45309%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3ESex%3C%2Ftext%3E%3C%2Fsvg%3E" data-fx-lightbox-target="lb1" data-caption="Sex"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23f0b429%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23b45309%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3ESex%3C%2Ftext%3E%3C%2Fsvg%3E" alt="Sex" loading="lazy"></a></li>
  <li><a class="fx-gallery__item" href="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23ec6a9c%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23be185d%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EDo%CA%BBkon%3C%2Ftext%3E%3C%2Fsvg%3E" data-fx-lightbox-target="lb1" data-caption="Dökon" data-more="3"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23ec6a9c%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23be185d%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EDo%CA%BBkon%3C%2Ftext%3E%3C%2Fsvg%3E" alt="Dökon" loading="lazy"></a></li>
</ul>
<dialog class="fx-lightbox" id="lb1" data-fx-lightbox></dialog>
<ul class="fx-gallery" data-size="sm" data-ratio="4/3" aria-label="Ixçam galereya">
<li><a class="fx-gallery__item" href="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23e8875a%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23c2410c%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EBozor%3C%2Ftext%3E%3C%2Fsvg%3E"  data-caption="Bozor"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23e8875a%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23c2410c%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EBozor%3C%2Ftext%3E%3C%2Fsvg%3E" alt="Bozor" loading="lazy"></a></li>
<li><a class="fx-gallery__item" href="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%235a8be8%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%231d4ed8%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EOmbor%3C%2Ftext%3E%3C%2Fsvg%3E"  data-caption="Ombor"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%235a8be8%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%231d4ed8%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EOmbor%3C%2Ftext%3E%3C%2Fsvg%3E" alt="Ombor" loading="lazy"></a></li>
<li><a class="fx-gallery__item" href="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%234fb286%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23047857%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EOfis%3C%2Ftext%3E%3C%2Fsvg%3E"  data-caption="Ofis"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%234fb286%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23047857%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EOfis%3C%2Ftext%3E%3C%2Fsvg%3E" alt="Ofis" loading="lazy"></a></li>
<li><a class="fx-gallery__item" href="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23a78bfa%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%236d28d9%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EStudiya%3C%2Ftext%3E%3C%2Fsvg%3E"  data-caption="Studiya"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23a78bfa%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%236d28d9%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EStudiya%3C%2Ftext%3E%3C%2Fsvg%3E" alt="Studiya" loading="lazy"></a></li>
<li><a class="fx-gallery__item" href="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23f0b429%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23b45309%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3ESex%3C%2Ftext%3E%3C%2Fsvg%3E"  data-caption="Sex"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23f0b429%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23b45309%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3ESex%3C%2Ftext%3E%3C%2Fsvg%3E" alt="Sex" loading="lazy"></a></li>
<li><a class="fx-gallery__item" href="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23ec6a9c%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23be185d%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EDo%CA%BBkon%3C%2Ftext%3E%3C%2Fsvg%3E"  data-caption="Dökon"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23ec6a9c%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23be185d%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EDo%CA%BBkon%3C%2Ftext%3E%3C%2Fsvg%3E" alt="Dökon" loading="lazy"></a></li>
<li><a class="fx-gallery__item" href="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23e8875a%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23c2410c%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EBozor%3C%2Ftext%3E%3C%2Fsvg%3E"  data-caption="Bozor"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23e8875a%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23c2410c%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EBozor%3C%2Ftext%3E%3C%2Fsvg%3E" alt="Bozor" loading="lazy"></a></li>
<li><a class="fx-gallery__item" href="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%235a8be8%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%231d4ed8%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EOmbor%3C%2Ftext%3E%3C%2Fsvg%3E"  data-caption="Ombor"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%235a8be8%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%231d4ed8%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EOmbor%3C%2Ftext%3E%3C%2Fsvg%3E" alt="Ombor" loading="lazy"></a></li>
<li><a class="fx-gallery__item" href="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%234fb286%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23047857%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EOfis%3C%2Ftext%3E%3C%2Fsvg%3E"  data-caption="Ofis"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%234fb286%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23047857%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EOfis%3C%2Ftext%3E%3C%2Fsvg%3E" alt="Ofis" loading="lazy"></a></li>
<li><a class="fx-gallery__item" href="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23a78bfa%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%236d28d9%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EStudiya%3C%2Ftext%3E%3C%2Fsvg%3E"  data-caption="Studiya"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23a78bfa%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%236d28d9%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EStudiya%3C%2Ftext%3E%3C%2Fsvg%3E" alt="Studiya" loading="lazy"></a></li>
</ul>
```

- Qilmang: Har xil nisbatdagi rasmlarni bitta qatorga majburan qirqmang — nisbatni data-ratio bilan birlaştiring.
- Qilmang: Havolasiz rasmni zoom-in kursor bilan qoldirmang.

## Gantt (`gantt`, beta, 0.24.0 dan)

Loyiha va yöl xaritasini vaqt öqida körsatadi: çapda nomlar ustuni, öngda oy va kun (yoki hafta) sarlavhasi — ikkalasi aylantirilganda qotadi; dam oliş kunlari soyasi, «bugun» çiziği, plaşkalar içida bajarilgan uluş, bosqiç (romb), guruh xulosasi, boğliqlik öqlari (data-after) va keçikkan plaşka («Keçikdi» yozuvi bilan). Plaşkalar tugma: Tab/←→↑↓ bilan yuriladi, fokus va hover'da sana oraliği va uluş maslahati çiqadi. Joylaşuvni xulq sanalardan hisoblaydi (data-start, data-end). Xulq foxui.js'da (data-fx-gantt).

- Qaçon: Loyiha bosqiçlari, muddatlar va boğliqliklarni vaqt böyiça köriş (reja, yöl xaritasi, işlab çiqariş grafigi).
- Qaçon emas: Uçraşuv va hodisalarni haftalik/oylik köriş → `schedule`; Faoliyat tarixi (nima böldi) → `timeline`; Oddiy vazifalar röyxati → `row`
- Variantlar: data-scale=day|week (standart day); data-tone=brand|blue|green|coral|purple|yellow (standart brand)
- Klaviatura: Tab — Plaşkaga / bosqiçga fokus; maslahat çiqadi; ← → — Qatordagi qöşni plaşka; ↑ ↓ — Qöşni qatordagi eng yaqin plaşka; Esc — Maslahatni yopadi
- Tokenlar: --fx-bg-brand-solid, --fx-bg-category-blue, --fx-bg-category-coral, --fx-bg-category-green, --fx-bg-category-purple, --fx-bg-category-yellow, --fx-bg-error-solid, --fx-bg-error-subtle, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-error, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-md, --fx-ease-standard, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-regular, --fx-font-weight-semibold, --fx-gantt-height, --fx-motion-fast, --fx-motion-instant, --fx-motion-press, --fx-radius-badge, --fx-radius-control, --fx-radius-surface, --fx-shadow-md, --fx-size-icon-sm, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-6, --fx-space-8, --fx-text-disabled, --fx-text-error, --fx-text-on-brand, --fx-text-on-error, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary, --fx-viz-brand, --fx-viz-ink

```html
<div class="fx-gantt" data-fx-gantt data-start="2026-10-12" data-days="35" data-today="2026-10-17" role="group" aria-label="Loyiha rejasi: 12-oktyabr — 15-noyabr" style="--fx-gantt-height: 28rem">
  <div class="fx-gantt__inner">
    <div class="fx-gantt__head"><div class="fx-gantt__corner">Vazifa</div></div>
    <div class="fx-gantt__row" data-group role="row"><div class="fx-gantt__name"><span>Loyihalaş</span><span class="fx-gantt__count"></span></div><div class="fx-gantt__track"></div></div>
    <div class="fx-gantt__row"><div class="fx-gantt__name"><span>Texnik topşiriq</span></div><div class="fx-gantt__track"><button type="button" class="fx-gantt__bar" id="g1" data-start="2026-10-12" data-end="2026-10-13" data-progress="100"></button></div></div>
    <div class="fx-gantt__row"><div class="fx-gantt__name"><span>Smeta</span></div><div class="fx-gantt__track"><button type="button" class="fx-gantt__bar" id="g2" data-start="2026-10-14" data-end="2026-10-16" data-progress="60" data-after="g1"></button></div></div>
    <div class="fx-gantt__row"><div class="fx-gantt__name"><span>Çizmalar</span></div><div class="fx-gantt__track"><button type="button" class="fx-gantt__bar" id="g3" data-start="2026-10-14" data-end="2026-10-24" data-progress="35" data-after="g1" data-tone="blue"></button></div></div>
    <div class="fx-gantt__row" data-group role="row"><div class="fx-gantt__name"><span>Quriliş</span><span class="fx-gantt__count"></span></div><div class="fx-gantt__track"></div></div>
    <div class="fx-gantt__row"><div class="fx-gantt__name"><span>Poydevor</span></div><div class="fx-gantt__track"><button type="button" class="fx-gantt__bar" id="g4" data-start="2026-10-26" data-end="2026-10-30" data-progress="0" data-after="g2,g3" data-tone="green"></button></div></div>
    <div class="fx-gantt__row"><div class="fx-gantt__name"><span>Devor va pardozlaş</span></div><div class="fx-gantt__track"><button type="button" class="fx-gantt__bar" id="g5" data-start="2026-11-02" data-end="2026-11-10" data-progress="0" data-after="g4" data-tone="green"></button></div></div>
    <div class="fx-gantt__row"><div class="fx-gantt__name"><span>Birinçi bosqiç qabuli</span></div><div class="fx-gantt__track"><button type="button" class="fx-gantt__ms" id="m1" data-date="2026-10-31" data-after="g4" aria-label="Birinçi bosqiç qabuli"></button></div></div>
    <div class="fx-gantt__row" data-group role="row"><div class="fx-gantt__name"><span>Işga tuşiriş</span><span class="fx-gantt__count"></span></div><div class="fx-gantt__track"></div></div>
    <div class="fx-gantt__row"><div class="fx-gantt__name"><span>Sinov va tuzatiş</span></div><div class="fx-gantt__track"><button type="button" class="fx-gantt__bar" id="g6" data-start="2026-11-11" data-end="2026-11-14" data-progress="0" data-after="g5" data-tone="purple"></button></div></div>
    <div class="fx-gantt__row"><div class="fx-gantt__name"><span>Reliz</span></div><div class="fx-gantt__track"><button type="button" class="fx-gantt__ms" id="m2" data-date="2026-11-15" data-after="g6" aria-label="Reliz"></button></div></div>
  </div>
</div>

<!-- Hafta masshtabi: data-scale="week" -->
<div class="fx-gantt" data-fx-gantt data-scale="week" data-start="2026-10-12" data-days="84" data-today="2026-10-17" role="group" aria-label="Çorak rejasi">
  <div class="fx-gantt__inner">
    <div class="fx-gantt__head"><div class="fx-gantt__corner">Yönaliş</div></div>
    <div class="fx-gantt__row" data-group role="row"><div class="fx-gantt__name"><span>Mahsulot</span><span class="fx-gantt__count"></span></div><div class="fx-gantt__track"></div></div>
    <div class="fx-gantt__row"><div class="fx-gantt__name"><span>Dizayn tizimi</span></div><div class="fx-gantt__track"><button type="button" class="fx-gantt__bar" id="w1" data-start="2026-10-12" data-end="2026-11-13" data-progress="55"></button></div></div>
    <div class="fx-gantt__row"><div class="fx-gantt__name"><span>Mobil ilova</span></div><div class="fx-gantt__track"><button type="button" class="fx-gantt__bar" id="w2" data-start="2026-11-16" data-end="2026-12-18" data-progress="0" data-after="w1" data-tone="blue"></button></div></div>
    <div class="fx-gantt__row"><div class="fx-gantt__name"><span>Ommaviy sinov</span></div><div class="fx-gantt__track"><button type="button" class="fx-gantt__ms" id="w3" data-date="2026-12-21" data-after="w2" aria-label="Ommaviy sinov"></button></div></div>
  </div>
</div>
```

- Qilmang: Keçikişni faqat qizil rang bilan bermang — «Keçikdi» yozuvi va qalin çegara bor.
- Qilmang: Bosqiçni (romb) uzoq iş uçun işlatmang — u bir kunlik voqea; iş plaşka böladi.
- Qilmang: Boğliqlik öqlarini hamma plaşkaga çizmang — faqat haqiqiy tösiqlarga, aks holda çalkaşadi.
- Qilmang: Gantt'ni telefon ekranida asosiy köriniş qilmang — ixçam röyxat yoki jadval muqobilini bering.
- Qilmang: Hafta masştabida bir kunlik tafsilotni kutmang — kun masştabiga öting.

## Globus va nuqtali xarita (`globe`, beta, 0.29.0 dan)

Nuqtalardan iborat globus yoki tekis xarita (4.79): şaharlar — marker, boğlanişlar — yoy (globusda katta aylana böylab), ustidan yönaliş bölagi yuguradi. Ma'lumot sahifada matn: içidagi röyxat (data-lat, data-lon, data-to="Şahar, …") — canvas faqat köriniş. Globus sekin aylanadi, hover/fokusda töxtaydi, sudrab yoki ← → ↑ ↓ bilan aylantiriladi; data-view="map" — tekis 2:1 xarita. Quruqlik konturi qöpol (bezak darajasida) — aniq geografiya uçun emas. data-label="hover" (20.10): köp markerda nom faqat kursor yaqinlaşganda çiqadi, röyxat körinişdan yaşirinadi (ekran öquvçida qoladi). Sahna JS bilan qöşilgunça joyi oldindan band — sahifa siljimaydi (CLS).

- Qaçon: Landing sahifasida «qayerlarda işlaymiz», filiallar va eksport yönalişlari. Yetkazib beriş yoki hamkorlar tarmoğini umumiy körsatiş.
- Qaçon emas: Aniq manzil, yöl yoki hudud (interaktiv xarita) → `card`; Mamlakatlar böyiça raqamlar → `chart`
- Variantlar: data-view=map (standart globe); data-tone=accent (standart brand); data-list=hidden (standart visible); data-label=hover (standart list)
- Klaviatura: ← → ↑ ↓ — Globusni aylantiradi (10°); Tab — Globusga fokus — avtomatik aylaniş töxtaydi
- Tokenlar: --fx-bg-brand-solid, --fx-bg-page, --fx-border-color-default, --fx-border-color-focus, --fx-border-width-focus, --fx-font-size-xs, --fx-font-weight-medium, --fx-radius-circle, --fx-radius-control, --fx-shadow-md, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary, --fx-viz-accent

```html
<div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(18rem,1fr));gap:var(--fx-space-8);align-items:center">
<figure class="fx-globe" data-fx-globe>
  <ul class="fx-globe__places" aria-label="Filiallar va hamkorlar">
    <li data-lat="41.31" data-lon="69.24" data-to="Moskva, Dubay, Istanbul, Seul">Toşkent — boş ofis</li>
    <li data-lat="55.75" data-lon="37.62">Moskva — 2 ombor</li>
    <li data-lat="25.2" data-lon="55.27">Dubay — hamkor</li>
    <li data-lat="41.01" data-lon="28.98">Istanbul — import</li>
    <li data-lat="37.57" data-lon="126.98">Seul — yetkazib beruvçi</li>
  </ul>
  <figcaption>Yetkazib beriş tarmoği · 2026</figcaption>
</figure>
<figure class="fx-globe" data-fx-globe data-view="map">
  <ul class="fx-globe__places" aria-label="Eksport yönalişlari">
    <li data-lat="41.31" data-lon="69.24" data-to="Moskva, Dubay, Istanbul, Seul">Toşkent — boş ofis</li>
    <li data-lat="55.75" data-lon="37.62">Moskva — 2 ombor</li>
    <li data-lat="25.2" data-lon="55.27">Dubay — hamkor</li>
    <li data-lat="41.01" data-lon="28.98">Istanbul — import</li>
    <li data-lat="37.57" data-lon="126.98">Seul — yetkazib beruvçi</li>
  </ul>
  <figcaption>Eksport: 5 mamlakat</figcaption>
</figure>
</div>
```

- Qilmang: Aniq çegaralar, hudud yoki masofani körsatiş uçun işlatmang — kontur qöpol, bu bezak va umumiy manzara.
- Qilmang: 10 tadan köp yoy çizmang — globus çalkaşadi.
- Qilmang: Şaharlar röyxatini olib taşlamang — u ma'lumotning matn şakli (data-list="hidden" bilan faqat közdan yaşiring).

## Haqiqiy globus (`globus`, beta, 0.98.0 dan)

Haqiqiy Yer xaritasi globus körinişida: nuqtalar (şahar, bekat, filial) va ular orasidagi katta aylana yoylari — yöl, karvon, yetkaziş marşruti. Sekin aylanadi, tegilganda töxtaydi; ⤢ bilan butun ekran, Esc bilan qaytadi; telefonda kvadrat. Okean, yöl va nuqta ranglari tokenlardan — rang mavzusi va qoronği rejim almaşsa xarita ham almaşadi. Xarita kutubxonasi (MapLibre GL, BSD) loyihaning özida: foxui/globus faqat uzatilgan maplibregl bilan işlaydi. Lazy rejim: avval yengil joy egasi, bosilganda yuklanadi — sahifa tezligi saqlanadi. ⤢ tugmasi — fx-btn: npx foxui sync uni özi qöşadi; CSS'ni qölda alohida ulasangiz, button.css ham kerak. Tiplar — globus.d.mts. Jonli namuna (Buyuk ipak yöli): /namuna/globus/.

- Qaçon: Bir neça mamlakat yoki qit'aga yoyilgan nuqtalar va ular orasidagi yöl: tarixiy marşrut, yetkaziş, filiallar. Ta'lim va hikoya sahifasi — foydalanuvçi globusni özi aylantirib, nuqtaga uçib körsin.
- Qaçon emas: Raqamlarni mintaqa böyiça taqqoslaş → `chart`; Tugun va boğlanişlar (xaritasiz) → `graph`
- Klaviatura: Esc — Butun ekran oynasini yopadi, fokus oçgan tugmaga qaytadi; Strelkalar, + − — Xaritani suriş va yaqinlaştiriş (MapLibre)
- Tokenlar: --fx-bg-surface, --fx-duration-pulse, --fx-ease-standard, --fx-radius-circle, --fx-radius-surface, --fx-shadow-lg, --fx-space-12, --fx-space-3, --fx-space-4, --fx-viz-map-space, --fx-viz-map-water, --fx-z-modal

```html
<div class="fx-globus" role="region" aria-label="Buyuk ipak yöli xaritasi">
  <div class="fx-globus__xarita">
    <div class="fx-globus__joy">
      <span class="fx-globus__shar" aria-hidden="true"></span>
      <button class="fx-btn" data-variant="primary" type="button">Globusni oçiş</button>
    </div>
  </div>
</div>
```

- Qilmang: Xarita kutubxonasini sahifa oçilişida yuklamang, agar globus birinçi ekranda bölmasa — globusLazy() ni işlating.
- Qilmang: Okean yoki nuqta rangini qölda yozmang — viz.map-* tokenlari rang mavzusi va rejim bilan özi almaşadi.
- Qilmang: Mualliflik belgisini (OpenStreetMap, OpenFreeMap) yaşirmang — litsenziya talabi; u yiğiq ⓘ bölib turadi.
- Qilmang: Faqat bitta manzil körsatiş uçun globus işlatmang — oddiy xarita yoki manzil matni yetarli.

## Gradient tanlagiç (`gradientpicker`, beta, 0.29.0 dan)

Gradient yasaş (4.107): banner, kartoçka foni, prezentatsiya sarlavhasi uçun. Töxtaş nuqtalari yölakda — bosib qöşiladi (şu joydagi rang bilan), sudraladi yoki klaviaturada suriladi (← →, Shift — 10 %), Delete öçiradi (kamida 2 ta). Tanlangan nuqta rangi — tizimning rang tanlagiçi, örni — son maydoni. Çiziqli / radial, burçak — knob (data-type="angle"). Natija — tayyor CSS matni (nusxa oliş uçun) va yaşirin input.

- Qaçon: Konstruktor / CMS'da banner yoki kartoçka foni. Mavzu muharririda brend gradienti.
- Qaçon emas: Bitta rang tanlaş → `colorpicker`; Tayyor ranglardan tanlaş → `swatch`
- Variantlar: data-type=linear|radial (standart linear)
- Klaviatura: Tab — Tanlangan nuqta → rang → örin → tur → burçak; ← → / ↑ ↓ — Nuqtani 1 % suradi (Shift — 10 %); Home / End — Nuqtani 0 / 100 % ga; Delete / Backspace — Nuqtani öçiradi (kamida 2 ta qoladi)
- Tokenlar: --fx-bg-field, --fx-bg-muted, --fx-bg-surface, --fx-border-color-default, --fx-border-color-field, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-md, --fx-ease-standard, --fx-font-adjust-mono, --fx-font-family-mono, --fx-font-size-xs, --fx-motion-instant, --fx-motion-press, --fx-popover-width, --fx-radius-badge, --fx-radius-control, --fx-shadow-md, --fx-size-checkbox, --fx-space-1, --fx-space-12, --fx-space-3, --fx-space-6, --fx-text-primary, --fx-text-tertiary

```html
<div class="fx-gradientpicker" data-fx-gradientpicker data-name="banner_fon" data-type="linear" data-angle="135" data-stops="#e8590c 0, #f59f00 45, #7048e8 100">
  <div class="fx-gradientpicker__preview" role="img" aria-label="Gradient körinişi"></div>
  <div class="fx-gradientpicker__track" role="group" aria-label="Töxtaş nuqtalari — yölakni bosib yangisini qöşing"></div>
  <div class="fx-gradientpicker__row">
    <label class="fx-gradientpicker__label">Rang<input type="color" class="fx-gradientpicker__color" aria-label="Tanlangan nuqta rangi"></label>
    <label class="fx-gradientpicker__label">Örni, %<input class="fx-input fx-gradientpicker__pos" data-size="sm" type="number" min="0" max="100" inputmode="numeric" aria-label="Tanlangan nuqta örni, foiz"></label>
    <div class="fx-segment" data-size="sm" role="group" aria-label="Gradient turi"><button type="button" class="fx-segment__item" data-gtype="linear">Çiziqli</button><button type="button" class="fx-segment__item" data-gtype="radial">Radial</button></div>
    <div class="fx-gradientpicker__angle"><div class="fx-knob" data-fx-knob data-size="sm" aria-label="Gradient burçagi"></div></div>
  </div>
  <input class="fx-input fx-gradientpicker__css" data-size="sm" readonly aria-label="CSS qiymati">
  <p class="fx-gradientpicker__hint">Nuqta: sudrang yoki ← →, Delete — öçiriş (kamida 2 ta).</p>
</div>
```

- Qilmang: Matn ostidagi gradientni kontrastsiz qoldirmang — eng oç nuqtada ham matn öqilsin.
- Qilmang: Interfeys holatlarini (xato, muvaffaqiyat) gradient bilan bildirmang — tokenlar bor.
- Qilmang: 5 tadan köp nuqta qöyişni tavsiya qilmang — «kamalak» köriniş çiqadi.

## Graf kanvasi (oqim) (`graph`, beta, 0.1.0 dan)

Tugun va çiziqlardan oqim diagrammasi (Make.com uslubi): har tugun — yumaloq karta, çapda xizmat belgisi pastel doirada, tur, nima va kim; çiziq — egri, strelkali, örtasida holat nuqtasi. Soğ zanjir sokin kulrang, uzilgani qizil; dalilsiz tugun va uzuq çiziq — qizil punktir; zanjir davomi yöq — qizil uzuq oxir va «?». Joylaştiriş ma'lumotdan özi (templates/graf.mjs — qatlamli, taşqi kutubxonasiz), zoom va suriş bor; tor joyda (telefon) tik röyxatga ötadi. Mister Fox va Fox OS sörovi (FoxOS «Oqimlar», 21.10); keyin WBS daraxti va brend arxitekturasi şu yadrodan.

- Qaçon: Funksiya oqimi: trigger → amallar → natija, har tugun dalil bilan (uzilgan joyni topiş). Avtomatlaştiriş, integratsiya va iş jarayoni sxemasi.
- Qaçon emas: Vaqt böyiça qadamlar (bir yöl, tarmoqsiz) → `timeline`; Bosqiçlar böyiça kartalar → `board`
- Variantlar: data-tone=blue|yellow|pink|coral|green|purple (standart blue); data-state=ok|warn|error (standart ok)
- Klaviatura: Tab — Tugundan tugunga (körinmasa — körinişga suriladi); Enter / Space — Tugunni tanlaydi (fx-graph:select); Ctrl/⌘ + gʻildirak — Zoom
- Tokenlar: --fx-bg-category-blue, --fx-bg-category-coral, --fx-bg-category-green, --fx-bg-category-pink, --fx-bg-category-purple, --fx-bg-category-yellow, --fx-bg-muted, --fx-bg-pressed, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-focus, --fx-border-color-strong, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-sm, --fx-ease-standard, --fx-fg-error, --fx-fg-success, --fx-fg-warning, --fx-font-size-lg, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-motion-fast, --fx-radius-circle, --fx-radius-control, --fx-radius-pill, --fx-radius-surface, --fx-size-icon-md, --fx-space-1, --fx-space-10, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-space-6, --fx-text-on-category, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<div class="fx-graph" data-fx-graph role="group" aria-label="Ariza oqimi" style="--_nw: 248px; --_nh: 96px; --_stub: 64px; --_gr: 14px">
  <div class="fx-graph__tools"><button class="fx-graph__tool" type="button" data-graph-zoom="in" aria-label="Yaqinlaştiriş" title="Yaqinlaştiriş">+</button><button class="fx-graph__tool" type="button" data-graph-zoom="out" aria-label="Uzoqlaştiriş" title="Uzoqlaştiriş">−</button><button class="fx-graph__tool" type="button" data-graph-zoom="fit" aria-label="Butunini körsatiş" title="Butunini körsatiş"><svg viewBox="0 0 256 256" aria-hidden="true"><path fill="currentColor" d="M216,48V96a8,8,0,0,1-16,0V67.31l-50.34,50.35a8,8,0,0,1-11.32-11.32L188.69,56H160a8,8,0,0,1,0-16h48A8,8,0,0,1,216,48ZM106.34,138.34,56,188.69V160a8,8,0,0,0-16,0v48a8,8,0,0,0,8,8H96a8,8,0,0,0,0-16H67.31l50.35-50.34a8,8,0,0,0-11.32-11.32Z"/></svg></button></div>
  <div class="fx-graph__viewport"><div class="fx-graph__stage" data-w="1092" data-h="280" style="--_w: 1092px; --_h: 280px">
    <svg class="fx-graph__edges" width="1092" height="280" viewBox="0 0 1092 280" aria-hidden="true"><defs><marker id="gx1-a-ok" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="10" markerHeight="10" markerUnits="userSpaceOnUse" orient="auto"><path class="fx-graph__arrow" data-state="ok" d="M0 1 9 5 0 9z"/></marker><marker id="gx1-a-warn" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="10" markerHeight="10" markerUnits="userSpaceOnUse" orient="auto"><path class="fx-graph__arrow" data-state="warn" d="M0 1 9 5 0 9z"/></marker><marker id="gx1-a-error" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="10" markerHeight="10" markerUnits="userSpaceOnUse" orient="auto"><path class="fx-graph__arrow" data-state="error" d="M0 1 9 5 0 9z"/></marker></defs><path class="fx-graph__edge" data-state="ok" d="M280 140 C328 140 324 140 372 140" marker-end="url(#gx1-a-ok)"/><circle class="fx-graph__mid" data-state="ok" cx="326" cy="140" r="5"/><path class="fx-graph__edge" data-state="warn" d="M624 140 C672 140 668 80 716 80" marker-end="url(#gx1-a-warn)"/><circle class="fx-graph__mid" data-state="warn" cx="670" cy="110" r="5"/><path class="fx-graph__edge" data-state="error" data-broken d="M624 140 C672 140 668 200 716 200" marker-end="url(#gx1-a-error)"/><circle class="fx-graph__mid" data-state="error" cx="670" cy="170" r="5"/><path class="fx-graph__edge" data-state="error" data-broken d="M968 200 H1032"/></svg>
    <ol class="fx-graph__layers"><li class="fx-graph__layer"><span class="fx-sr-only">1-qadam</span><ul class="fx-graph__nodes"><li class="fx-graph__item" style="--x: 32px; --y: 92px"><button class="fx-graph__node" type="button" data-id="t1" data-state="ok" data-tone="blue" aria-pressed="false"><span class="fx-graph__icon"><svg viewBox="0 0 256 256" aria-hidden="true"><path d="M128,24h0A104,104,0,1,0,232,128,104.12,104.12,0,0,0,128,24Zm88,104a87.61,87.61,0,0,1-3.33,24H174.16a157.44,157.44,0,0,0,0-48h38.51A87.61,87.61,0,0,1,216,128ZM102,168H154a115.11,115.11,0,0,1-26,45A115.27,115.27,0,0,1,102,168Zm-3.9-16a140.84,140.84,0,0,1,0-48h59.88a140.84,140.84,0,0,1,0,48ZM40,128a87.61,87.61,0,0,1,3.33-24H81.84a157.44,157.44,0,0,0,0,48H43.33A87.61,87.61,0,0,1,40,128ZM154,88H102a115.11,115.11,0,0,1,26-45A115.27,115.27,0,0,1,154,88Zm52.33,0H170.71a135.28,135.28,0,0,0-22.3-45.6A88.29,88.29,0,0,1,206.37,88ZM107.59,42.4A135.28,135.28,0,0,0,85.29,88H49.63A88.29,88.29,0,0,1,107.59,42.4ZM49.63,168H85.29a135.28,135.28,0,0,0,22.3,45.6A88.29,88.29,0,0,1,49.63,168Zm98.78,45.6a135.28,135.28,0,0,0,22.3-45.6h35.66A88.29,88.29,0,0,1,148.41,213.6Z"/></svg></span><span class="fx-graph__text"><span class="fx-graph__kicker">Boşlaniş · Sayt</span><span class="fx-graph__title">Mehmon formani yuboradi</span><span class="fx-graph__meta">Fox RX</span></span><span class="fx-graph__dot" data-state="ok" aria-hidden="true"></span><span class="fx-sr-only">Işlayapti</span></button></li></ul></li><li class="fx-graph__layer"><span class="fx-sr-only">2-qadam</span><ul class="fx-graph__nodes"><li class="fx-graph__item" style="--x: 376px; --y: 92px"><button class="fx-graph__node" type="button" data-id="a1" data-state="ok" data-tone="green" aria-pressed="false"><span class="fx-graph__icon"><svg viewBox="0 0 256 256" aria-hidden="true"><path d="M128,24C74.17,24,32,48.6,32,80v96c0,31.4,42.17,56,96,56s96-24.6,96-56V80C224,48.6,181.83,24,128,24Zm80,104c0,9.62-7.88,19.43-21.61,26.92C170.93,163.35,150.19,168,128,168s-42.93-4.65-58.39-13.08C55.88,147.43,48,137.62,48,128V111.36c17.06,15,46.23,24.64,80,24.64s62.94-9.68,80-24.64ZM69.61,53.08C85.07,44.65,105.81,40,128,40s42.93,4.65,58.39,13.08C200.12,60.57,208,70.38,208,80s-7.88,19.43-21.61,26.92C170.93,115.35,150.19,120,128,120s-42.93-4.65-58.39-13.08C55.88,99.43,48,89.62,48,80S55.88,60.57,69.61,53.08ZM186.39,202.92C170.93,211.35,150.19,216,128,216s-42.93-4.65-58.39-13.08C55.88,195.43,48,185.62,48,176V159.36c17.06,15,46.23,24.64,80,24.64s62.94-9.68,80-24.64V176C208,185.62,200.12,195.43,186.39,202.92Z"/></svg></span><span class="fx-graph__text"><span class="fx-graph__kicker">Amal · Server</span><span class="fx-graph__title">Ariza bazaga yoziladi</span><span class="fx-graph__meta">Fox RX</span></span><span class="fx-graph__dot" data-state="ok" aria-hidden="true"></span><span class="fx-sr-only">Işlayapti</span></button></li></ul></li><li class="fx-graph__layer" data-branch="2" data-in="dashed"><span class="fx-sr-only">3-qadam</span><ul class="fx-graph__nodes"><li class="fx-graph__item" style="--x: 720px; --y: 32px" data-in="warn"><button class="fx-graph__node" type="button" data-id="n1" data-state="warn" data-tone="blue" aria-pressed="false"><span class="fx-graph__icon"><svg viewBox="0 0 256 256" aria-hidden="true"><path d="M228.88,26.19a9,9,0,0,0-9.16-1.57L17.06,103.93a14.22,14.22,0,0,0,2.43,27.21L72,141.45V200a15.92,15.92,0,0,0,10,14.83,15.91,15.91,0,0,0,17.51-3.73l25.32-26.26L165,220a15.88,15.88,0,0,0,10.51,4,16.3,16.3,0,0,0,5-.79,15.85,15.85,0,0,0,10.67-11.63L231.77,35A9,9,0,0,0,228.88,26.19Zm-61.14,36L78.15,126.35l-49.6-9.73ZM88,200V152.52l24.79,21.74Zm87.53,8L92.85,135.5l119-85.29Z"/></svg></span><span class="fx-graph__text"><span class="fx-graph__kicker">Natija · Telegram</span><span class="fx-graph__title">Menejerga xabar</span><span class="fx-graph__meta">Guli</span></span><span class="fx-graph__dot" data-state="warn" aria-hidden="true"></span><span class="fx-sr-only">Diqqat</span></button></li><li class="fx-graph__item" style="--x: 720px; --y: 152px" data-in="dashed"><button class="fx-graph__node" type="button" data-id="n2" data-state="error" data-tone="purple" data-open aria-pressed="false"><span class="fx-graph__icon"><svg viewBox="0 0 256 256" aria-hidden="true"><path d="M104,140a12,12,0,1,1-12-12A12,12,0,0,1,104,140Zm60-12a12,12,0,1,0,12,12A12,12,0,0,0,164,128Zm74.45,64.9-67,29.71a16.17,16.17,0,0,1-21.71-9.1l-8.11-22q-6.72.45-13.63.46t-13.63-.46l-8.11,22a16.18,16.18,0,0,1-21.71,9.1l-67-29.71a15.93,15.93,0,0,1-9.06-18.51L38,58A16.07,16.07,0,0,1,51,46.14l36.06-5.93a16.22,16.22,0,0,1,18.26,11.88l3.26,12.84Q118.11,64,128,64t19.4.93l3.26-12.84a16.21,16.21,0,0,1,18.26-11.88L205,46.14A16.07,16.07,0,0,1,218,58l29.53,116.38A15.93,15.93,0,0,1,238.45,192.9ZM232,178.28,202.47,62s0,0-.08,0L166.33,56a.17.17,0,0,0-.17,0l-2.83,11.14c5,.94,10,2.06,14.83,3.42A8,8,0,0,1,176,86.31a8.09,8.09,0,0,1-2.16-.3A172.25,172.25,0,0,0,128,80a172.25,172.25,0,0,0-45.84,6,8,8,0,1,1-4.32-15.4c4.82-1.36,9.78-2.48,14.82-3.42L89.83,56s0,0-.12,0h0L53.61,61.93a.17.17,0,0,0-.09,0L24,178.33,91,208a.23.23,0,0,0,.22,0L98,189.72a173.2,173.2,0,0,1-20.14-4.32A8,8,0,0,1,82.16,170,171.85,171.85,0,0,0,128,176a171.85,171.85,0,0,0,45.84-6,8,8,0,0,1,4.32,15.41A173.2,173.2,0,0,1,158,189.72L164.75,208a.22.22,0,0,0,.21,0Z"/></svg></span><span class="fx-graph__text"><span class="fx-graph__kicker">Natija · Discord</span><span class="fx-graph__title">Kanalga kartoçka</span><span class="fx-graph__meta">Fox OS</span></span><span class="fx-graph__dot" data-state="error" aria-hidden="true"></span><span class="fx-sr-only">Işlamayapti, dalil yöq</span></button><span class="fx-graph__ghost" title="Zanjir davomi yöq"><b aria-hidden="true">?</b><span class="fx-graph__ghost-t">Zanjir davomi yöq</span></span></li></ul></li></ol>
  </div></div>
</div>
```

- Qilmang: Tugun joyini qölda yozmang — graf.mjs ma'lumotdan joylaştiradi; özgarsa, çiziqlar ham özi yangilanadi.
- Qilmang: Soğ çiziqlarni rang-barang qilmang — rang faqat muammoga (diqqat va uziliş yaqqol körinsin).
- Qilmang: Holatni faqat rang bilan bermang — nuqta şakli (● ▲ ◆) va ekran öquvçi matni bor.

## Kartalar töri (`gridlist`, beta, 0.29.0 dan)

Kartalar töri (4.138, GridList): fayl menejeri, galereya, şablon tanlaş. Klaviaturada ← ↑ → ↓ joylaşuv böyiça yuradi (ustunlar soni ekran eniga qarab özgarsa ham), Home/End; Böşliq — tanlaş, Shift+strelka — oraliq, Ctrl+A — hammasi, Esc — tozalaş. Enter — karta amallariga kiradi (Oçiş, Yuklab oliş; Tab ular orasida, Esc qaytaradi), amali yöq kartada — «oçiş» hodisasi. data-select="multiple|single|none". Tanlangan karta — brend çegara va ✓ doira; holat yonidagi «N ta tanlandi» qatorida.

- Qaçon: Fayl menejeri, media galereya, hujjatlar papkasi. Rasmli şablon yoki mahsulot tanlaş.
- Qaçon emas: Köp ustunli ma'lumot → `datagrid`; Faqat körsatiladigan kartalar (tanlovsiz) → `card`; Rasm köriş (kattalaştiriş) → `lightbox`
- Variantlar: data-select=multiple|single|none (standart multiple); data-size=sm|md|lg (standart md)
- Klaviatura: ← → ↑ ↓ — Qöşni karta (joylaşuv böyiça); Home / End — Birinçi / oxirgi karta; Boʻshliq — Tanlaş / bekor qiliş; Shift + strelka — Tanlovni kengaytiriş (köp tanlov); Ctrl+A — Hammasini tanlaş; Esc — Tanlovni tozalaş; amallardan kartaga qaytiş; Enter — Karta amallariga kiriş (yöq bölsa — oçiş)
- Tokenlar: --fx-bg-brand-solid, --fx-bg-brand-subtle, --fx-bg-muted, --fx-bg-surface, --fx-border-color-focus, --fx-border-color-strong, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-ease-standard, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-bold, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-motion-fast, --fx-motion-instant, --fx-motion-press, --fx-radius-circle, --fx-radius-surface, --fx-shadow-sm, --fx-size-checkbox, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-text-on-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<p class="fx-gridlist__status" data-fx-gridlist-status="gl1" aria-live="polite"></p>
<ul class="fx-gridlist" id="gl1" data-fx-gridlist data-select="multiple" aria-label="Mijoz hujjatlari — Aziz Karimov">
  <li class="fx-gridlist__item" data-value="shartnoma-2026-045">
    <div class="fx-gridlist__media" aria-hidden="true">PDF</div>
    <div class="fx-gridlist__body"><span class="fx-gridlist__title">Şartnoma №045 — Samarqand Savdo.pdf</span><span class="fx-gridlist__meta">1,2 MB · 17-okt</span></div>
    <div class="fx-gridlist__actions"><button type="button" class="fx-btn" data-variant="ghost" data-size="sm">Oçiş</button><button type="button" class="fx-btn" data-variant="ghost" data-size="sm">Yuklab oliş</button></div>
  </li>
  <li class="fx-gridlist__item" data-value="hisobot-q3" aria-selected="true">
    <div class="fx-gridlist__media" aria-hidden="true">XLSX</div>
    <div class="fx-gridlist__body"><span class="fx-gridlist__title">3-çorak hisoboti.xlsx</span><span class="fx-gridlist__meta">840 KB · 15-okt</span></div>
    <div class="fx-gridlist__actions"><button type="button" class="fx-btn" data-variant="ghost" data-size="sm">Oçiş</button><button type="button" class="fx-btn" data-variant="ghost" data-size="sm">Yuklab oliş</button></div>
  </li>
  <li class="fx-gridlist__item" data-value="logo">
    <div class="fx-gridlist__media" aria-hidden="true">PNG</div>
    <div class="fx-gridlist__body"><span class="fx-gridlist__title">Logo — yangi variant.png</span><span class="fx-gridlist__meta">312 KB · 14-okt</span></div>
    <div class="fx-gridlist__actions"><button type="button" class="fx-btn" data-variant="ghost" data-size="sm">Oçiş</button><button type="button" class="fx-btn" data-variant="ghost" data-size="sm">Yuklab oliş</button></div>
  </li>
  <li class="fx-gridlist__item" data-value="taklif">
    <div class="fx-gridlist__media" aria-hidden="true">DOCX</div>
    <div class="fx-gridlist__body"><span class="fx-gridlist__title">Tijoriy taklif — Tong Maktabi.docx</span><span class="fx-gridlist__meta">96 KB · 12-okt</span></div>
    <div class="fx-gridlist__actions"><button type="button" class="fx-btn" data-variant="ghost" data-size="sm">Oçiş</button><button type="button" class="fx-btn" data-variant="ghost" data-size="sm">Yuklab oliş</button></div>
  </li>
  <li class="fx-gridlist__item" data-value="prays">
    <div class="fx-gridlist__media" aria-hidden="true">PDF</div>
    <div class="fx-gridlist__body"><span class="fx-gridlist__title">Prays-list, oktyabr.pdf</span><span class="fx-gridlist__meta">2,4 MB · 10-okt</span></div>
    <div class="fx-gridlist__actions"><button type="button" class="fx-btn" data-variant="ghost" data-size="sm">Oçiş</button><button type="button" class="fx-btn" data-variant="ghost" data-size="sm">Yuklab oliş</button></div>
  </li>
  <li class="fx-gridlist__item" data-value="video">
    <div class="fx-gridlist__media" aria-hidden="true">MP4</div>
    <div class="fx-gridlist__body"><span class="fx-gridlist__title">Mahsulot taqdimoti.mp4</span><span class="fx-gridlist__meta">48 MB · 2-okt</span></div>
    <div class="fx-gridlist__actions"><button type="button" class="fx-btn" data-variant="ghost" data-size="sm">Oçiş</button><button type="button" class="fx-btn" data-variant="ghost" data-size="sm">Yuklab oliş</button></div>
  </li>
</ul>
<ul class="fx-gridlist" data-fx-gridlist data-select="single" data-size="sm" aria-label="Taklif şabloni" style="margin-block-start:var(--fx-space-6)">
  <li class="fx-gridlist__item" data-value="oddiy"><div class="fx-gridlist__media" aria-hidden="true">Aa</div><div class="fx-gridlist__body"><span class="fx-gridlist__title">Oddiy</span><span class="fx-gridlist__meta">1 sahifa</span></div></li>
  <li class="fx-gridlist__item" data-value="jadval" aria-selected="true"><div class="fx-gridlist__media" aria-hidden="true">▦</div><div class="fx-gridlist__body"><span class="fx-gridlist__title">Narxlar jadvali</span><span class="fx-gridlist__meta">2 sahifa</span></div></li>
  <li class="fx-gridlist__item" data-value="taqdimot"><div class="fx-gridlist__media" aria-hidden="true">▶</div><div class="fx-gridlist__body"><span class="fx-gridlist__title">Taqdimot</span><span class="fx-gridlist__meta">8 slayd</span></div></li>
  <li class="fx-gridlist__item" data-value="shartnoma" aria-disabled="true"><div class="fx-gridlist__media" aria-hidden="true">§</div><div class="fx-gridlist__body"><span class="fx-gridlist__title">Şartnoma</span><span class="fx-gridlist__meta">Pro tarifda</span></div></li>
</ul>
```

- Qilmang: Har kartaga 3 tadan köp amal qöymang — qolganini «…» menyusiga.
- Qilmang: Kartani faqat rang bilan tanlangan qilmang — ✓ belgisi va «N ta tanlandi» matni bor.
- Qilmang: Jadvalga xos ma'lumotni (köp ustun, saralaş) kartaga solmang — datagrid yoki table.

## Sarlavha (`heading`, beta, 0.22.0 dan)

Sarlavha uslubi: display, h1–h4 vizual darajalari. Vizual daraja semantik tegga boğliq emas — <h2 data-size="h4"> mumkin. Ohang, vazn, qisqartiriş.

- Qaçon: Sahifa, bölim va karta sarlavhalari.
- Qaçon emas: Oddiy matn yoki izoh → `text`; Sahifa boşi (sarlavha + amallar) → `page-header`
- Variantlar: data-size=display|h1|h2|h3|h4 (standart h2); data-tone=secondary|brand (standart primary); data-weight=regular|medium (standart semibold); data-clamp=2|3 (standart none)
- Tokenlar: --fx-font-adjust-display, --fx-font-family-display, --fx-font-size-display-md, --fx-font-size-display-sm, --fx-font-size-lg, --fx-font-size-md, --fx-font-size-xl, --fx-font-weight-medium, --fx-font-weight-regular, --fx-font-weight-semibold, --fx-text-brand, --fx-text-primary, --fx-text-secondary

```html
<h1 class="fx-heading" data-size="display">Mijozlar bazasi</h1>
<h2 class="fx-heading" data-size="h2">Bugungi arizalar</h2>
<h2 class="fx-heading" data-size="h4" data-tone="secondary">Keça (semantik h2, vizual h4)</h2>
<h3 class="fx-heading" data-size="h3" data-truncate style="max-inline-size:16rem">Juda uzun sarlavha bir qatorga qisqartiriladi</h3>
```

- Qilmang: Tegni vizual ölçam uçun tanlamang: h1’dan h4’ga sakramang, darajani saqlang va data-size bilan kiçraytiring.
- Qilmang: Sarlavha örniga qalin <p> yozmang.

## Faollik xaritasi (`heatmap`, beta, 0.24.0 dan)

GitHub uslubidagi faollik xaritasi: har kun — bitta katak, ustunlar haftalar (Duşanbadan), 5 daraja (0–4) viz-brand soyalarida, tepada oy, çapda hafta kunlari, pastda Kam…Köp şkalasi. Boşlaniş sanasi va kunlik qiymatlar (data-start, data-values) berilsa xulq kataklarni quradi; har katak nomi va qiymati matnda (aria-label, title) — daraja rangdan taşqari ham aytiladi. Xulq foxui.js'da (data-fx-heatmap).

- Qaçon: Uzoq davr böyiça kunlik faollikni bir qaraşda körsatiş (vazifalar, maşqlar, hissalar, taşriflar).
- Qaçon emas: Aniq qiymatlar trendi → `chart`; Hodisalarni sana böyiça körsatiş → `schedule`
- Variantlar: data-size=md|sm|lg (standart md); data-level=0|1|2|3|4 (standart 0)
- Tokenlar: --fx-bg-surface, --fx-border-color-strong, --fx-border-width-default, --fx-font-size-xs, --fx-radius-badge, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-text-secondary, --fx-text-tertiary, --fx-viz-brand, --fx-viz-track

```html
<div class="fx-heatmap" data-fx-heatmap data-start="2026-06-01" data-unit="ta vazifa" aria-label="Sönggi 20 hafta: kunlik bajarilgan vazifalar" data-values="3,4,6,5,0,3,0,4,0,0,5,4,0,0,4,1,3,7,2,0,0,1,3,0,2,2,0,0,3,6,3,4,2,0,0,7,2,1,0,2,0,0,8,0,0,0,1,1,0,4,3,4,1,0,0,0,3,0,3,2,6,0,0,2,7,8,0,0,0,0,7,2,0,3,3,0,4,0,8,2,5,0,0,2,4,3,1,2,2,0,7,0,0,1,5,0,1,1,3,2,5,6,1,8,5,2,1,3,0,2,1,3,4,0,0,0,3,0,0,5,5,0,0,0,0,0,0,0,1,0,7,0,3,8,4,5,0,4,0,2"></div>

<!-- Kichik oʻlcham -->
<div class="fx-heatmap" data-size="sm" data-fx-heatmap data-start="2026-08-03" data-unit="ta maşq" aria-label="Maşqlar" data-values="3,4,6,5,0,3,0,4,0,0,5,4,0,0,4,1,3,7,2,0,0,1,3,0,2,2,0,0,3,6,3,4,2,0,0,7,2,1,0,2,0,0,8,0,0,0,1,1,0,4,3,4,1,0,0,0,3,0,3,2,6,0,0"></div>
```

- Qilmang: Darajani faqat rang bilan qoldirmang — har katakda sana va qiymat matni bor, ma'lumot jadvali yoki röyxat muqobil bölsin.
- Qilmang: 5 dan köp daraja qilmang — soyalar ajralmay qoladi.
- Qilmang: Bir neça yildan köp davrni bitta xaritaga joylamang — yil böyiça böling.
- Qilmang: Nol va ma'lumot yöq kunni aralaştirmang — ma'lumot yöq kun uçun katakni qoldirmang, 0 qiymat bering.

## «Foydali böldimi?» vidjeti (`helpful`, beta, 0.29.0 dan)

Sahifa yoki javob sifatini biliş uçun kiçik fikr vidjeti (4.199): savol va «Ha / Yöq» tugmalari (aria-pressed, ikon + söz). Tanlovdan keyin forma oçiladi — «Yöq» uçun sabab chip'lari (Tuşunarsiz, Eskirgan, Kerakli narsa yöq, Xato bor) va izoh, «Ha» uçun ixtiyoriy izoh («Nima yoqdi?»); «Yuboriş» yoki «Ötkazib yuboriş»dan keyin rahmat holati va «Fikrni özgartiriş». Xulq (data-fx-helpful): hodisa «fx-helpful» {id, value, reasons, comment}; javob localStorage'da «fx-helpful:<data-id>» — qayta kirganda yana söralmaydi (data-demo — saqlamaydi); Esc formani yopib, fokusni tugmaga qaytaradi. data-variant: bar (standart), card, inline (AI javobi ostida ixçam).

- Qaçon: Hujjat, yordam markazi va bilim bazasi sahifalari oxirida. AI javobi ostida (inline) — sifatni baholaş.
- Qaçon emas: Batafsil sörovnoma → `questionnaire`; Yulduzli baho (mahsulot, xizmat) → `rating`; AI xabari amallari (nusxa, qayta yaratiş) → `msgactions`
- Variantlar: data-variant=bar|card|inline (standart bar)
- Klaviatura: Enter, Space — «Ha» yoki «Yöq» — formani oçadi; Space (chip'da) — Sababni belgilaydi; Esc (formada) — Formani yopadi, fokus tugmaga qaytadi
- Tokenlar: --fx-bg-brand-solid, --fx-bg-brand-subtle, --fx-bg-subtle, --fx-bg-success-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-strong, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-md, --fx-control-h-sm, --fx-ease-enter, --fx-ease-spring, --fx-ease-standard, --fx-fg-success, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-regular, --fx-font-weight-semibold, --fx-motion-base, --fx-motion-fast, --fx-motion-press, --fx-radius-badge, --fx-radius-circle, --fx-radius-control, --fx-radius-pill, --fx-radius-surface, --fx-size-icon-md, --fx-size-icon-sm, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-space-6, --fx-text-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<section class="fx-helpful" data-fx-helpful data-id="hujjat/tokenlar" data-demo aria-labelledby="hp-q">
  <div class="fx-helpful__ask">
    <p class="fx-helpful__question" id="hp-q">Bu sahifa foydali böldimi?</p>
    <div class="fx-helpful__choices" role="group" aria-labelledby="hp-q"><button class="fx-helpful__choice" type="button" data-helpful="yes" aria-pressed="false"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 11v9H4v-9zM7 11l4-8a2 2 0 0 1 2 2v4h5.5a2 2 0 0 1 2 2.3l-1.3 7A2 2 0 0 1 17.2 20H7"/></svg>Ha</button><button class="fx-helpful__choice" type="button" data-helpful="no" aria-pressed="false"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path transform="rotate(180 12 12)" d="M7 11v9H4v-9zM7 11l4-8a2 2 0 0 1 2 2v4h5.5a2 2 0 0 1 2 2.3l-1.3 7A2 2 0 0 1 17.2 20H7"/></svg>Yöq</button></div>
  </div>
  <form class="fx-helpful__form" aria-label="Fikringiz" hidden>
    <fieldset class="fx-helpful__reasons" data-helpful-for="no"><legend>Nima yetişmadi?</legend><label class="fx-helpful__reason"><input type="checkbox" name="sabab" value="tushunarsiz">Tuşunarsiz</label><label class="fx-helpful__reason"><input type="checkbox" name="sabab" value="eskirgan">Eskirgan</label><label class="fx-helpful__reason"><input type="checkbox" name="sabab" value="yoq">Kerakli narsa yöq</label><label class="fx-helpful__reason"><input type="checkbox" name="sabab" value="xato">Xato bor</label></fieldset>
    <label class="fx-field" data-helpful-for="no"><span class="fx-label">Qanday yaxşilasak böladi? (ixtiyoriy)</span><textarea class="fx-textarea" rows="3" maxlength="500" placeholder="Masalan: qorongʻi mavzu uchun misol qoʻshing"></textarea></label>
    <label class="fx-field" data-helpful-for="yes"><span class="fx-label">Nima yoqdi? (ixtiyoriy)</span><textarea class="fx-textarea" rows="2" maxlength="500"></textarea></label>
    <div class="fx-helpful__actions"><button class="fx-btn" data-variant="primary" data-size="sm" type="submit">Yuboriş</button><button class="fx-btn" data-variant="ghost" data-size="sm" type="button" data-helpful-skip>Ötkazib yuboriş</button><p class="fx-helpful__note">Şaxsiy ma'lumot yozmang — izoh anonim.</p></div>
  </form>
  <p class="fx-helpful__thanks" role="status" hidden><strong>Rahmat!</strong> Fikringiz hujjatni yaxşilaşga yordam beradi. <button class="fx-helpful__again" type="button" data-helpful-again>Fikrni özgartiriş</button></p>
</section>
<div class="fx-helpful" data-fx-helpful data-id="ai/javob-4821" data-demo data-variant="inline" style="margin-block-start: var(--fx-space-10)">
  <div class="fx-helpful__ask"><p class="fx-helpful__question" id="hp-q2">Javob foydali böldimi?</p><div class="fx-helpful__choices" role="group" aria-labelledby="hp-q2"><button class="fx-helpful__choice" type="button" data-helpful="yes" aria-pressed="false" aria-label="Ha, foydali"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 11v9H4v-9zM7 11l4-8a2 2 0 0 1 2 2v4h5.5a2 2 0 0 1 2 2.3l-1.3 7A2 2 0 0 1 17.2 20H7"/></svg></button><button class="fx-helpful__choice" type="button" data-helpful="no" aria-pressed="false" aria-label="Yöq, foydali emas"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path transform="rotate(180 12 12)" d="M7 11v9H4v-9zM7 11l4-8a2 2 0 0 1 2 2v4h5.5a2 2 0 0 1 2 2.3l-1.3 7A2 2 0 0 1 17.2 20H7"/></svg></button></div></div>
  <p class="fx-helpful__thanks" role="status" hidden>Rahmat, qayd etildi.</p>
</div>
```

- Qilmang: Har abzats ostiga qöymang — sahifa yoki javob oxirida bitta.
- Qilmang: «Yöq»dan keyin majburiy izoh söramang — sabab chip'lari yetadi, izoh ixtiyoriy.
- Qilmang: Rahmat holatisiz qoldirmang — bosilgani qabul qilinganini körsin.
- Qilmang: Izohdan şaxsiy ma'lumot yiğmang — buni oçiq ayting.

## Hero bölimi (`hero`, beta, 0.28.0 dan)

Landingning birinçi ekrani (4.170): yangilik tabletkasi (eyebrow), katta sarlavha (urğu söz mavzu gradientida yoki aylanuvçi söz — textfx), bir-ikki gaplik izoh, ikki tugma, işonç qatori (✓ belgili qisqa da'volar) va katta media (skrinşot, terminal, jonli UI). data-layout: center (standart) yoki split (matn çapda, media öngda). Orqa fon — içidagi .fx-bg (katak/nuqta + mavzu nuri). Kirişda bloklar poğonali kötariladi; data-tilt bilan media scroll paytida egiklikdan tikka turadi (qöllamaydigan brauzerda — tekis). Sarlavha ölçami ekran eniga qarab silliq ösadi.

- Qaçon: Landing yoki mahsulot sahifasining birinçi ekrani. Yangi relizni e'lon qiliş sahifasi (eyebrow + media).
- Qaçon emas: Ilova içidagi sahifa sarlavhasi → `page-header`; Sahifa oxiridagi çaqiriq → `cta`
- Variantlar: data-layout=split (standart center); data-size=compact (standart default); data-tilt=on (standart off)
- Tokenlar: --fx-bg-brand-solid, --fx-bg-category-coral, --fx-bg-category-pink, --fx-bg-page, --fx-bg-surface, --fx-border-color-default, --fx-border-color-surface, --fx-border-width-default, --fx-dialog-width, --fx-duration-stagger, --fx-ease-emphasized, --fx-fg-success, --fx-font-adjust-display, --fx-font-family-display, --fx-font-size-display-md, --fx-font-size-display-sm, --fx-font-size-lg, --fx-font-size-sm, --fx-font-size-xl, --fx-font-weight-semibold, --fx-knob-motion, --fx-motion-shift-lg, --fx-motion-slower, --fx-radius-overlay, --fx-shadow-lg, --fx-size-icon-sm, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-space-6, --fx-space-8, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<section class="fx-hero" data-tilt aria-labelledby="hero-t">
  <div class="fx-bg" data-pattern="grid" data-glow aria-hidden="true"></div>
  <div class="fx-hero__content">
    <p class="fx-hero__eyebrow"><span class="fx-phase" data-phase="preview" data-variant="pill"><strong class="fx-phase__tag">Yangi</strong><span class="fx-phase__text">Effektlar va marketing naqşlari — <a href="#">nima yangi</a></span></span></p>
    <h1 class="fx-hero__title" id="hero-t">Dizayn tizimi — <span class="fx-hero__accent">özbekça</span>, töğridan-töğri kodda</h1>
    <p class="fx-hero__text">Komponentlar, tokenlar va qoidalar bitta paketda. Mavzu va uslubni bitta atribut bilan tanlaysiz, yangilaniş taklif bölib keladi, AI agent esa qoidalarni MCP orqali özi oladi.</p>
    <div class="fx-hero__actions"><a class="fx-btn" data-variant="primary" data-size="lg" href="#">Bepul boşlaş</a><a class="fx-btn" data-size="lg" href="#">Hujjatlarni köriş</a></div>
    <ul class="fx-hero__note"><li>Oçiq yadro npm'da</li><li>Figma şart emas</li><li>1 litsenziya — 3 qurilma</li></ul>
  </div>
  <div class="fx-hero__media">
    <div class="fx-terminal" data-fx-terminal data-fx-scheme="dark" data-dots="color" role="figure" aria-label="FoxUI'ni örnatiş"><div class="fx-terminal__bar"><span class="fx-terminal__dots" aria-hidden="true"><i></i><i></i><i></i></span><p class="fx-terminal__title">~/dökon-sayti</p></div><pre class="fx-terminal__body"><span class="fx-terminal__line" data-kind="cmd">npx foxui init</span><span class="fx-terminal__line" data-kind="out">Mavzu: amethyst · Uslub: Aylana</span><span class="fx-terminal__line" data-kind="ok">Tayyor — komponentlar va qoidalar ulandi</span></pre></div>
  </div>
</section>
```

- Qilmang: Hero blokiga uçtadan ortiq tugma qöymang — bitta asosiy, bitta ikkinçi darajali.
- Qilmang: Sarlavhani uzun qilmang — 6–10 söz; tafsilot izohda.
- Qilmang: Bir hero blokida aylanuvçi söz, yozuv maşinkasi va çegara nurini birga işlatmang — bitta urğu.
- Qilmang: Media örniga bezak rasmini qöymang — mahsulotning özini körsating.

## Gologramma karta (`holo`, experimental, 0.54.0 dan)

A'zolik, sodiqlik va sovğa kartasi, çipta yoki kolleksiya uçun «jonli» karta: kursor ortidan 3D egiladi (mavjud xulq data-fx-tilt), yuzasida kamalak folga (pastel tokenlardan) va kursor ortidagi nur, ingiçka içki çegara va naqş (panjara, çiziq, nuqta). Fon — mavzuning brend rangi (standart), töq yoki yoruğ; şakl — bank kartasi (1,586) yoki çipta (data-shape="tall"); rasm bilan — .fx-holo__media. Telefonda va harakat kamaytirilganda egilmaydi, folga sekin suzadi (heroui.pro Holo Card'dan ilhom, kalibr — FoxUI).

- Qaçon: A'zolik/sodiqlik kartasi, sovğa sertifikati, tadbir çiptasi, yutuq yoki kolleksiya kartasi. Landing sahifasidagi «premium» taklif (Founders, VIP).
- Qaçon emas: Oddiy mazmunli karta → `card`; Egiluvçi har qanday karta (gologrammasiz) → `tilt`
- Variantlar: data-variant=dark|light (standart brand); data-pattern=lines|dots (standart lattice); data-shape=tall (standart card)
- Tokenlar: --fx-border-width-default, --fx-color-brand-600, --fx-color-brand-900, --fx-color-neutral-200, --fx-color-neutral-25, --fx-color-neutral-700, --fx-color-neutral-800, --fx-color-neutral-950, --fx-color-pastel-blue, --fx-color-pastel-green, --fx-color-pastel-pink, --fx-color-pastel-purple, --fx-color-pastel-yellow, --fx-color-white, --fx-duration-pulse, --fx-ease-standard, --fx-font-adjust-display, --fx-font-adjust-mono, --fx-font-family-display, --fx-font-family-mono, --fx-font-size-lg, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-bold, --fx-font-weight-semibold, --fx-motion-base, --fx-radius-control, --fx-radius-overlay, --fx-radius-tag, --fx-shadow-lg, --fx-space-1, --fx-space-10, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-tilt-gx, --fx-tilt-gy

```html
<div style="display:flex;flex-wrap:wrap;gap:var(--fx-space-6);align-items:center;padding:var(--fx-space-4)">
<article class="fx-holo" data-fx-tilt data-max="12" aria-label="Oltin a'zolik kartasi">
  <i class="fx-holo__pattern" aria-hidden="true"></i>
  <div class="fx-holo__top"><span class="fx-holo__brand">Çorsu Club</span><span class="fx-holo__tier">Oltin</span></div>
  <span class="fx-holo__chip" aria-hidden="true"></span>
  <div class="fx-holo__bottom"><span class="fx-holo__owner"><span>A'zo</span><b>Aziz Karimov</b></span><span class="fx-holo__number">0427 1985</span></div>
</article>
<article class="fx-holo" data-variant="dark" data-pattern="lines" data-fx-tilt data-max="12" aria-label="Sovğa kartasi">
  <i class="fx-holo__pattern" aria-hidden="true"></i>
  <div class="fx-holo__top"><span class="fx-holo__brand">Sovğa kartasi</span><span class="fx-holo__tier">500 000</span></div>
  <div class="fx-holo__bottom"><span class="fx-holo__owner"><span>Amal qiladi</span><b>31.12.2026</b></span><span class="fx-holo__number">GC-8841</span></div>
</article>
<article class="fx-holo" data-shape="tall" data-pattern="dots" data-fx-tilt data-max="14" aria-label="Tadbir çiptasi">
  <i class="fx-holo__pattern" aria-hidden="true"></i>
  <div class="fx-holo__top"><span class="fx-holo__brand">IT Park Fest</span><span class="fx-holo__tier">VIP</span></div>
  <div class="fx-holo__bottom"><span class="fx-holo__owner"><span>24-noyabr · 18:00</span><b>Toşkent</b></span><span class="fx-holo__number">A-12</span></div>
</article>
</div>
```

- Qilmang: Har sahifaga qöymang — bu «wow» element: profil, a'zolik yoki sovğa ekranida bitta.
- Qilmang: Karta raqami va muddatini faqat rang bilan ajratmang — yorliq yozing.
- Qilmang: Ustiga uzun matn yozmang: nom, daraja, egasi va raqam yetarli.

## Hover karta (`hovercard`, beta, 0.28.0 dan)

Ism, havola yoki avatar ustida keçikiş bilan çiqadigan kartoçka (4.149): mijoz profili, bitim qisqaçasi, havola oldindan körinişi. Siçqonça va klaviatura fokusida oçiladi, karta ustida turganda yopilmaydi, Esc yopadi; ekran çetiga qarab nişon ostida yoki tepasida joylaşadi.

- Qaçon: Röyxat yoki matndagi odam, kompaniya, bitim nomi ustida qisqa tafsilot — sahifadan çiqmasdan.
- Qaçon emas: Bir qator izoh → `tip`; Bosilganda oçiladigan, amal bor qatlam → `popover`
- Variantlar: data-side=bottom|top (standart bottom)
- Klaviatura: Tab (fokus) — Qisqa keçikişdan keyin karta oçiladi; Esc — Kartani yopadi
- Tokenlar: --fx-bg-surface, --fx-border-color-default, --fx-border-color-surface, --fx-border-width-default, --fx-ease-enter, --fx-ease-exit, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-semibold, --fx-motion-base, --fx-motion-exit-fast, --fx-motion-shift-sm, --fx-popover-width, --fx-radius-overlay, --fx-shadow-lg, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-8, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<p>Mas'ul: <a class="fx-link" href="#" data-fx-hovercard="hc-aziz">Aziz Karimov</a> · bitim №214</p>
<div class="fx-hovercard" id="hc-aziz" popover="manual">
  <div class="fx-hovercard__head"><span class="fx-avatar" data-color="blue" role="img" aria-label="Aziz Karimov">AK</span><div><p class="fx-hovercard__title">Aziz Karimov</p><span class="fx-hovercard__sub">Savdo menejeri · Toşkent filiali</span></div></div>
  <p class="fx-hovercard__body">Faol bitimlar: 12 ta, bu oy yopilgan — 5 ta. Oxirgi qönğiroq bugun 11:20 da.</p>
  <div class="fx-hovercard__foot"><span>+998 90 123 45 67</span><span>aziz@savdo.uz</span></div>
</div>
```

- Qilmang: Muhim amal yoki ma'lumotni faqat hover kartaga qöymang — telefonda hover yöq; nişon bosilganda töliq sahifa oçilsin.
- Qilmang: Kartaga forma va köp tugma joylamang — bu oldindan köriş; amal kerak bölsa popover yoki dialog.
- Qilmang: Keçikişni olib taşlamang — siçqonça ötib ketganda karta miltillamasin.

## Ikon (`icon`, beta, 0.22.0 dan)

Sprite ikoni uçun öram: ölçam (sm/md/lg/xl/em), ohang va töldirilgan holat. <svg class="fx-icon"><use href="#id"/></svg>; rang matndan olinadi. Optik sozlamalar (4.21): qalinlik data-weight light/regular/bold (yoki --fx-icon-stroke; ota blokda data-icon-weight) — çiziqli ikonlar uçun, viewBox'dan qat'i nazar bir xil; data-grade high/low — töldirilgan ikonni qalinlaştiradi/ingiçkalaştiradi; kontur/töldirilgan juftligi data-fill="auto" — tanlangan holatda (aria-pressed, aria-selected, aria-current, aria-checked) töldirilgani körinadi.

- Qaçon: Sprite (<symbol>/<use>) ikonini bir xil ölçam va rangda çiqariş.
- Qaçon emas: Faqat ikonkali tugma → `button`
- Variantlar: data-size=sm|md|lg|xl|em (standart md); data-tone=muted|secondary|brand|info|success|warning|error (standart inherit); data-weight=none|light|regular|bold|custom (standart none); data-grade=normal|high|low (standart normal); data-fill=off|auto|on (standart off)
- Tokenlar: --fx-bg-surface, --fx-fg-error, --fx-fg-info, --fx-fg-success, --fx-fg-warning, --fx-size-icon-lg, --fx-size-icon-md, --fx-size-icon-sm, --fx-text-brand, --fx-text-secondary, --fx-text-tertiary

```html
<svg class="fx-icon" data-size="sm" aria-hidden="true" viewBox="0 0 24 24"><circle cx="12" cy="12" r="9"/><path d="M12 8v5M12 16v.5" stroke-linecap="round"/></svg>
<svg class="fx-icon" data-tone="success" aria-hidden="true" viewBox="0 0 24 24"><circle cx="12" cy="12" r="9"/><path d="M8 12.5l3 3 5-6" stroke-linecap="round" stroke-linejoin="round"/></svg>
<svg class="fx-icon" data-size="lg" data-tone="error" data-filled role="img" aria-label="Xato" viewBox="0 0 24 24"><circle cx="12" cy="12" r="9"/></svg>
<!-- Optik sozlamalar (4.21): qalinlik, grade, kontur/toʻldirilgan juftligi -->
<div class="fx-cluster" data-gap="3" style="margin-block-start: var(--fx-space-4)">
  <svg class="fx-icon" data-size="lg" data-weight="light" aria-hidden="true" viewBox="0 0 24 24"><circle cx="12" cy="12" r="9"/><path d="M12 7v5l3 2" stroke-linecap="round"/></svg>
  <svg class="fx-icon" data-size="lg" data-weight="regular" aria-hidden="true" viewBox="0 0 24 24"><circle cx="12" cy="12" r="9"/><path d="M12 7v5l3 2" stroke-linecap="round"/></svg>
  <svg class="fx-icon" data-size="lg" data-weight="bold" aria-hidden="true" viewBox="0 0 24 24"><circle cx="12" cy="12" r="9"/><path d="M12 7v5l3 2" stroke-linecap="round"/></svg>
  <svg class="fx-icon" data-size="lg" data-grade="high" aria-hidden="true" viewBox="0 0 24 24"><circle cx="12" cy="12" r="6" fill="currentColor"/></svg>
  <button class="fx-btn" data-variant="ghost" type="button" aria-pressed="true" onclick="this.setAttribute('aria-pressed', this.getAttribute('aria-pressed') !== 'true')">
    <svg class="fx-icon" data-fill="auto" data-weight="regular" aria-hidden="true" viewBox="0 0 24 24"><g class="fx-icon__line"><path d="M12 3.5l2.6 5.3 5.9.9-4.3 4.1 1 5.8-5.2-2.7-5.2 2.7 1-5.8-4.3-4.1 5.9-.9z" stroke-linejoin="round"/></g><g class="fx-icon__fill"><path d="M12 3.5l2.6 5.3 5.9.9-4.3 4.1 1 5.8-5.2-2.7-5.2 2.7 1-5.8-4.3-4.1 5.9-.9z" fill="currentColor" stroke-linejoin="round"/></g></svg>
    Sevimli mijoz
  </button>
</div>
```

- Qilmang: Ma'noli ikonni nomsiz qoldirmang: yolğiz bölsa role="img" + aria-label.
- Qilmang: Ikonni rang bilan yolğiz ma'no qilmang — yoniga matn qöying.
- Qilmang: data-weight'ni töldirilgan (Phosphor) ikonga bermang — u çiziqli ikonlar uçun; töldirilganga data-grade.

## Rasm (`image`, beta, 0.24.0 dan)

Nisbati belgilangan rasm: yuklangunça xira joy (blur yoki kulrang), yuklanmasa zaxira holat («Rasm yuklanmadi»), ixtiyoriy imzo. Nisbat (CLS yöq) — data-ratio. Xulq ildizga data-state="loading|loaded|error" qöyadi. Xira joy rasmi — ildizda --fx-image-blur: url(...).

- Qaçon: Rasm sahifada joy egallaşi, yuklanişi sekin bölişi yoki yuklanmay qolişi mumkin bölganda.
- Qaçon emas: Odam yoki guruh surati → `avatar`; Bir neçta rasm töri → `gallery`
- Variantlar: data-ratio=auto|1/1|4/3|3/2|16/9|3/4|9/16 (standart auto); data-placeholder=none|blur (standart none); data-fit=cover|contain (standart cover); data-size=auto|xs|sm|md (standart auto)
- Tokenlar: --fx-bg-muted, --fx-ease-standard, --fx-font-size-sm, --fx-motion-base, --fx-motion-slow, --fx-radius-control, --fx-radius-surface, --fx-size-icon-lg, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-4, --fx-text-secondary

```html
<figure class="fx-image" data-ratio="16/9" data-placeholder="blur" data-fx-image style="max-inline-size: 28rem">
  <div class="fx-image__frame">
    <img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23e8875a%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23c2410c%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EBozor%3C%2Ftext%3E%3C%2Fsvg%3E" alt="Çorsu bozoridagi yangi mevalar rastasi" loading="lazy">
    <div class="fx-image__fallback" role="img" aria-label="Rasm yuklanmadi">Rasm yuklanmadi</div>
  </div>
  <figcaption class="fx-image__caption">Çorsu bozori, ertalabki savdo</figcaption>
</figure>
<figure class="fx-image" data-ratio="4/3" data-fx-image style="max-inline-size: 16rem">
  <div class="fx-image__frame">
    <img src="/yoq-rasm.jpg" alt="Ombor içki körinişi">
    <div class="fx-image__fallback">Rasm yuklanmadi</div>
  </div>
</figure>
<div style="display: flex; align-items: center; gap: var(--fx-space-3)">
  <figure class="fx-image" data-size="sm" data-ratio="4/3"><div class="fx-image__frame"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23e8875a%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23c2410c%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EBozor%3C%2Ftext%3E%3C%2Fsvg%3E" alt="Muqova"></div></figure>
  <span>Çorsu bozori — kiçik muqova (data-size="sm", 4/3)</span>
</div>
```

- Qilmang: Alt matnni böş qoldirmang (bezak rasmida alt="" böladi, mazmunli rasmda ta'rif).
- Qilmang: Nisbatsiz rasm qöymang — yuklanganda sahifa sakramasin.

## Rasm kesiş (`imagecrop`, beta, 0.28.0 dan)

Avatar yoki muqova uçun rasmni kesiş: rasm ramka içida suriladi (siçqonça, barmoq, strelkalar) va kattalaştiriladi (slider, ğildirak, ikki barmoq, + −). Rasm ramkani doim töliq qoplaydi. Doira (avatar) yoki nisbat (1, 4/3, 3/4, 16/9); natija — canvas'dan JPEG Blob va kesiş törtburçagi.

- Qaçon: Profil rasmi (doira), kurs/mahsulot muqovasi (16/9, 4/3) yuklaşda. Rasm aniq nisbatda bölişi şart bölgan joy (kartoçka, banner).
- Qaçon emas: Rasmni faqat yuklaş, kesmasdan → `dropzone`; Rasmni kattalaştirib köriş → `lightbox`
- Variantlar: data-shape=rect|circle (standart rect); data-aspect=1|4/3|3/4|16/9 (standart 1)
- Klaviatura: ← → ↑ ↓ — Rasmni suradi (Shift — katta qadam); + / − — Kattalaştiradi / kiçraytiradi; 0 — Boşlanğiç holat; Tab — Slider va tugmalarga
- Tokenlar: --fx-bg-muted, --fx-bg-overlay, --fx-bg-static-light, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-sm, --fx-ease-standard, --fx-font-size-lg, --fx-font-size-sm, --fx-font-size-xs, --fx-motion-fast, --fx-motion-instant, --fx-motion-press, --fx-radius-circle, --fx-radius-control, --fx-radius-surface, --fx-size-avatar-lg, --fx-size-icon-sm, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-6, --fx-text-disabled, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<div class="fx-imagecrop" data-fx-imagecrop data-shape="circle" data-output="400">
  <div class="fx-imagecrop__stage" tabindex="0" role="group" aria-roledescription="rasm kesiş maydoni" aria-label="Profil rasmi" aria-describedby="ic-h">
    <img class="fx-imagecrop__img" src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1200' height='800' viewBox='0 0 1200 800'%3E%3Cdefs%3E%3ClinearGradient id='s' x1='0' y1='0' x2='0' y2='1'%3E%3Cstop offset='0' stop-color='lightsteelblue'/%3E%3Cstop offset='1' stop-color='lavender'/%3E%3C/linearGradient%3E%3C/defs%3E%3Crect width='1200' height='800' fill='url%28%23s%29'/%3E%3Ccircle cx='930' cy='190' r='90' fill='gold'/%3E%3Cpath d='M0 560 Q300 420 600 540 T1200 500 V800 H0z' fill='darkseagreen'/%3E%3Cpath d='M0 650 Q400 560 800 660 T1200 640 V800 H0z' fill='seagreen'/%3E%3Ccircle cx='560' cy='380' r='95' fill='peru'/%3E%3Cpath d='M410 800 Q420 520 560 500 Q700 520 710 800z' fill='steelblue'/%3E%3C/svg%3E" alt="">
    <div class="fx-imagecrop__frame" aria-hidden="true"></div>
  </div>
  <p class="fx-imagecrop__help" id="ic-h">Suring yoki strelkalar bilan joylang; + va − — kattalaştiriş, 0 — boşlanğiç holat.</p>
  <div class="fx-imagecrop__controls">
    <button class="fx-imagecrop__btn" type="button" data-crop="out" aria-label="Kiçraytiriş">−</button>
    <input class="fx-slider" type="range" value="1" aria-label="Kattalaştiriş" data-fx-slider>
    <button class="fx-imagecrop__btn" type="button" data-crop="in" aria-label="Kattalaştiriş">+</button>
    <button class="fx-imagecrop__btn" type="button" data-crop="reset" aria-label="Boşlanğiç holat"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M4 10a6 6 0 1 0 2-4.5M4 3v3h3" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
  </div>
  <div class="fx-imagecrop__actions">
    <label class="fx-btn fx-imagecrop__file" data-variant="ghost">Boşqa rasm<input type="file" accept="image/*"></label>
    <button class="fx-btn" type="button" data-variant="primary" data-crop="apply">Saqlaş</button>
  </div>
  <div class="fx-imagecrop__result" hidden aria-live="polite"><img alt="Kesilgan profil rasmi">Yangi rasm tayyor</div>
</div>
<div class="fx-imagecrop" data-fx-imagecrop data-aspect="16/9" data-output="1280">
  <div class="fx-imagecrop__stage" tabindex="0" role="group" aria-roledescription="rasm kesiş maydoni" aria-label="Kurs muqovasi"><img class="fx-imagecrop__img" src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1200' height='800' viewBox='0 0 1200 800'%3E%3Cdefs%3E%3ClinearGradient id='s' x1='0' y1='0' x2='0' y2='1'%3E%3Cstop offset='0' stop-color='lightsteelblue'/%3E%3Cstop offset='1' stop-color='lavender'/%3E%3C/linearGradient%3E%3C/defs%3E%3Crect width='1200' height='800' fill='url%28%23s%29'/%3E%3Ccircle cx='930' cy='190' r='90' fill='gold'/%3E%3Cpath d='M0 560 Q300 420 600 540 T1200 500 V800 H0z' fill='darkseagreen'/%3E%3Cpath d='M0 650 Q400 560 800 660 T1200 640 V800 H0z' fill='seagreen'/%3E%3Ccircle cx='560' cy='380' r='95' fill='peru'/%3E%3Cpath d='M410 800 Q420 520 560 500 Q700 520 710 800z' fill='steelblue'/%3E%3C/svg%3E" alt=""><div class="fx-imagecrop__frame" aria-hidden="true"></div></div>
  <div class="fx-imagecrop__controls"><button class="fx-imagecrop__btn" type="button" data-crop="out" aria-label="Kiçraytiriş">−</button><input class="fx-slider" type="range" value="1" aria-label="Kattalaştiriş" data-fx-slider><button class="fx-imagecrop__btn" type="button" data-crop="in" aria-label="Kattalaştiriş">+</button></div>
</div>
```

- Qilmang: Rasmni ramkadan çiqib böş joy qoldiradigan qilib surişga ruxsat bermang — xulq çegaralaydi.
- Qilmang: Kesişni faqat siçqonça bilan qilmang — strelkalar va + − ham işlaydi, yordam matni bilan.
- Qilmang: Boşqa domendagi (CORS'siz) rasmni kesmang — canvas ifloslanadi; avval yuklab, blob'dan oçing.

## CSV import (`import`, beta, 0.28.0 dan)

CSV import ustasi (naqş, fx-wizard ustiga): 1) fayl — taşlaş yoki tanlaş (vergul yoki nuqtali vergul özi aniqlanadi), 2) ustunlarni maydonlarga moslaş — nomi böyiça avtomatik taxmin, majburiy maydonlar ✓ bilan, 3) tekşiruv — tayyor / xatoli / takror soni va xatolar jadvali (qator, maydon, qiymat, muammo), keyin import va natija (xatolar hisobotini CSV qilib yuklab oliş).

- Qaçon: CRM'ga mijozlar, mahsulotlar yoki buyurtmalarni Excel/CSV'dan köçiriş. Boşqa tizimdan ötişda (migratsiya) bir martalik katta import.
- Qaçon emas: Bitta fayl biriktiriş (rasm, hujjat) → `dropzone`; Bir neçta yozuvni qölda kiritiş → `datagrid`
- Variantlar: data-state=done (standart —)
- Klaviatura: Tab — Fayl tanlaş, moslaş select'lari va tugmalar böylab; Enter — Keyingi qadam (oxirgi qadamda — import)
- Tokenlar: --fx-bg-surface, --fx-border-color-default, --fx-border-color-error, --fx-border-color-focus, --fx-border-color-strong, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-md, --fx-dialog-width, --fx-fg-success, --fx-fg-warning, --fx-font-adjust-mono, --fx-font-family-mono, --fx-font-size-lg, --fx-font-size-sm, --fx-font-size-xl, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-radius-badge, --fx-radius-control, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-text-brand, --fx-text-error, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<form class="fx-wizard fx-import" data-fx-wizard data-fx-importer data-fields='[{"key":"ism","label":"Ism familiya","required":true,"match":["fish","fio","ism","name","mijoz"]},{"key":"telefon","label":"Telefon","required":true,"type":"phone","match":["tel","phone","raqam"]},{"key":"email","label":"Email","type":"email","match":["pochta","mail"]},{"key":"shahar","label":"Şahar","match":["city","viloyat","hudud"]},{"key":"summa","label":"Bitim summasi","type":"number","match":["amount","narx","summa"]}]'>
  <ol class="fx-steps" aria-label="Mijozlarni import qiliş">
    <li class="fx-steps__item" aria-current="step"><span class="fx-steps__label">Fayl</span></li>
    <li class="fx-steps__item"><span class="fx-steps__label">Ustunlar</span></li>
    <li class="fx-steps__item"><span class="fx-steps__label">Tekşiruv</span></li>
  </ol>
  <section class="fx-wizard__panel">
    <h2 class="fx-wizard__title">Mijozlar faylini yuklang</h2>
    <label class="fx-dropzone" data-fx-dropzone>
      <input type="file" accept=".csv,text/csv" required aria-describedby="im-h">
      <span class="fx-dropzone__title">CSV faylni şu yerga taşlang yoki tanlang</span>
      <span class="fx-dropzone__hint" id="im-h">Birinçi qator — ustun nomlari. 10 000 qatorgaça, UTF-8.</span>
    </label>
    <p class="fx-import__file" hidden aria-live="polite"></p>
    <p class="fx-import__hint">Fayl yöqmi? <button class="fx-import__link" type="button" data-import-sample>Namuna fayl bilan sinab köring</button> yoki <a href="#">şablonni yuklab oling</a>.</p>
    <template data-import-sample-data>F.I.Sh;Tel;E-poçta;Şahar;Summa;Izoh
Dilnoza Rahimova;+998 93 512 40 18;dilnoza@misol.uz;Toşkent;12 500 000;Yillik tarif
Bobur Toshmatov;90 123 45 67;bobur@misol.uz;Samarqand;4 200 000;
Madina Yusupova;+998 97 700 11 22;madina[at]misol.uz;Fargʻona;3 900 000;Qayta qönğiroq
;+998 91 222 33 44;;Andijon;1 500 000;Ism yozilmagan
Jasur Abdullayev;+998 90 555 66 77;jasur@misol.uz;Toşkent;8 750 000;
Sardor Qodirov;12345;sardor@misol.uz;Buxoro;2 000 000;Telefon xato
Nilufar Karimova;+998 93 512 40 18;nilufar@misol.uz;Toşkent;6 300 000;Takror telefon
Aziz Ergashev;+998 95 400 80 90;aziz@misol.uz;Namangan;5 100 000;
Gulnora Saidova;+998 99 811 23 45;gulnora@misol.uz;Qarşi;2 750 000;
Otabek Nazarov;+998 88 300 12 12;otabek@misol.uz;Toşkent;11 000 000;Korporativ</template>
  </section>
  <section class="fx-wizard__panel" hidden>
    <h2 class="fx-wizard__title">Ustunlarni moslang</h2>
    <p class="fx-wizard__text">Ustun nomlariga qarab taxmin qildik — tekşirib çiqing. Keraksiz ustunni «Ötkazib yuboriş» qiling.</p>
    <ul class="fx-import__required" aria-label="Majburiy maydonlar"></ul>
    <div class="fx-table-scroll"><table class="fx-table fx-import__map" data-density="compact"><thead><tr><th scope="col">Fayldagi ustun</th><th scope="col">Namuna</th><th scope="col"><span class="fx-sr-only">→</span></th><th scope="col">CRM maydoni</th></tr></thead><tbody></tbody></table></div>
  </section>
  <section class="fx-wizard__panel" hidden>
    <h2 class="fx-wizard__title">Tekşiruv natijasi</h2>
    <dl class="fx-import__stats" aria-live="polite"></dl>
    <div class="fx-table-scroll fx-import__errors"><table class="fx-table" data-density="compact"><caption class="fx-sr-only">Xatoli qatorlar</caption><thead><tr><th scope="col" data-type="num">Qator</th><th scope="col">Maydon</th><th scope="col">Qiymat</th><th scope="col">Muammo</th></tr></thead><tbody></tbody></table></div>
    <label class="fx-check"><input type="checkbox" data-import-skip checked><span class="fx-check__box"></span>Xatoli va takror qatorlarni ötkazib yuboriş</label>
  </section>
  <div class="fx-wizard__footer">
    <button class="fx-btn" data-variant="ghost" type="button" data-wizard="prev">Orqaga</button>
    <span class="fx-wizard__status" data-wizard-status></span>
    <button class="fx-btn" type="button" data-wizard="next">Keyingi</button>
    <button class="fx-btn" type="submit" data-variant="primary" data-wizard="submit">Import qiliş</button>
  </div>
  <div class="fx-import__done" hidden>
    <h2 class="fx-import__done-title">Import tugadi</h2>
    <p class="fx-wizard__text" data-import-count></p>
    <div style="display:flex;gap:var(--fx-space-2);flex-wrap:wrap"><a class="fx-btn" data-variant="primary" href="#">Mijozlarga ötiş</a><a class="fx-btn" data-import-report hidden>Xatolar röyxatini yuklab oliş (CSV)</a></div>
  </div>
</form>
```

- Qilmang: Faylni moslaştirmasdan töğridan import qilmang — ustun nomlari har xil böladi, foydalanuvçi körib tasdiqlasin.
- Qilmang: Xatoli qatorlar sababi bilan körsatilsin (qator raqami, maydon, qiymat, muammo) — «12 ta xato» degan umumiy son yetmaydi.
- Qilmang: Butun importni bitta xato uçun töxtatmang — «xatolilarni ötkazib yuboriş» va xatolar hisobotini bering.

## Kiruvçilar (`inbox`, beta, 0.23.0 dan)

Kiruvçi xabarlar röyxati (inbox): kun böyiça guruhlangan qatorlar — öqilmagan nuqta, ijroçi avatari, matn, vaqt. Siçqonça ustida vaqt örnini tezkor amallar (öqildi, keyinga qoldiriş, arxiv) egallaydi; sensorli qurilmada amallar doim körinadi. Klaviatura: E arxiv, H keyinga, U öqildi. PDP Task Inbox kalibrida.

- Qaçon: Bildirişnomalar, vazifa kiruvçilari, ariza navbati — vaqt böyiça tartiblangan, har biri bilan amal qilinadigan röyxat.
- Qaçon emas: Oddiy qiymatli röyxat (nom — qiymat) → `list`; Faoliyat tarixi (amal yöq) → `timeline`
- Klaviatura: Tab — Qator havolasi va amallari; E — Fokusdagi qatorni arxivlaş; H — Keyinga qoldiriş; U — Öqilgan/öqilmagan
- Tokenlar: --fx-bg-brand-solid, --fx-bg-muted, --fx-bg-subtle, --fx-border-color-default, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-sm, --fx-ease-exit, --fx-ease-standard, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-motion-exit-fast, --fx-motion-fast, --fx-motion-shift-md, --fx-radius-badge, --fx-radius-circle, --fx-radius-nav, --fx-size-status-dot, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-8, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<div class="fx-inbox" data-fx-inbox>
  <section class="fx-inbox__group" aria-labelledby="ib-d1"><h3 class="fx-inbox__day" id="ib-d1">Bugun</h3>
    <ul class="fx-inbox__list">
      <li class="fx-inbox__item" data-unread data-kind="mention">
        <span class="fx-inbox__dot"><span class="fx-sr-only">Yangi</span></span>
        <span class="fx-avatar" data-size="sm" data-color="purple" role="img" aria-label="Aziz">AZ</span>
        <a class="fx-inbox__body" href="#"><span class="fx-inbox__text"><strong>Aziz</strong> sizni «Tarif narxlari» vazifasida eslatdi</span><span class="fx-inbox__sub">Savdo · 12 daqiqa oldin</span></a>
        <div class="fx-inbox__aside"><time class="fx-inbox__time">12 daq</time><div class="fx-inbox__actions">
          <button class="fx-btn" data-variant="ghost" data-size="sm" data-shape="icon" data-inbox="read" aria-label="Öqilgan deb belgilaş" aria-pressed="false" title="Öqildi (U)"><svg viewBox="0 0 16 16" aria-hidden="true"><path d="M3 8.5 6.5 12 13 4.5" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
          <button class="fx-btn" data-variant="ghost" data-size="sm" data-shape="icon" data-inbox="snooze" aria-label="Keyinga qoldiriş" title="Keyinga (H)"><svg viewBox="0 0 16 16" aria-hidden="true"><path d="M8 3.5V8l3 2M8 14a6 6 0 1 0 0-12 6 6 0 0 0 0 12Z" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
          <button class="fx-btn" data-variant="ghost" data-size="sm" data-shape="icon" data-inbox="archive" aria-label="Arxivlaş" title="Arxiv (E)"><svg viewBox="0 0 16 16" aria-hidden="true"><path d="M2.5 4.5h11v2h-11zM3.5 6.5v6h9v-6M6.5 9h3" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
        </div></div>
      </li>
      <li class="fx-inbox__item" data-unread data-kind="all">
        <span class="fx-inbox__dot"><span class="fx-sr-only">Yangi</span></span>
        <span class="fx-avatar" data-size="sm" data-color="green" role="img" aria-label="Madina">MA</span>
        <a class="fx-inbox__body" href="#"><span class="fx-inbox__text"><strong>Madina</strong> arizani «Qabul qilindi»ga ötkazdi</span><span class="fx-inbox__sub">Arizalar · #1042</span></a>
        <div class="fx-inbox__aside"><time class="fx-inbox__time">1 soat</time><div class="fx-inbox__actions">
          <button class="fx-btn" data-variant="ghost" data-size="sm" data-shape="icon" data-inbox="read" aria-label="Öqilgan deb belgilaş" aria-pressed="false" title="Öqildi (U)"><svg viewBox="0 0 16 16" aria-hidden="true"><path d="M3 8.5 6.5 12 13 4.5" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
          <button class="fx-btn" data-variant="ghost" data-size="sm" data-shape="icon" data-inbox="snooze" aria-label="Keyinga qoldiriş" title="Keyinga (H)"><svg viewBox="0 0 16 16" aria-hidden="true"><path d="M8 3.5V8l3 2M8 14a6 6 0 1 0 0-12 6 6 0 0 0 0 12Z" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
          <button class="fx-btn" data-variant="ghost" data-size="sm" data-shape="icon" data-inbox="archive" aria-label="Arxivlaş" title="Arxiv (E)"><svg viewBox="0 0 16 16" aria-hidden="true"><path d="M2.5 4.5h11v2h-11zM3.5 6.5v6h9v-6M6.5 9h3" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
        </div></div>
      </li>
    </ul></section>
  <section class="fx-inbox__group" aria-labelledby="ib-d2"><h3 class="fx-inbox__day" id="ib-d2">Keça</h3>
    <ul class="fx-inbox__list">
      <li class="fx-inbox__item" data-kind="all">
        <span class="fx-inbox__dot"></span>
        <span class="fx-avatar" data-size="sm" data-color="coral" role="img" aria-label="Bobur">BO</span>
        <a class="fx-inbox__body" href="#"><span class="fx-inbox__text"><strong>Bobur</strong> tölov hisobini yubordi</span><span class="fx-inbox__sub">Moliya · hisob #318</span></a>
        <div class="fx-inbox__aside"><time class="fx-inbox__time">Keça</time><div class="fx-inbox__actions">
          <button class="fx-btn" data-variant="ghost" data-size="sm" data-shape="icon" data-inbox="read" aria-label="Öqilgan deb belgilaş" aria-pressed="false" title="Öqildi (U)"><svg viewBox="0 0 16 16" aria-hidden="true"><path d="M3 8.5 6.5 12 13 4.5" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
          <button class="fx-btn" data-variant="ghost" data-size="sm" data-shape="icon" data-inbox="snooze" aria-label="Keyinga qoldiriş" title="Keyinga (H)"><svg viewBox="0 0 16 16" aria-hidden="true"><path d="M8 3.5V8l3 2M8 14a6 6 0 1 0 0-12 6 6 0 0 0 0 12Z" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
          <button class="fx-btn" data-variant="ghost" data-size="sm" data-shape="icon" data-inbox="archive" aria-label="Arxivlaş" title="Arxiv (E)"><svg viewBox="0 0 16 16" aria-hidden="true"><path d="M2.5 4.5h11v2h-11zM3.5 6.5v6h9v-6M6.5 9h3" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
        </div></div>
      </li>
    </ul></section>
  <p class="fx-inbox__empty" hidden>Hammasi körib çiqildi — yangi narsa yöq.</p>
</div>
```

- Qilmang: Amallarni faqat hover'ga qoldirmang — fokus va sensorli qurilmada ham çiqadi (komponent buni özi qiladi).
- Qilmang: Öqilmaganni faqat rang bilan bildirmang — nuqta şakli va «Yangi» matni bor.

## Indikator (`indicator`, beta, 0.22.0 dan)

Istalgan element (ikon-tugma, avatar) burçagiga nuqta yoki son boğlaydi. Içida mavjud .fx-count yoki .fx-indicator__dot. Jarayon — nuqta atrofida halqa.

- Qaçon: Öqilmagan xabar, onlayn holat, yangi element belgisi.
- Qaçon emas: Matnli holat → `badge`; Faqat son → `count`
- Variantlar: data-placement=top-start|bottom-end|bottom-start (standart top-end); data-tone=success|brand (standart error)
- Tokenlar: --fx-bg-brand-solid, --fx-bg-error-solid, --fx-bg-surface, --fx-border-width-focus, --fx-duration-pulse, --fx-ease-standard, --fx-fg-success, --fx-radius-circle, --fx-size-status-dot

```html
<span class="fx-indicator" data-placement="top-end"><button class="fx-btn" type="button" aria-label="Xabarlar, 3 ta yangi">Xabarlar</button><span class="fx-count" aria-hidden="true">3</span></span>
<span class="fx-indicator" data-tone="success" data-placement="bottom-end" data-processing><span class="fx-avatar" role="img" aria-label="Aziz, onlayn">AZ</span><span class="fx-indicator__dot"></span></span>
```

- Qilmang: Sonni faqat indikatorda qoldirmang — ota elementning aria-label'iga ham yozing.
- Qilmang: Bir elementga bir neçta indikator qöymang.

## Joyida tahrir (`inline-edit`, beta, 0.23.0 dan)

Matn oddiy körinadi; bosilsa yoki Enter bosilsa maydonga aylanadi. Enter yoki fokus ketişi — saqlaydi (qisqa yoritiş), Esc — bekor qiladi. Sarlavha, nom, yorliq uçun.

- Qaçon: Sarlavha, nom yoki izohni sahifadan çiqmasdan tez özgartiriş.
- Qaçon emas: Köp maydonli tahrir → `input`
- Klaviatura: Enter, Space — Tahrirni oçadi; Enter (maydonda) — Saqlaydi; Esc — Bekor qiladi
- Tokenlar: --fx-bg-brand-subtle, --fx-bg-muted, --fx-bg-subtle, --fx-border-color-default, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-sm, --fx-ease-standard, --fx-motion-fast, --fx-motion-slower, --fx-radius-control, --fx-size-icon-sm, --fx-space-12, --fx-space-2, --fx-text-tertiary

```html
<h3 class="fx-heading" style="margin:0"><span class="fx-inline-edit" data-fx-inlineedit data-placeholder="Nom qöşing">
  <button type="button" class="fx-inline-edit__view" aria-label="Loyiha nomini tahrirlaş">Çorsu Market — yangi sayt</button>
  <input class="fx-input fx-inline-edit__input" aria-label="Loyiha nomi" value="Chorsu Market — yangi sayt" required hidden>
</span></h3>
<p><span class="fx-inline-edit" data-fx-inlineedit data-placeholder="Izoh qöşing"><button type="button" class="fx-inline-edit__view" data-empty aria-label="Izohni tahrirlaş">Izoh qöşing</button><input class="fx-input fx-inline-edit__input" aria-label="Izoh" hidden></span></p>
```

- Qilmang: Majburiy maydonni böş qoldirib saqlamang — required bölsa eski qiymat qaytadi.
- Qilmang: Köp maydonli forma uçun emas — oddiy forma.

## Maydon (input, textarea) (`input`, beta, 0.1.0 dan)

Matn maydoni (input, textarea), yorliq, izoh. Majburiy belgisi (data-required), faqat öqiş, xato (data-invalid) va muvaffaqiyat (data-valid) holati. Input guruhi — oldi/orqa qism (birlik, ikon). Fieldset — guruh sarlavhasi bilan. Kengaytma: lg ölçam, maydon eni (data-width), gorizontal forma (data-layout="inline"), parolni körsatiş va Caps Lock ogohlantirişi, parol kuçliligi, tozalaş tugmasi, belgilar hisoblagiçi, textarea avto-ösişi, kod maydoni (xulq: data-fx-field). Kengaytma: data-variant=filled|borderless|underlined, .fx-field[data-float] (floating label), .fx-input-group__status (loading|valid|invalid), guruh içida .fx-btn.

- Qaçon: Qisqa matn (input) yoki köp qatorli matn (textarea) kiritiş.
- Qaçon emas: Röyxatdan tanlaş → `select`
- Variantlar: data-size=sm|md|lg (standart md); data-width=xs|sm|md (standart toʻliq); data-layout=inline (standart ustma-ust); data-level=1|2|3|4 (standart —); data-rows=3|8 (standart 5); data-variant=filled|borderless|underlined; data-float=true
- Klaviatura: Enter / Space (tugma) — Parolni körsatiş/yaşiriş; tozalaş; Esc — Maydondagi qiymatni tozalaydi (tozalaş tugmasi bor bölsa)
- Tokenlar: --fx-bg-error-solid, --fx-bg-field, --fx-bg-muted, --fx-bg-pressed, --fx-bg-subtle, --fx-border-color-error, --fx-border-color-field, --fx-border-color-focus, --fx-border-color-strong, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-lg, --fx-control-h-md, --fx-control-h-sm, --fx-duration-pulse, --fx-duration-spin, --fx-ease-standard, --fx-fg-info, --fx-fg-success, --fx-fg-warning, --fx-font-adjust-mono, --fx-font-family-mono, --fx-font-size-lg, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-regular, --fx-font-weight-semibold, --fx-knob-field-fill, --fx-knob-pill, --fx-motion-base, --fx-motion-fast, --fx-motion-instant, --fx-motion-press, --fx-motion-shift-sm, --fx-motion-slow, --fx-radius-circle, --fx-radius-control, --fx-radius-field-multiline, --fx-size-icon-md, --fx-size-icon-sm, --fx-size-min-target, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-6, --fx-space-8, --fx-text-brand, --fx-text-disabled, --fx-text-error, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<label class="fx-field">
  <span class="fx-label" data-required>Email</span>
  <input class="fx-input" type="email" placeholder="siz@misol.uz">
  <span class="fx-hint">Tasdiqlaş xati şu manzilga keladi.</span>
</label>
<label class="fx-field" data-invalid>
  <span class="fx-label">Telefon</span>
  <span class="fx-input-group"><span class="fx-input-group__addon">+998</span><input class="fx-input-group__control" inputmode="tel" value="90 12"></span>
  <span class="fx-hint">9 ta raqam kiriting.</span>
</label>
<label class="fx-field">
  <span class="fx-label">Summa</span>
  <span class="fx-input-group"><input class="fx-input-group__control" inputmode="decimal" value="250 000"><span class="fx-input-group__addon">söm</span></span>
</label>
<label class="fx-field">
  <span class="fx-label">Izoh</span>
  <textarea class="fx-textarea" placeholder="Qisqacha yozing"></textarea>
</label>
<div class="fx-field" data-fx-field>
  <label class="fx-label" for="par1">Parol</label>
  <span class="fx-input-group">
    <input class="fx-input-group__control" id="par1" type="password" autocomplete="new-password" aria-describedby="par1-h">
    <button class="fx-input-group__btn" type="button" data-reveal aria-pressed="false" aria-label="Parolni körsatiş"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M2 10s3-5.5 8-5.5S18 10 18 10s-3 5.5-8 5.5S2 10 2 10z" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round"/><circle cx="10" cy="10" r="2.5" fill="none" stroke="currentColor" stroke-width="1.5"/></svg></button>
  </span>
  <div class="fx-strength" data-strength><i class="fx-strength__bar"></i><i class="fx-strength__bar"></i><i class="fx-strength__bar"></i><i class="fx-strength__bar"></i><span class="fx-strength__label"></span></div>
  <span class="fx-hint" id="par1-h">Kamida 8 belgi: harf, raqam va belgi aralaş.</span>
  <span class="fx-hint" data-caps hidden>Caps Lock yoqilgan</span>
</div>
<div class="fx-field" data-fx-field>
  <label class="fx-label" for="qid1">Qidiruv</label>
  <span class="fx-input-group">
    <input class="fx-input-group__control" id="qid1" type="text" value="Aziz Karimov" placeholder="Mijoz ismi">
    <button class="fx-input-group__btn" type="button" data-clear aria-label="Tozalaş"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M5 5l10 10M15 5L5 15" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg></button>
  </span>
</div>
<div class="fx-field" data-fx-field>
  <label class="fx-label" for="izo1">Mijoz izohi</label>
  <textarea class="fx-textarea" id="izo1" data-autosize maxlength="280" placeholder="Nimani yozib qoldirmoqchisiz?"></textarea>
  <div class="fx-field__foot"><span class="fx-hint">Faqat jamoa köradi.</span><span class="fx-counter" data-count></span></div>
</div>
<div class="fx-field" data-layout="inline">
  <label class="fx-label" for="pin1">Poçta indeksi</label>
  <input class="fx-input" id="pin1" data-width="xs" inputmode="numeric" placeholder="100000">
</div>
<div class="fx-field" data-float><label class="fx-label" for="fl-b2">Ism</label><input class="fx-input" id="fl-b2" placeholder=" " data-variant="filled"></div>
```

- Qilmang: Label örniga faqat placeholder işlatmang.
- Qilmang: Parolni körsatiş tugmasiga faqat ikon bermang — aria-label va aria-pressed şart.
- Qilmang: Belgilar hisoblagiçini limitsiz maydonda bezak uçun qöymang; limit bor bölsa maxlength bering.

## Integratsiyalar katalogi (`integrations`, beta, 0.29.0 dan)

Ilovaning «Integratsiyalar» sahifasi (4.189): sarlavha va «N ta ulangan» hisobi, qidiruv, toifa chip'lari (Hammasi, Ulanganlar, Tölov, Yetkaziş, Xabar, Buxgalteriya) va kartalar töri. Har karta: logo (harf + pastel fon yoki rasm), nom, toifa, qisqa izoh, holat (fx-status — nuqta + söz) va amallar. Holatlar data-state: connected (Ulangan → «Uziş», «Sozlaş»), disconnected (Ulanmagan → «Ulaş»), pending (Ulanmoqda…, tugma band), error (Xato + sababi → «Qayta ulaş»). Xulq (data-fx-integrations): filtr va qidiruv (ʻ va katta-kiçik harfsiz), ulaşda bekor qilinadigan «fx-integrations-connect» hodisasi {id, done(ok, xato)} — ilova OAuth oynasini oçib natijani done() bilan qaytaradi; uziş fxConfirm bilan tasdiqlanadi («fx-integrations-disconnect»). Natijalar jonli hududda aytiladi. data-layout: grid (standart) yoki list.

- Qaçon: Ilova sozlamalaridagi «Integratsiyalar» / «Ilovalar» sahifasi. Onboarding'da kerakli xizmatlarni ulaş qadami.
- Qaçon emas: API kalitlarini boşqariş → `apikeys`; Oddiy yoqiş/öçiriş sozlamalari röyxati → `settings`
- Variantlar: data-state=connected|disconnected|pending|error (standart disconnected); data-layout=grid|list (standart grid); data-color=yellow|pink|blue|coral|green|purple (standart none)
- Klaviatura: Tab — Qidiruv → toifa chip'lari → har kartaning amallari; Enter, Space — Chip — toifani tanlaydi; tugma — ulaydi / uzadi; Esc (tasdiq oynasida) — Uzişni bekor qiladi
- Tokenlar: --fx-bg-category-blue, --fx-bg-category-coral, --fx-bg-category-green, --fx-bg-category-pink, --fx-bg-category-purple, --fx-bg-category-yellow, --fx-bg-muted, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-error, --fx-border-color-strong, --fx-border-color-surface, --fx-border-width-default, --fx-ease-standard, --fx-fg-success, --fx-font-size-lg, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xl, --fx-font-size-xs, --fx-font-weight-semibold, --fx-motion-base, --fx-motion-fast, --fx-radius-control, --fx-radius-surface, --fx-shadow-sm, --fx-size-avatar-lg, --fx-space-1, --fx-space-10, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-space-6, --fx-text-on-category, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<section class="fx-integrations" data-fx-integrations aria-labelledby="in-t">
  <header class="fx-integrations__head"><div><h2 class="fx-integrations__title" id="in-t">Integratsiyalar</h2><p class="fx-integrations__text">«Ipak Yöli Savdo» dökonini tölov, yetkaziş va xabar xizmatlariga ulang.</p></div><span class="fx-integrations__count" data-integrations-count>2 ta ulangan</span></header>
  <div class="fx-integrations__toolbar">
    <label class="fx-search" data-size="sm"><svg viewBox="0 0 20 20" aria-hidden="true"><circle cx="9" cy="9" r="5.5" fill="none" stroke="currentColor" stroke-width="1.5"/><path d="m13.5 13.5 3.5 3.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg><input class="fx-search__input" type="search" placeholder="Integratsiya qidiriş" aria-label="Integratsiya qidiriş" data-integrations-search></label>
    <ul class="fx-integrations__filters" aria-label="Toifa">
      <li><button class="fx-chip" type="button" aria-pressed="true" data-integrations-filter="all">Hammasi</button></li>
      <li><button class="fx-chip" type="button" aria-pressed="false" data-integrations-filter="connected">Ulanganlar</button></li>
      <li><button class="fx-chip" type="button" aria-pressed="false" data-integrations-filter="tolov">Tölov</button></li>
      <li><button class="fx-chip" type="button" aria-pressed="false" data-integrations-filter="yetkazish">Yetkaziş</button></li>
      <li><button class="fx-chip" type="button" aria-pressed="false" data-integrations-filter="xabar">Xabar</button></li>
    </ul>
  </div>
  <ul class="fx-integrations__list">
    <li class="fx-integrations__item" data-id="click" data-category="tolov" data-state="connected">
      <span class="fx-integrations__logo" data-color="blue" aria-hidden="true">C</span>
      <div class="fx-integrations__info"><h3 class="fx-integrations__name">Click</h3><span class="fx-integrations__category">Tölov</span></div>
      <p class="fx-integrations__desc">Karta va Click hamyon orqali onlayn tölov. Pul ertasi kuni hisobingizga tuşadi.</p>
      <div class="fx-integrations__footer"><span class="fx-status fx-integrations__status" data-tone="success">Ulangan</span><div class="fx-integrations__actions"><a class="fx-btn" data-variant="ghost" data-size="sm" href="#">Sozlaş</a><button class="fx-btn" type="button" data-size="sm" data-variant="secondary" data-integrations="toggle">Uziş</button></div></div>
    </li>
    <li class="fx-integrations__item" data-id="payme" data-category="tolov" data-state="disconnected">
      <span class="fx-integrations__logo" data-color="green" aria-hidden="true">P</span>
      <div class="fx-integrations__info"><h3 class="fx-integrations__name">Payme</h3><span class="fx-integrations__category">Tölov</span></div>
      <p class="fx-integrations__desc">Payme orqali tölov va avtomatik çek. Obuna tölovlari uçun ham.</p>
      <div class="fx-integrations__footer"><span class="fx-status fx-integrations__status" data-tone="neutral">Ulanmagan</span><div class="fx-integrations__actions"><button class="fx-btn" type="button" data-size="sm" data-variant="primary" data-integrations="toggle">Ulaş</button></div></div>
    </li>
    <li class="fx-integrations__item" data-id="telegram" data-category="xabar" data-state="connected">
      <span class="fx-integrations__logo" data-color="purple" aria-hidden="true">T</span>
      <div class="fx-integrations__info"><h3 class="fx-integrations__name">Telegram bot</h3><span class="fx-integrations__category">Xabar</span></div>
      <p class="fx-integrations__desc">Yangi buyurtma va arizalar haqida guruhga darhol xabar.</p>
      <div class="fx-integrations__footer"><span class="fx-status fx-integrations__status" data-tone="success">Ulangan</span><div class="fx-integrations__actions"><a class="fx-btn" data-variant="ghost" data-size="sm" href="#">Sozlaş</a><button class="fx-btn" type="button" data-size="sm" data-variant="secondary" data-integrations="toggle">Uziş</button></div></div>
    </li>
    <li class="fx-integrations__item" data-id="eskiz" data-category="xabar" data-state="error" data-error="token eskirgan">
      <span class="fx-integrations__logo" data-color="yellow" aria-hidden="true">E</span>
      <div class="fx-integrations__info"><h3 class="fx-integrations__name">Eskiz SMS</h3><span class="fx-integrations__category">Xabar</span></div>
      <p class="fx-integrations__desc">Buyurtma holati va tasdiq kodlarini SMS orqali yuboriş.</p>
      <div class="fx-integrations__footer"><span class="fx-status fx-integrations__status" data-tone="error">Xato: token eskirgan</span><div class="fx-integrations__actions"><button class="fx-btn" type="button" data-size="sm" data-variant="primary" data-integrations="toggle">Qayta ulaş</button></div></div>
    </li>
    <li class="fx-integrations__item" data-id="yandex" data-category="yetkazish" data-state="disconnected">
      <span class="fx-integrations__logo" data-color="coral" aria-hidden="true">Y</span>
      <div class="fx-integrations__info"><h3 class="fx-integrations__name">Yandex Yetkaziş</h3><span class="fx-integrations__category">Yetkaziş</span></div>
      <p class="fx-integrations__desc">Toşkent böylab kuryer çaqiriş va yetkaziş narxini hisoblaş.</p>
      <div class="fx-integrations__footer"><span class="fx-status fx-integrations__status" data-tone="neutral">Ulanmagan</span><div class="fx-integrations__actions"><button class="fx-btn" type="button" data-size="sm" data-variant="primary" data-integrations="toggle">Ulaş</button></div></div>
    </li>
  </ul>
  <div class="fx-integrations__empty" hidden><strong>Heç narsa topilmadi</strong><span>Kerakli xizmat yöqmi? <a href="#">Integratsiya sörang</a> — bir haftada körib çiqamiz.</span></div>
</section>
```

- Qilmang: Holatni faqat rang bilan körsatmang — «Ulangan / Ulanmagan / Xato» sözi doim tursin.
- Qilmang: Uzişni tasdiqsiz bajarmang — ma'lumot almaşinuvi töxtaydi.
- Qilmang: Xato holatida sababini yaşirmang («token eskirgan», «ruxsat bekor qilingan») va «Qayta ulaş»ni bering.

## Interruption sahifasi (`interruption`, beta, 0.29.0 dan)

Davom etişdan oldin biliş ŞART bölgan bitta muhim xabar sahifasi (4.198, GOV.UK «Interruption pages»): butun ekran (yoki katta blok) rangli panel — sarlavha, qisqa matn yoki 2–4 bandli röyxat, ixtiyoriy «Tuşundim» belgisi (required — forma özi tekşiradi, JS kerak emas) va bitta asosiy harakat: «Davom etiş» + ikkinçi darajali havola («Ortga», «Keyinroq»). Masalan: tölov qaytarilmasligi, tarif özgarişi oqibati, qonuniy talab, ma'lumot öçirilişidan oldin. data-tone: brand (standart — töq rangli panel), warning (ehtiyot — sariq fon, qalin çap çiziq), neutral. data-size: page (ekran balandligida, markazda) yoki block (sahifa içida).

- Qaçon: Qaytarib bölmaydigan tölov, öçiriş, import yoki tarif özgarişidan oldin. Qonun yoki xavfsizlik talabi böyiça foydalanuvçi bilişi şart bölgan xabar.
- Qaçon emas: Kiçik tasdiq («Öçirilsinmi?») → `dialog`; Sahifa içidagi eslatma → `callout`; Butun sayt böylab e'lon → `banner`; Sessiya tugaşi → `sessionwarn`
- Variantlar: data-tone=brand|warning|neutral (standart brand); data-size=page|block (standart page)
- Klaviatura: Tab — «Tuşundim» → «Davom etiş» → ikkinçi havola; Space — «Tuşundim» belgisi; Enter — Davom etadi (belgi qöyilmagan bölsa — brauzer xabari)
- Tokenlar: --fx-bg-brand-solid, --fx-bg-page, --fx-bg-surface, --fx-bg-warning-subtle, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-lg, --fx-dialog-width, --fx-ease-enter, --fx-ease-standard, --fx-fg-warning, --fx-font-adjust-display, --fx-font-family-display, --fx-font-size-display-sm, --fx-font-size-lg, --fx-font-size-md, --fx-font-size-sm, --fx-font-weight-semibold, --fx-line-height-relaxed, --fx-line-height-tight, --fx-motion-fast, --fx-motion-press, --fx-motion-shift-sm, --fx-motion-slow, --fx-radius-badge, --fx-radius-control, --fx-radius-overlay, --fx-shadow-md, --fx-size-checkbox, --fx-space-1, --fx-space-10, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-space-6, --fx-space-8, --fx-text-on-brand, --fx-text-primary

```html
<main class="fx-interruption" data-size="block">
  <form class="fx-interruption__panel" action="#" aria-labelledby="ir-t">
    <p class="fx-interruption__eyebrow">Tölovdan oldin</p>
    <h1 class="fx-interruption__title" id="ir-t" tabindex="-1">Yillik obuna puli qaytarilmaydi</h1>
    <div class="fx-interruption__body">
      <p>«Jamoa, yillik» tarifiga ötsangiz, <strong>1 200 000 söm</strong> bir martada yeçiladi.</p>
      <ul><li>Muddatidan oldin bekor qilsangiz, qolgan oylar puli qaytarilmaydi.</li><li>Yuklab olingan versiyalar sizda abadiy qoladi.</li><li>Örinlar sonini istalgan vaqtda oşiriş mumkin.</li></ul>
    </div>
    <label class="fx-interruption__ack"><input type="checkbox" name="tushundim" required> Şartlarni öqidim va tuşundim</label>
    <div class="fx-interruption__actions"><button class="fx-interruption__continue" type="submit">Tölovga ötiş</button><a class="fx-interruption__secondary" href="#">Oylik tarifda qoliş</a></div>
  </form>
</main>
<div class="fx-interruption" data-size="block" data-tone="warning" style="margin-block-start: var(--fx-space-10)">
  <section class="fx-interruption__panel" aria-labelledby="ir-t2">
    <h2 class="fx-interruption__title" id="ir-t2">Import 1 284 ta mijozni yangilaydi</h2>
    <div class="fx-interruption__body"><p>Bir xil telefon raqamli yozuvlar faylidagi ma'lumot bilan almaştiriladi. Eski qiymatlar audit jurnalida 365 kun saqlanadi.</p></div>
    <div class="fx-interruption__actions"><a class="fx-interruption__continue" href="#">Davom etiş</a><a class="fx-interruption__secondary" href="#">Faylni qayta tanlaş</a></div>
  </section>
</div>
```

- Qilmang: Har qadamda interruption qöymang — faqat oqibati jiddiy va qaytarib bölmaydigan joyda, aks holda odamlar öqimay ötib ketadi.
- Qilmang: Bir sahifaga bir neçta xabar siğdirmang — bitta asosiy fikr, 2–4 band.
- Qilmang: «Davom etiş»dan boşqa asosiy tugma qöymang — ikkinçi yöl oddiy havola.
- Qilmang: Reklama yoki upsell uçun işlatmang — bu foydalanuvçi işonçini yöqotadi.

## Element kartasi (`item`, beta, 0.54.0 dan)

Bitta qator-karta: çapda ikon plitkasi (yoki avatar), örtada sarlavha va izoh, öng çetda amal — tugma, almaştirgiç, tanlov, nişon, summa, menyu yoki strelka. Qurilmalar, ulangan hisoblar, sozlamalar, tölov usullari uçun. Bosiladigan bölsa — <a>/<button class="fx-item">, almaştirgiçli qator — <label class="fx-item">. Guruh (.fx-item-group): sarlavha + izoh + amal; data-layout="list" — bitta yuza, ajratgiçlar bilan (iOS sozlamalari kabi), data-layout="grid" — 2–3 ustunli tör. Variantlar: asosiy, secondary, tertiary, outline, ghost; ölçam sm/lg (heroui.pro Item Card'dan ilhom, kalibr — FoxUI).

- Qaçon: Sozlamalar, qurilmalar, ulangan hisoblar, tölov usullari, fayllar röyxati — har qatorda bitta asosiy amal. Dashboard'da qisqa röyxat-kartalar (oxirgi tölovlar, vazifalar).
- Qaçon emas: Köp ustunli ma'lumot, saralaş va filtr → `table`; Avatar + meta bilan uzun röyxat (xabarlar, mijozlar) → `list`; Iş qatori (ustuvorlik, muddat, holat) → `row`
- Variantlar: data-variant=secondary|tertiary|outline|ghost (standart default); data-size=sm|lg (standart md); data-tone=brand|success|warning|error (standart neutral); data-layout=list|grid (standart stack)
- Klaviatura: Tab — Bosiladigan kartaga yoki içidagi amalga ötadi; Enter — Havola/tugma kartani oçadi; Space — Almaştirgiçli qatorda holatni almaştiradi
- Tokenlar: --fx-bg-brand-subtle, --fx-bg-error-subtle, --fx-bg-muted, --fx-bg-subtle, --fx-bg-success-subtle, --fx-bg-surface, --fx-bg-warning-subtle, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-lg, --fx-control-h-md, --fx-control-h-sm, --fx-ease-standard, --fx-fg-error, --fx-fg-success, --fx-fg-warning, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-semibold, --fx-motion-fast, --fx-motion-press, --fx-radius-control, --fx-radius-surface, --fx-shadow-sm, --fx-size-icon-md, --fx-size-icon-sm, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-text-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<div style="display:grid;inline-size:100%;gap:var(--fx-space-6);max-inline-size:34rem">
<div class="fx-item-group" data-layout="list">
  <div class="fx-item-group__head"><div><h3 class="fx-item-group__title">Qurilmalar</h3><p class="fx-item-group__desc">Hisobingizga kirgan qurilmalar</p></div><button class="fx-btn" data-size="sm" type="button">Hammasidan çiqiş</button></div>
  <ul class="fx-item-group__list">
    <li class="fx-item"><span class="fx-item__icon"><svg viewBox="0 0 256 256" fill="currentColor" aria-hidden="true"><path d="M128,24h0A104,104,0,1,0,232,128,104.12,104.12,0,0,0,128,24Zm88,104a87.61,87.61,0,0,1-3.33,24H174.16a157.44,157.44,0,0,0,0-48h38.51A87.61,87.61,0,0,1,216,128ZM102,168H154a115.11,115.11,0,0,1-26,45A115.27,115.27,0,0,1,102,168Zm-3.9-16a140.84,140.84,0,0,1,0-48h59.88a140.84,140.84,0,0,1,0,48ZM40,128a87.61,87.61,0,0,1,3.33-24H81.84a157.44,157.44,0,0,0,0,48H43.33A87.61,87.61,0,0,1,40,128ZM154,88H102a115.11,115.11,0,0,1,26-45A115.27,115.27,0,0,1,154,88Zm52.33,0H170.71a135.28,135.28,0,0,0-22.3-45.6A88.29,88.29,0,0,1,206.37,88ZM107.59,42.4A135.28,135.28,0,0,0,85.29,88H49.63A88.29,88.29,0,0,1,107.59,42.4ZM49.63,168H85.29a135.28,135.28,0,0,0,22.3,45.6A88.29,88.29,0,0,1,49.63,168Zm98.78,45.6a135.28,135.28,0,0,0,22.3-45.6h35.66A88.29,88.29,0,0,1,148.41,213.6Z"/></svg></span><span class="fx-item__body"><span class="fx-item__title"><span>MacBook Pro · Chrome</span></span><span class="fx-item__desc">Toşkent · hozir faol</span></span><span class="fx-item__end"><span class="fx-badge" data-tone="success" data-marker="dot">Şu qurilma</span></span></li>
    <li class="fx-item"><span class="fx-item__icon"><svg viewBox="0 0 256 256" fill="currentColor" aria-hidden="true"><path d="M222.37,158.46l-47.11-21.11-.13-.06a16,16,0,0,0-15.17,1.4,8.12,8.12,0,0,0-.75.56L134.87,160c-15.42-7.49-31.34-23.29-38.83-38.51l20.78-24.71c.2-.25.39-.5.57-.77a16,16,0,0,0,1.32-15.06l0-.12L97.54,33.64a16,16,0,0,0-16.62-9.52A56.26,56.26,0,0,0,32,80c0,79.4,64.6,144,144,144a56.26,56.26,0,0,0,55.88-48.92A16,16,0,0,0,222.37,158.46ZM176,208A128.14,128.14,0,0,1,48,80,40.2,40.2,0,0,1,82.87,40a.61.61,0,0,0,0,.12l21,47L83.2,111.86a6.13,6.13,0,0,0-.57.77,16,16,0,0,0-1,15.7c9.06,18.53,27.73,37.06,46.46,46.11a16,16,0,0,0,15.75-1.14,8.44,8.44,0,0,0,.74-.56L168.89,152l47,21.05h0s.08,0,.11,0A40.21,40.21,0,0,1,176,208Z"/></svg></span><span class="fx-item__body"><span class="fx-item__title"><span>iPhone 15</span></span><span class="fx-item__desc">Samarqand · 3 kun oldin</span></span><span class="fx-item__end"><button class="fx-btn" data-size="sm" type="button">Çiqariş</button></span></li>
  </ul>
</div>
<div class="fx-item-group" data-layout="list">
  <div class="fx-item-group__head"><h3 class="fx-item-group__title">Sozlamalar</h3></div>
  <ul class="fx-item-group__list">
    <li><a class="fx-item" href="#"><span class="fx-item__icon" data-tone="brand"><svg viewBox="0 0 256 256" fill="currentColor" aria-hidden="true"><path d="M208,80H176V56a48,48,0,0,0-96,0V80H48A16,16,0,0,0,32,96V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V96A16,16,0,0,0,208,80ZM96,56a32,32,0,0,1,64,0V80H96ZM208,208H48V96H208V208Z"/></svg></span><span class="fx-item__body"><span class="fx-item__title"><span>Xavfsizlik</span></span><span class="fx-item__desc">Parol va 2 bosqiçli tasdiq</span></span><span class="fx-item__end"><svg viewBox="0 0 256 256" fill="currentColor" aria-hidden="true"><path d="M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z"/></svg></span></a></li>
    <li><label class="fx-item"><span class="fx-item__icon"><svg viewBox="0 0 256 256" fill="currentColor" aria-hidden="true"><path d="M233.54,142.23a8,8,0,0,0-8-2,88.08,88.08,0,0,1-109.8-109.8,8,8,0,0,0-10-10,104.84,104.84,0,0,0-52.91,37A104,104,0,0,0,136,224a103.09,103.09,0,0,0,62.52-20.88,104.84,104.84,0,0,0,37-52.91A8,8,0,0,0,233.54,142.23ZM188.9,190.34A88,88,0,0,1,65.66,67.11a89,89,0,0,1,31.4-26A106,106,0,0,0,96,56,104.11,104.11,0,0,0,200,160a106,106,0,0,0,14.92-1.06A89,89,0,0,1,188.9,190.34Z"/></svg></span><span class="fx-item__body"><span class="fx-item__title"><span>Qoronği rejim</span></span><span class="fx-item__desc">Tizim rejimiga ergaşadi</span></span><span class="fx-item__end"><span class="fx-check" data-type="switch"><input type="checkbox" role="switch" checked><span class="fx-check__box"></span></span></span></label></li>
    <li class="fx-item"><span class="fx-item__icon"><svg viewBox="0 0 256 256" fill="currentColor" aria-hidden="true"><path d="M168,224a8,8,0,0,1-8,8H96a8,8,0,1,1,0-16h64A8,8,0,0,1,168,224Zm53.85-32A15.8,15.8,0,0,1,208,200H48a16,16,0,0,1-13.8-24.06C39.75,166.38,48,139.34,48,104a80,80,0,1,1,160,0c0,35.33,8.26,62.38,13.81,71.94A15.89,15.89,0,0,1,221.84,192ZM208,184c-7.73-13.27-16-43.95-16-80a64,64,0,1,0-128,0c0,36.06-8.28,66.74-16,80Z"/></svg></span><span class="fx-item__body"><span class="fx-item__title"><span>Bildirişnomalar</span></span><span class="fx-item__desc">Qaysi kanal orqali</span></span><span class="fx-item__end"><span class="fx-select-wrap"><select class="fx-select" data-size="sm" aria-label="Kanal"><option>Telegram</option><option>Email</option><option>SMS</option></select></span></span></li>
  </ul>
</div>
<div class="fx-item-group" data-layout="grid" data-columns="2">
  <div class="fx-item-group__head"><div><h3 class="fx-item-group__title">Ulangan hisoblar</h3><p class="fx-item-group__desc">Kiriş uçun işlatiladi</p></div></div>
  <ul class="fx-item-group__list">
    <li class="fx-item" data-variant="secondary"><span class="fx-item__icon"><svg viewBox="0 0 256 256" fill="currentColor" aria-hidden="true"><path d="M228.88,26.19a9,9,0,0,0-9.16-1.57L17.06,103.93a14.22,14.22,0,0,0,2.43,27.21L72,141.45V200a15.92,15.92,0,0,0,10,14.83,15.91,15.91,0,0,0,17.51-3.73l25.32-26.26L165,220a15.88,15.88,0,0,0,10.51,4,16.3,16.3,0,0,0,5-.79,15.85,15.85,0,0,0,10.67-11.63L231.77,35A9,9,0,0,0,228.88,26.19Zm-61.14,36L78.15,126.35l-49.6-9.73ZM88,200V152.52l24.79,21.74Zm87.53,8L92.85,135.5l119-85.29Z"/></svg></span><span class="fx-item__body"><span class="fx-item__title"><span>Telegram</span></span><span class="fx-item__desc">@aziz_karimov</span></span><span class="fx-item__end"><span class="fx-badge" data-tone="success">Ulangan</span></span></li>
    <li class="fx-item" data-variant="secondary"><span class="fx-item__icon"><svg viewBox="0 0 256 256" fill="currentColor" aria-hidden="true"><path d="M224,48H32a8,8,0,0,0-8,8V192a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A8,8,0,0,0,224,48ZM203.43,64,128,133.15,52.57,64ZM216,192H40V74.19l82.59,75.71a8,8,0,0,0,10.82,0L216,74.19V192Z"/></svg></span><span class="fx-item__body"><span class="fx-item__title"><span>Google</span></span><span class="fx-item__desc">Ulanmagan</span></span><span class="fx-item__end"><button class="fx-btn" data-size="sm" type="button">Ulaş</button></span></li>
  </ul>
</div>
<div style="display:grid;gap:var(--fx-space-2)">
  <div class="fx-item"><span class="fx-item__icon"><svg viewBox="0 0 256 256" fill="currentColor" aria-hidden="true"><path d="M224,48H32A16,16,0,0,0,16,64V192a16,16,0,0,0,16,16H224a16,16,0,0,0,16-16V64A16,16,0,0,0,224,48Zm0,16V88H32V64Zm0,128H32V104H224v88Zm-16-24a8,8,0,0,1-8,8H168a8,8,0,0,1,0-16h32A8,8,0,0,1,208,168Zm-64,0a8,8,0,0,1-8,8H120a8,8,0,0,1,0-16h16A8,8,0,0,1,144,168Z"/></svg></span><span class="fx-item__body"><span class="fx-item__title"><span>Uzcard ···· 4417</span><span class="fx-badge">Asosiy</span></span><span class="fx-item__desc">Muddati 09/28</span></span><span class="fx-item__end">1 250 000 söm</span></div>
  <div class="fx-item" data-variant="secondary"><span class="fx-item__icon"><svg viewBox="0 0 256 256" fill="currentColor" aria-hidden="true"><path d="M244.8,150.4a8,8,0,0,1-11.2-1.6A51.6,51.6,0,0,0,192,128a8,8,0,0,1-7.37-4.89,8,8,0,0,1,0-6.22A8,8,0,0,1,192,112a24,24,0,1,0-23.24-30,8,8,0,1,1-15.5-4A40,40,0,1,1,219,117.51a67.94,67.94,0,0,1,27.43,21.68A8,8,0,0,1,244.8,150.4ZM190.92,212a8,8,0,1,1-13.84,8,57,57,0,0,0-98.16,0,8,8,0,1,1-13.84-8,72.06,72.06,0,0,1,33.74-29.92,48,48,0,1,1,58.36,0A72.06,72.06,0,0,1,190.92,212ZM128,176a32,32,0,1,0-32-32A32,32,0,0,0,128,176ZM72,120a8,8,0,0,0-8-8A24,24,0,1,1,87.24,82a8,8,0,1,0,15.5-4A40,40,0,1,0,37,117.51,67.94,67.94,0,0,0,9.6,139.19a8,8,0,1,0,12.8,9.61A51.6,51.6,0,0,1,64,128,8,8,0,0,0,72,120Z"/></svg></span><span class="fx-item__body"><span class="fx-item__title"><span>Ikkinçi darajali</span></span><span class="fx-item__desc">data-variant="secondary"</span></span></div>
  <div class="fx-item" data-variant="tertiary"><span class="fx-item__icon"><svg viewBox="0 0 256 256" fill="currentColor" aria-hidden="true"><path d="M244.8,150.4a8,8,0,0,1-11.2-1.6A51.6,51.6,0,0,0,192,128a8,8,0,0,1-7.37-4.89,8,8,0,0,1,0-6.22A8,8,0,0,1,192,112a24,24,0,1,0-23.24-30,8,8,0,1,1-15.5-4A40,40,0,1,1,219,117.51a67.94,67.94,0,0,1,27.43,21.68A8,8,0,0,1,244.8,150.4ZM190.92,212a8,8,0,1,1-13.84,8,57,57,0,0,0-98.16,0,8,8,0,1,1-13.84-8,72.06,72.06,0,0,1,33.74-29.92,48,48,0,1,1,58.36,0A72.06,72.06,0,0,1,190.92,212ZM128,176a32,32,0,1,0-32-32A32,32,0,0,0,128,176ZM72,120a8,8,0,0,0-8-8A24,24,0,1,1,87.24,82a8,8,0,1,0,15.5-4A40,40,0,1,0,37,117.51,67.94,67.94,0,0,0,9.6,139.19a8,8,0,1,0,12.8,9.61A51.6,51.6,0,0,1,64,128,8,8,0,0,0,72,120Z"/></svg></span><span class="fx-item__body"><span class="fx-item__title"><span>Uçinçi darajali</span></span><span class="fx-item__desc">data-variant="tertiary"</span></span></div>
  <div class="fx-item" data-variant="outline"><span class="fx-item__icon"><svg viewBox="0 0 256 256" fill="currentColor" aria-hidden="true"><path d="M244.8,150.4a8,8,0,0,1-11.2-1.6A51.6,51.6,0,0,0,192,128a8,8,0,0,1-7.37-4.89,8,8,0,0,1,0-6.22A8,8,0,0,1,192,112a24,24,0,1,0-23.24-30,8,8,0,1,1-15.5-4A40,40,0,1,1,219,117.51a67.94,67.94,0,0,1,27.43,21.68A8,8,0,0,1,244.8,150.4ZM190.92,212a8,8,0,1,1-13.84,8,57,57,0,0,0-98.16,0,8,8,0,1,1-13.84-8,72.06,72.06,0,0,1,33.74-29.92,48,48,0,1,1,58.36,0A72.06,72.06,0,0,1,190.92,212ZM128,176a32,32,0,1,0-32-32A32,32,0,0,0,128,176ZM72,120a8,8,0,0,0-8-8A24,24,0,1,1,87.24,82a8,8,0,1,0,15.5-4A40,40,0,1,0,37,117.51,67.94,67.94,0,0,0,9.6,139.19a8,8,0,1,0,12.8,9.61A51.6,51.6,0,0,1,64,128,8,8,0,0,0,72,120Z"/></svg></span><span class="fx-item__body"><span class="fx-item__title"><span>Çiziqli</span></span><span class="fx-item__desc">data-variant="outline"</span></span></div>
  <div class="fx-item" data-variant="ghost" data-size="sm"><span class="fx-item__icon"><svg viewBox="0 0 256 256" fill="currentColor" aria-hidden="true"><path d="M244.8,150.4a8,8,0,0,1-11.2-1.6A51.6,51.6,0,0,0,192,128a8,8,0,0,1-7.37-4.89,8,8,0,0,1,0-6.22A8,8,0,0,1,192,112a24,24,0,1,0-23.24-30,8,8,0,1,1-15.5-4A40,40,0,1,1,219,117.51a67.94,67.94,0,0,1,27.43,21.68A8,8,0,0,1,244.8,150.4ZM190.92,212a8,8,0,1,1-13.84,8,57,57,0,0,0-98.16,0,8,8,0,1,1-13.84-8,72.06,72.06,0,0,1,33.74-29.92,48,48,0,1,1,58.36,0A72.06,72.06,0,0,1,190.92,212ZM128,176a32,32,0,1,0-32-32A32,32,0,0,0,128,176ZM72,120a8,8,0,0,0-8-8A24,24,0,1,1,87.24,82a8,8,0,1,0,15.5-4A40,40,0,1,0,37,117.51,67.94,67.94,0,0,0,9.6,139.19a8,8,0,1,0,12.8,9.61A51.6,51.6,0,0,1,64,128,8,8,0,0,0,72,120Z"/></svg></span><span class="fx-item__body"><span class="fx-item__title"><span>Şaffof, kiçik</span></span></span></div>
</div>
</div>
```

- Qilmang: Bitta qatorga ikkitadan ortiq amal qöymang — qolganini menyuga oling.
- Qilmang: Butun karta havola bölsa, içiga yana tugma yoki havola qöymang (içma-iç bosiladigan element).
- Qilmang: Izohni ikki qatorga çözmang — u bitta qatorda «…» bilan qisqaradi; batafsil — oçiladigan sahifada.

## JSON maydoni (`jsonfield`, beta, 0.29.0 dan)

JSON matni uçun maydon (4.90): webhook tanasi, integratsiya sozlamasi, API sörovi. Çapda qator raqamlari, monoşrift; fokusdan çiqqanda (yoki Ctrl+Shift+F, «Formatlaş» tugmasi) tekşiradi va 2 böşliq bilan formatlaydi. Xato bölsa — xato qatori raqami «!» bilan belgilanadi, qator orqasi ajratiladi, pastda «4-qator, 1-ustun: xususiyat nomi qöştirnoqda bölişi kerak» kabi özbekça matn; textarea aria-invalid va setCustomValidity oladi (forma yuborilmaydi).

- Qaçon: Admin panelda webhook, integratsiya yoki ruxsatlar sozlamasi (JSON). API sinov sahifasida sörov tanasi.
- Qaçon emas: Köp qatorli oddiy matn → `input`; Faqat körsatiladigan kod → `code`; Formatlangan matn (qalin, röyxat) → `markdown`
- Variantlar: data-required=; data-indent=4 (standart 2)
- Klaviatura: Ctrl+Shift+F — Tekşiradi va formatlaydi; Tab — Keyingi maydonga (tuzoq yöq)
- Tokenlar: --fx-bg-field, --fx-bg-muted, --fx-bg-subtle, --fx-border-color-default, --fx-border-color-error, --fx-border-color-field, --fx-border-color-focus, --fx-border-color-strong, --fx-border-width-default, --fx-border-width-focus, --fx-ease-standard, --fx-fg-error, --fx-font-adjust-mono, --fx-font-family-mono, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-semibold, --fx-motion-fast, --fx-radius-field-multiline, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-text-disabled, --fx-text-error, --fx-text-primary, --fx-text-tertiary

```html
<div class="fx-field">
  <label class="fx-label" for="js1">Webhook tanasi</label>
  <div class="fx-jsonfield" data-fx-jsonfield>
    <div class="fx-jsonfield__box"><ol class="fx-jsonfield__gutter" aria-hidden="true"></ol><textarea class="fx-jsonfield__input" id="js1" name="webhook" rows="8">{"hodisa":"bitim.yopildi","mijoz":{"ism":"Aziz Karimov","telefon":"+998901234567","shahar":"Toshkent"},"summa":12500000,"valyuta":"UZS","teglar":["vip","ulgurji"]}</textarea></div>
    <p class="fx-jsonfield__error" aria-live="polite"></p>
    <p class="fx-jsonfield__hint">Fokusdan çiqqanda formatlanadi · Ctrl+Shift+F</p>
  </div>
</div>
<div class="fx-field">
  <label class="fx-label" for="js2">Integratsiya sozlamasi</label>
  <div class="fx-jsonfield" data-fx-jsonfield data-required>
    <div class="fx-jsonfield__box"><ol class="fx-jsonfield__gutter" aria-hidden="true"></ol><textarea class="fx-jsonfield__input" id="js2" name="sozlama" rows="6">{
  "bot": "@savdo_bot",
  "kanal": -1001234567890,
  "jim_soat": ["22:00", "08:00"],
}</textarea></div>
    <p class="fx-jsonfield__error" aria-live="polite"></p>
    <button type="button" class="fx-btn" data-size="sm" data-variant="outline" data-json="format">Formatlaş</button>
  </div>
</div>
```

- Qilmang: Oddiy foydalanuvçiga JSON maydonini bermang — sozlamani forma maydonlariga ajrating; JSON — dasturçi va admin uçun.
- Qilmang: Tab tugmasini tutib qolmang (fokus tuzoği) — çekiniş formatlaş bilan qöyiladi.
- Qilmang: Xatoni faqat qizil çegara bilan körsatmang — qator raqami va matn şart.

## Tugma belgisi (kbd) (`kbd`, beta, 0.14.0 dan)

Klaviatura tugmasi yoki birikmasi: çiziqsiz kulrang plitka, matn şriftida (mono emas; Ustoz 21.10, PDP namunasi). Kengaytma: .fx-kbd-combo (kombinatsiya, ixtiyoriy .fx-kbd-combo__sep “+”), data-size=sm.

- Qaçon: Tugmalar birikmasini matnda körsatiş.
- Qaçon emas: Kod parçasi → `code`
- Variantlar: data-size=sm
- Tokenlar: --fx-bg-muted, --fx-border-width-default, --fx-font-size-xs, --fx-font-weight-medium, --fx-radius-badge, --fx-size-icon-sm, --fx-space-1, --fx-space-5, --fx-text-secondary, --fx-text-tertiary

```html
<p>Qidiriş: <kbd class="fx-kbd">Ctrl</kbd> + <kbd class="fx-kbd">K</kbd>, menyuni yiğiş: <kbd class="fx-kbd">⌘</kbd> <kbd class="fx-kbd">B</kbd></p>
<span class="fx-kbd-combo"><kbd class="fx-kbd">Ctrl</kbd><span class="fx-kbd-combo__sep" aria-hidden="true">+</span><kbd class="fx-kbd">K</kbd></span>
```

- Qilmang: Kbd'ni bosiladigan tugma qilmang.

## Burçak / knob (`knob`, beta, 0.29.0 dan)

Dumaloq tutqiç (4.89): qiymat yoki burçakni aylantirib tanlaş. Standart — min…max 270° yoy böylab (ovoz, harorat, intensivlik), data-type="angle" — 0…359° töliq aylana (gradient yönalişi, soya burçagi). Sudraş markaz atrofida, klaviatura APG slider böyiça. Örtada raqam va birlik (holat söz bilan), yaşirin input formaga.

- Qaçon: Burçak: gradient yönalişi, soya, aylantiriş. Ixçam panelda sozlama: ovoz, harorat, intensivlik (audio/IoT boşqaruv).
- Qaçon emas: Çiziqli diapazon, narx filtri → `slider`; Aniq son kiritiş → `number`
- Variantlar: data-type=value|angle (standart value); data-size=sm|md|lg (standart md)
- Klaviatura: → ↑ — Bir qadam oşiradi; ← ↓ — Bir qadam kamaytiradi; PageUp / PageDown — 10 qadam (burçakda 15°); Home / End — Eng kam / eng köp qiymat
- Tokenlar: --fx-bg-brand-solid, --fx-bg-muted, --fx-bg-surface, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-ease-standard, --fx-font-size-sm, --fx-font-size-xl, --fx-font-size-xs, --fx-font-weight-semibold, --fx-motion-instant, --fx-radius-circle, --fx-radius-pill, --fx-shadow-sm, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-text-primary, --fx-text-secondary

```html
<div style="display:flex;flex-wrap:wrap;gap:var(--fx-space-8);align-items:end">
  <label class="fx-knob-field"><div class="fx-knob" data-fx-knob data-min="0" data-max="100" data-value="65" data-unit="%" data-name="ovoz" aria-label="Qönğiroq ovozi"></div>Qönğiroq ovozi</label>
  <label class="fx-knob-field"><div class="fx-knob" data-fx-knob data-min="16" data-max="30" data-step="0.5" data-value="22.5" data-unit="°C" aria-label="Ofis harorati"></div>Ofis harorati</label>
  <label class="fx-knob-field"><div class="fx-knob" data-fx-knob data-type="angle" data-value="135" data-name="burchak" aria-label="Gradient burçagi"></div>Gradient burçagi</label>
  <label class="fx-knob-field"><div class="fx-knob" data-fx-knob data-size="sm" data-value="30" data-unit="%" aria-label="Şaffoflik"></div>Şaffoflik</label>
</div>
```

- Qilmang: Aniq son kiritiş kerak bölsa knobni yolğiz bermang — yoniga son maydoni qöying.
- Qilmang: Çiziqli oraliq (narx, sana) uçun knob işlatmang — slider tuşunarliroq.
- Qilmang: Juda katta oraliq (0–10 000) bermang — aylanişda qadam sezilmaydi.

## Hududlar navigatsiyasi (F6) (`landmarks`, beta, 0.29.0 dan)

Sahifa hududlari orasida klaviatura bilan sakraş (4.24): F6 — keyingi hudud (sarlavha → navigatsiya → asosiy mazmun → yon panel → pastki qism), Shift+F6 — oldingisi, oxiridan boşiga aylanadi. Hududga qaytilganda fokus u yerda oxirgi turgan elementga tuşadi (CRM'da: jadvaldan filtrga va qaytib aynan öşa qatorga). Pastda qisqa yorliq hudud nomini körsatadi. Hududlar — semantik teglar (header, nav, main, aside, footer, search) va nomli section/form/region.

- Qaçon: Köp panelli ilova: CRM, admin, poçta — siçqonçasiz işlovçi tez ötsin. Ilova karkasi (shell) bor har sahifa — body'ga bir marta qöyiladi.
- Qaçon emas: Sahifa boşidan mazmunga bitta sakraş → `anchor`; Tugmalar guruhi içida strelka bilan yuriş → `toolbar`
- Klaviatura: F6 — Keyingi hudud (oxiridan boşiga); Shift + F6 — Oldingi hudud
- Tokenlar: --fx-bg-page, --fx-border-color-focus, --fx-border-width-focus, --fx-ease-enter, --fx-ease-exit, --fx-font-size-sm, --fx-font-weight-medium, --fx-motion-exit-fast, --fx-motion-fast, --fx-motion-shift-sm, --fx-radius-pill, --fx-space-2, --fx-space-4, --fx-space-6, --fx-text-primary, --fx-z-tip

```html
<div class="fx-landmarks" data-fx-landmarks style="display: grid; gap: var(--fx-space-3)">
  <header style="display: flex; gap: var(--fx-space-3); align-items: center">
    <strong>Mijozlar bazasi</strong>
    <search><input class="fx-input" type="search" placeholder="Mijoz qidiriş" aria-label="Mijoz qidiriş"></search>
  </header>
  <nav aria-label="Bölimlar"><a href="#">Arizalar</a> · <a href="#" aria-current="page">Mijozlar</a> · <a href="#">Hisobotlar</a></nav>
  <main>
    <h2 class="fx-heading" data-size="sm">Faol mijozlar</h2>
    <button class="fx-btn" type="button">Dilnoza Rahimova</button>
    <button class="fx-btn" type="button">Sardor Toʻxtayev</button>
  </main>
  <aside aria-label="Tafsilot"><button class="fx-btn" data-variant="ghost" type="button">Izoh qöşiş</button></aside>
  <footer><p class="fx-text" data-tone="tertiary">F6 — keyingi hudud, Shift+F6 — oldingisi</p></footer>
</div>
```

- Qilmang: Hududlarni div bilan yasamang — header, nav, main, aside, footer yoki role bering, aks holda F6 ularni topmaydi.
- Qilmang: Bir sahifada bir xil nomli ikki nav qoldirmang — aria-label bilan farqlang («Asosiy», «Sahifa içida»).
- Qilmang: F6 ni boşqa amalga boğlamang — brauzer va ekran öquvçilarda u hududlar tugmasi.

## Til almaştirgiç (`langswitch`, beta, 0.30.0 dan)

Sayt tilini tanlaş: pill tugma — globus, joriy til va strelka; bosilganda tillar menyusi (fx-menu) oçiladi. Balandligi va yoyi mavzu almaştirgiç bilan bir xil — footer'da ikkalasi bir qator bölib turadi (Cursor footer namunasi, Ustoz 19.10). Bandlar havola (til boşqa manzilda, hreflang) yoki tugma (til şu sahifada, «fx-lang» hodisasi). Til nomi öz tilida yoziladi (endonim), tanlangani belgi bilan. data-apply="html" — tanlanganda <html lang> ham özgaradi (faqat xulq).

- Qaçon: Sayt footer'i (mavzu almaştirgiç yonida), sarlavha öng çeti, sozlamalar.
- Qaçon emas: Forma içida til maydoni (masalan, kontent tili) → `select`; 2 ta til va joy kam → `segment`
- Variantlar: data-variant=default|compact (standart default)
- Klaviatura: Enter, Space, ↓ — Röyxatni oçadi; ↑ ↓ Home End — Tillar böylab yuradi; Enter — Tilni tanlaydi; Esc — Yopadi, fokus tugmaga qaytadi
- Tokenlar: --fx-bg-muted, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-strong, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-md, --fx-ease-standard, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-knob-pill, --fx-motion-fast, --fx-radius-control, --fx-size-icon-sm, --fx-space-2, --fx-space-3, --fx-text-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<div class="fx-langswitch" data-fx-langswitch>
  <button class="fx-langswitch__trigger" type="button" popovertarget="ls1" aria-haspopup="menu" aria-label="Til: Özbekça"><svg class="fx-langswitch__icon" viewBox="0 0 20 20" aria-hidden="true"><circle cx="10" cy="10" r="7.25" fill="none" stroke="currentColor" stroke-width="1.5"/><path d="M2.75 10h14.5M10 2.75c2 2 3 4.5 3 7.25s-1 5.25-3 7.25c-2-2-3-4.5-3-7.25s1-5.25 3-7.25z" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round"/></svg><span class="fx-langswitch__name">Özbekça</span><span class="fx-langswitch__code" aria-hidden="true">UZ</span><svg class="fx-langswitch__caret" viewBox="0 0 20 20" aria-hidden="true"><path d="M5.5 8l4.5 4.5L14.5 8" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
  <div class="fx-menu fx-langswitch__menu" id="ls1" role="menu" aria-label="Tilni tanlang" popover data-fx-menu>
    <button class="fx-menu__item" type="button" data-value="uz" role="menuitemradio" aria-checked="true" lang="uz"><span class="fx-langswitch__endonym">Özbekça</span><span class="fx-langswitch__hint">UZ</span></button>
    <button class="fx-menu__item" type="button" data-value="ru" role="menuitemradio" aria-checked="false" lang="ru"><span class="fx-langswitch__endonym">Русский</span><span class="fx-langswitch__hint">RU</span></button>
    <button class="fx-menu__item" type="button" data-value="en" role="menuitemradio" aria-checked="false" lang="en"><span class="fx-langswitch__endonym">English</span><span class="fx-langswitch__hint">EN</span></button>
  </div>
</div>

<!-- Ixcham: globus + kod; tillar boshqa manzilda (havola) -->
<div class="fx-langswitch" data-variant="compact" data-fx-langswitch>
  <button class="fx-langswitch__trigger" type="button" popovertarget="ls2" aria-haspopup="menu" aria-label="Til: Özbekça"><svg class="fx-langswitch__icon" viewBox="0 0 20 20" aria-hidden="true"><circle cx="10" cy="10" r="7.25" fill="none" stroke="currentColor" stroke-width="1.5"/><path d="M2.75 10h14.5M10 2.75c2 2 3 4.5 3 7.25s-1 5.25-3 7.25c-2-2-3-4.5-3-7.25s1-5.25 3-7.25z" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round"/></svg><span class="fx-langswitch__name">Özbekça</span><span class="fx-langswitch__code" aria-hidden="true">UZ</span><svg class="fx-langswitch__caret" viewBox="0 0 20 20" aria-hidden="true"><path d="M5.5 8l4.5 4.5L14.5 8" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
  <div class="fx-menu fx-langswitch__menu" id="ls2" role="menu" aria-label="Tilni tanlang" popover data-fx-menu>
    <a class="fx-menu__item" href="/" hreflang="uz" role="menuitemradio" aria-checked="true" lang="uz"><span class="fx-langswitch__endonym">Özbekça</span><span class="fx-langswitch__hint">UZ</span></a>
    <a class="fx-menu__item" href="/ru/" hreflang="ru" role="menuitemradio" aria-checked="false" lang="ru"><span class="fx-langswitch__endonym">Русский</span><span class="fx-langswitch__hint">RU</span></a>
    <a class="fx-menu__item" href="/en/" hreflang="en" role="menuitemradio" aria-checked="false" lang="en"><span class="fx-langswitch__endonym">English</span><span class="fx-langswitch__hint">EN</span></a>
  </div>
</div>

<!-- Footer qatori: mavzu (ikonli, «Tizim» birinchi) + til — Cursor footer namunasidagi juftlik -->
<div class="fx-cluster" data-gap="3">
  <div class="fx-segment fx-theme-switcher" data-variant="icon" role="group" aria-label="Mavzu" data-fx-themeswitch>
    <button class="fx-segment__item" type="button" data-value="system" aria-pressed="true"><svg class="fx-theme-switcher__icon" viewBox="0 0 20 20" aria-hidden="true"><rect x="2.5" y="4" width="15" height="10" rx="2" fill="none" stroke="currentColor" stroke-width="1.6"/><path d="M7 17h6" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/></svg><span class="fx-theme-switcher__label">Tizim</span></button>
    <button class="fx-segment__item" type="button" data-value="light" aria-pressed="false"><svg class="fx-theme-switcher__icon" viewBox="0 0 20 20" aria-hidden="true"><circle cx="10" cy="10" r="3.2" fill="none" stroke="currentColor" stroke-width="1.6"/><path d="M10 2.5v2M10 15.5v2M2.5 10h2M15.5 10h2M4.7 4.7l1.4 1.4M13.9 13.9l1.4 1.4M4.7 15.3l1.4-1.4M13.9 6.1l1.4-1.4" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/></svg><span class="fx-theme-switcher__label">Yoruğ</span></button>
    <button class="fx-segment__item" type="button" data-value="dark" aria-pressed="false"><svg class="fx-theme-switcher__icon" viewBox="0 0 20 20" aria-hidden="true"><path d="M16.5 11.5A6.5 6.5 0 0 1 8.5 3.5a6.5 6.5 0 1 0 8 8z" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linejoin="round"/></svg><span class="fx-theme-switcher__label">Qoronği</span></button>
  </div>
  <div class="fx-langswitch" data-fx-langswitch>
    <button class="fx-langswitch__trigger" type="button" popovertarget="ls3" aria-haspopup="menu" aria-label="Til: Özbekça"><svg class="fx-langswitch__icon" viewBox="0 0 20 20" aria-hidden="true"><circle cx="10" cy="10" r="7.25" fill="none" stroke="currentColor" stroke-width="1.5"/><path d="M2.75 10h14.5M10 2.75c2 2 3 4.5 3 7.25s-1 5.25-3 7.25c-2-2-3-4.5-3-7.25s1-5.25 3-7.25z" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round"/></svg><span class="fx-langswitch__name">Özbekça</span><span class="fx-langswitch__code" aria-hidden="true">UZ</span><svg class="fx-langswitch__caret" viewBox="0 0 20 20" aria-hidden="true"><path d="M5.5 8l4.5 4.5L14.5 8" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
    <div class="fx-menu fx-langswitch__menu" id="ls3" role="menu" aria-label="Tilni tanlang" popover data-fx-menu>
      <button class="fx-menu__item" type="button" data-value="uz" role="menuitemradio" aria-checked="true" lang="uz"><span class="fx-langswitch__endonym">Özbekça</span><span class="fx-langswitch__hint">UZ</span></button>
      <button class="fx-menu__item" type="button" data-value="ru" role="menuitemradio" aria-checked="false" lang="ru"><span class="fx-langswitch__endonym">Русский</span><span class="fx-langswitch__hint">RU</span></button>
      <button class="fx-menu__item" type="button" data-value="en" role="menuitemradio" aria-checked="false" lang="en"><span class="fx-langswitch__endonym">English</span><span class="fx-langswitch__hint">EN</span></button>
    </div>
  </div>
</div>
```

- Qilmang: Til nomini bayroq bilan almaştirmang — bayroq davlat, til emas (özbek tili bitta, bayroqlar köp).
- Qilmang: Til nomlarini joriy tilga tarjima qilmang — har til öz nomida: «Özbekça», «Русский», «English».
- Qilmang: Faqat ikonli tugma qilmang — joriy til körinib tursin; ixçam variantda ham kod (UZ) körinadi.

## Joylaşuv primitivlari (`layout`, beta, 0.22.0 dan)

Oraliq tokeni bilan joylaş: fx-stack (vertikal), fx-cluster (qatorga öraladigan guruh), fx-grid (auto-fit yoki aniq ustun), fx-container (markazlangan eni), fx-ratio (tomonlar nisbati). Oraliq — data-gap="0…12" (space-token).

- Qaçon: Elementlarni token oraliq bilan ustun, qator yoki törga joylaş. Sahifa kontentini markazlab, enini çeklaş.
- Qaçon emas: Butun ilova karkasi (yon menyu + tepa panel) → `shell`; Elementlar orasiga çiziq → `divider`
- Variantlar: data-gap=0|1|2|3|4|5|6|8|10|12 (standart 4); data-align=start|center|end|baseline (standart stretch); data-justify=center|end|between (standart start); data-min=sm|md|lg (standart md); data-cols=2|3|4 (standart auto); data-size=sm|md|lg|xl|full (standart lg); data-pad=none (standart default); data-ratio=1-1|4-3|3-2|16-9|21-9 (standart 16-9)
- Tokenlar: --fx-bg-muted, --fx-radius-control, --fx-space-1, --fx-space-10, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-space-6, --fx-space-8

```html
<div class="fx-container" data-size="md">
  <div class="fx-stack" data-gap="6">
    <div class="fx-cluster" data-justify="between">
      <h2 class="fx-heading" data-size="h2">Loyihalar</h2>
      <div class="fx-cluster" data-gap="2"><button class="fx-btn" data-size="sm">Filtr</button><button class="fx-btn" data-variant="primary" data-size="sm">Yangi loyiha</button></div>
    </div>
    <div class="fx-grid" data-min="sm" data-gap="4">
      <div class="fx-card"><h3 class="fx-card__title">RedFox</h3><p class="fx-card__text">12 faol vazifa</p></div>
      <div class="fx-card"><h3 class="fx-card__title">NomLab</h3><p class="fx-card__text">5 faol vazifa</p></div>
      <div class="fx-card"><h3 class="fx-card__title">Manbaa</h3><p class="fx-card__text">8 faol vazifa</p></div>
    </div>
    <div class="fx-ratio" data-ratio="21-9"></div>
  </div>
</div>
```

- Qilmang: Oraliqni margin bilan emas, ota konteynerning data-gap'i bilan bering.
- Qilmang: fx-grid'da DOM tartibi öqiş tartibi bölsin — vizual tartibni order bilan buzmang.

## Huquqiy sahifa (`legal`, beta, 0.29.0 dan)

Maxfiylik siyosati, foydalaniş şartlari, ommaviy oferta va cookie siyosati uçun sahifa şabloni (4.177): sarlavha va meta (kuçga kirgan sana, oxirgi yangilaniş, versiya), çapda yopişqoq mundarija (fx-toc — öqilayotgan bölimni belgilaydi), öngda avtomatik raqamlangan bölimlar (1., 1.1. — CSS hisoblagiç) va har bölim boşida «Qisqaça» — oddiy tilda xulosa. FoxUI bergan matn — faqat NAMUNA: .fx-legal__sample ogohlantirişi şablon yuristsiz işlatilmasligini aniq körsatadi (haqiqiy matn qöyilgaç olib taşlanadi). Çop etişda mundarija yaşirinadi.

- Qaçon: Maxfiylik siyosati, foydalaniş şartlari, ommaviy oferta, cookie siyosati sahifalari. Uzun, raqamlangan bandli har qanday rasmiy hujjat (nizom, qoidalar).
- Qaçon emas: Oddiy maqola yoki blog matni → `article`; Cookie roziligi banneri → `consent`
- Klaviatura: Tab — Mundarija havolalari, keyin matndagi havolalar; Enter (mundarijada) — Bölimga ötadi
- Tokenlar: --fx-bg-subtle, --fx-bg-surface, --fx-bg-warning-subtle, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-strong, --fx-border-width-default, --fx-border-width-focus, --fx-fg-warning, --fx-font-adjust-display, --fx-font-family-display, --fx-font-size-display-sm, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xl, --fx-font-size-xs, --fx-font-weight-semibold, --fx-line-height-normal, --fx-line-height-relaxed, --fx-line-height-snug, --fx-line-height-tight, --fx-radius-badge, --fx-radius-control, --fx-size-topbar, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-6, --fx-space-8, --fx-text-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<article class="fx-legal" aria-labelledby="lg-t">
  <header class="fx-legal__head">
    <p class="fx-legal__sample" role="note"><strong>Namuna matn</strong><span>Bu — FoxUI şablonidagi namuna. Huquqiy kuçga ega emas: öz kompaniyangiz ma'lumotlari bilan töldiring va yurist bilan tekşiring.</span></p>
    <h1 class="fx-legal__title" id="lg-t">Maxfiylik siyosati</h1>
    <dl class="fx-legal__meta"><div><dt>Kuçga kirgan</dt><dd><time datetime="2026-11-01">1-noyabr 2026</time></dd></div><div><dt>Oxirgi yangilaniş</dt><dd><time datetime="2026-10-18">18-oktabr 2026</time></dd></div><div><dt>Versiya</dt><dd>1.2</dd></div></dl>
  </header>
  <nav class="fx-legal__nav fx-toc" aria-label="Siyosat bölimlari" data-fx-toc>
    <p class="fx-toc__title">Mundarija</p>
    <ul class="fx-toc__list">
      <li><a class="fx-toc__link" href="#lg-1">Qanday ma'lumot yiğamiz</a></li>
      <li><a class="fx-toc__link" href="#lg-2">Ma'lumotdan foydalaniş</a></li>
      <li><a class="fx-toc__link" href="#lg-3">Saqlaş muddati</a></li>
      <li><a class="fx-toc__link" href="#lg-4">Sizning huquqlaringiz</a></li>
    </ul>
  </nav>
  <div class="fx-legal__body">
    <section class="fx-legal__section" id="lg-1" aria-labelledby="lg-1h"><h2 class="fx-legal__h" id="lg-1h">Qanday ma'lumot yiğamiz</h2>
      <p class="fx-legal__summary">Faqat ariza va obuna uçun zarur bölgan ism, telefon va email.</p>
      <p class="fx-legal__p">«Namuna Kompaniya» MChJ (keyingi örinlarda — Kompaniya) saytdagi forma orqali yuborilgan ism, telefon raqami va elektron poçta manzilini qabul qiladi.</p>
      <p class="fx-legal__p">Saytdan foydalaniş statistikasi faqat siz cookie'larga rozilik bergan holda, anonim körinişda yiğiladi.</p>
    </section>
    <section class="fx-legal__section" id="lg-2" aria-labelledby="lg-2h"><h2 class="fx-legal__h" id="lg-2h">Ma'lumotdan foydalaniş</h2>
      <p class="fx-legal__summary">Sizga javob beriş va obunani yuritiş uçun. Sotmaymiz.</p>
      <p class="fx-legal__p">Ma'lumotlar arizangizga javob beriş, hisob-faktura yuboriş va xizmat haqida muhim xabarlar uçun işlatiladi.</p>
      <p class="fx-legal__p">Kompaniya şaxsiy ma'lumotlarni uçinçi şaxslarga sotmaydi va qonunda belgilangan hollardan taşqari bermaydi.</p>
    </section>
    <section class="fx-legal__section" id="lg-3" aria-labelledby="lg-3h"><h2 class="fx-legal__h" id="lg-3h">Saqlaş muddati</h2>
      <p class="fx-legal__summary">Obuna davomida va undan keyin 3 yil.</p>
      <p class="fx-legal__p">Ma'lumotlar Özbekiston Respublikasi hududidagi serverlarda saqlanadi.</p>
    </section>
    <section class="fx-legal__section" id="lg-4" aria-labelledby="lg-4h"><h2 class="fx-legal__h" id="lg-4h">Sizning huquqlaringiz</h2>
      <p class="fx-legal__summary">Istalgan vaqtda köriş, tuzatiş yoki öçirişni söraşingiz mumkin.</p>
      <p class="fx-legal__p">Sörovni <a href="mailto:maxfiylik@namuna.uz">maxfiylik@namuna.uz</a> manziliga yuboring — 10 iş kuni içida javob beriladi.</p>
    </section>
    <footer class="fx-legal__foot"><span>Savollar: <a href="mailto:maxfiylik@namuna.uz">maxfiylik@namuna.uz</a></span><a href="#">Oldingi versiyalar</a></footer>
  </div>
</article>
```

- Qilmang: Namuna matnni haqiqiy siyosat sifatida joylamang — yurist tekşirmagan şablon huquqiy kuçga ega emas, .fx-legal__sample olib taşlanmagunça sahifa «namuna».
- Qilmang: Raqamlarni qölda yozmang — bölim qöşilsa hammasi siljiydi; CSS hisoblagiç özi raqamlaydi.
- Qilmang: «Qisqaça»da asosiy matnga zid yoki undan kengroq va'da bermang — u faqat xulosa.
- Qilmang: Yangilaniş sanasini yaşirmang: özgariş bölsa sana va versiya yangilanadi, eski versiya havolasi qoladi.

## Legenda (`legend`, beta, 0.23.0 dan)

Mustaqil legenda: rang belgisi + nom (+ qiymat). Grafik, uluş çiziği va köp bölakli progress yonida. Rollar 60/30/10 (ink, brend, aksent, xavf, kontekst); belgi şakli — kvadrat, nuqta yoki çiziq. Tugma bölsa (aria-pressed) seriyani yoqib-öçiradi (#62). Interaktiv (4.126): data-interactive + data-fx-legend + aria-controls — bandni bosiş boğlangan grafik seriyasini yaşiradi yoki qaytaradi (aria-pressed, oxirgi seriya öçmaydi).

- Qaçon: Grafik yoki köp bölakli çiziq ranglarini izohlaş.
- Qaçon emas: Yagona seriya → `chart`
- Variantlar: data-direction=column (standart row); data-role=brand|ink|accent|risk|context (standart brand); data-shape=dot|line (standart square); data-interactive=true
- Klaviatura: Tab, Enter, Space — Interaktiv legendada seriyani yoqadi/öçiradi
- Tokenlar: --fx-bg-muted, --fx-bg-pressed, --fx-border-color-focus, --fx-border-width-focus, --fx-font-size-xs, --fx-font-weight-medium, --fx-radius-badge, --fx-radius-circle, --fx-size-min-target, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary, --fx-viz-accent, --fx-viz-brand, --fx-viz-context, --fx-viz-ink, --fx-viz-risk, --fx-viz-track

```html
<ul class="fx-legend" aria-label="Seriyalar">
  <li class="fx-legend__item"><span class="fx-legend__swatch" data-role="ink"></span><span class="fx-legend__label">Bu yil</span><span class="fx-legend__value">1 240</span></li>
  <li class="fx-legend__item"><span class="fx-legend__swatch" data-role="context"></span><span class="fx-legend__label">Ötgan yil</span><span class="fx-legend__value">980</span></li>
  <li class="fx-legend__item"><span class="fx-legend__swatch" data-role="risk"></span><span class="fx-legend__label">Bekor qilingan</span><span class="fx-legend__value">34</span></li>
</ul>
<div class="fx-legend" role="group" aria-label="Seriyalarni körsatiş">
  <button class="fx-legend__item" type="button" aria-pressed="true"><span class="fx-legend__swatch" data-role="ink" data-shape="line"></span><span class="fx-legend__label">Tuşum</span></button>
  <button class="fx-legend__item" type="button" aria-pressed="false"><span class="fx-legend__swatch" data-role="accent" data-shape="line"></span><span class="fx-legend__label">Xarajat</span></button>
</div>
<div class="fx-legend" data-interactive data-fx-legend aria-controls="lg-chart" aria-label="Seriyalarni körsatiş">
  <button class="fx-legend__item" type="button" aria-pressed="true"><span class="fx-legend__swatch" data-role="ink"></span><span class="fx-legend__label">Toşkent</span></button>
  <button class="fx-legend__item" type="button" aria-pressed="true"><span class="fx-legend__swatch" data-role="brand"></span><span class="fx-legend__label">Samarqand</span></button>
  <button class="fx-legend__item" type="button" aria-pressed="false"><span class="fx-legend__swatch" data-role="context"></span><span class="fx-legend__label">Buxoro</span></button>
</div>
<figure class="fx-chart" id="lg-chart" data-fx-chart data-type="line" data-roles="ink,brand,context">
  <figcaption><span class="fx-chart__title">Filiallar böyiça buyurtmalar</span><span class="fx-chart__sub">dona · haftalik</span></figcaption>
  <table class="fx-chart__data"><thead><tr><th>Hafta</th><th>Toşkent</th><th>Samarqand</th><th>Buxoro</th></tr></thead>
  <tbody><tr><th>1</th><td>42</td><td>18</td><td>9</td></tr><tr><th>2</th><td>48</td><td>22</td><td>11</td></tr><tr><th>3</th><td>45</td><td>27</td><td>10</td></tr><tr><th>4</th><td>53</td><td>31</td><td>14</td></tr></tbody></table>
</figure>
```

- Qilmang: Rangni yolğiz belgi qilmang — nom doim yoziladi.
- Qilmang: 5 tadan köp seriya uçun legenda emas, bevosita yorliq yoki jadval.
- Qilmang: HEX bermang — rol (data-role).

## Linza (`lens`, beta, 0.29.0 dan)

Rasm ustida kursor atrofidagi doira kattalaştirib körsatiladi (Magic UI va Aceternity Lens) — mahsulot tafsiloti, xarita, çizma yoki skrinşotdagi mayda yozuv uçun. data-zoom — kattalaştiriş (1,5–5, standart 2), data-size — oyna ölçami, data-shape="square" — törtburçak oyna. Barmoqda bosib uşlab surilsa işlaydi; klaviaturada konteyner fokuslanadi — oyna markazda çiqadi, strelkalar suradi, + / − kattalaştiradi, Esc yopadi. .fx-lens__hint — ixtiyoriy yöl-yöriq yorliği.

- Qaçon: Mahsulot sahifasida mato, tikuv, detal yaqindan. Xarita, sxema, çizma yoki skrinşotdagi mayda yozuv.
- Qaçon emas: Rasmni töliq ekranda köriş → `lightbox`; Oddiy rasm → `image`
- Variantlar: data-size=sm|md|lg (standart md); data-shape=circle|square (standart circle)
- Klaviatura: Tab — Rasmga fokus — oyna markazda çiqadi; ← → ↑ ↓ — Oynani suradi (Shift — tezroq); + / − — Kattalaştiriş 1,5–5; Esc — Oynani yopadi
- Tokenlar: --fx-bg-overlay, --fx-bg-static-light, --fx-bg-surface, --fx-border-color-focus, --fx-border-width-focus, --fx-ease-spring, --fx-ease-standard, --fx-font-size-xs, --fx-lens-x, --fx-lens-y, --fx-lens-zoom, --fx-motion-base, --fx-motion-fast, --fx-motion-scale-enter, --fx-radius-badge, --fx-radius-circle, --fx-radius-surface, --fx-shadow-lg, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3

```html
<figure class="fx-lens" data-fx-lens data-zoom="2.5" style="margin:0;max-inline-size:40rem">
  <img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20640%20400%22%20font-family%3D%22sans-serif%22%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22whitesmoke%22/%3E%3Crect%20x%3D%226%22%20y%3D%226%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22gainsboro%22/%3E%3Crect%20x%3D%226%22%20y%3D%2256%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22lavender%22/%3E%3Crect%20x%3D%226%22%20y%3D%22106%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22gainsboro%22/%3E%3Crect%20x%3D%226%22%20y%3D%22156%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22linen%22/%3E%3Crect%20x%3D%226%22%20y%3D%22256%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22gainsboro%22/%3E%3Crect%20x%3D%226%22%20y%3D%22306%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22linen%22/%3E%3Crect%20x%3D%226%22%20y%3D%22356%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22lightgray%22/%3E%3Crect%20x%3D%2270%22%20y%3D%226%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22honeydew%22/%3E%3Crect%20x%3D%2270%22%20y%3D%2256%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22gainsboro%22/%3E%3Crect%20x%3D%2270%22%20y%3D%22106%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22honeydew%22/%3E%3Crect%20x%3D%2270%22%20y%3D%22156%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22lightgray%22/%3E%3Crect%20x%3D%2270%22%20y%3D%22206%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22honeydew%22/%3E%3Crect%20x%3D%2270%22%20y%3D%22256%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22honeydew%22/%3E%3Crect%20x%3D%2270%22%20y%3D%22306%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22linen%22/%3E%3Crect%20x%3D%2270%22%20y%3D%22356%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22lavender%22/%3E%3Crect%20x%3D%22134%22%20y%3D%226%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22lightgray%22/%3E%3Crect%20x%3D%22134%22%20y%3D%2256%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22honeydew%22/%3E%3Crect%20x%3D%22134%22%20y%3D%22106%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22linen%22/%3E%3Crect%20x%3D%22134%22%20y%3D%22156%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22gainsboro%22/%3E%3Crect%20x%3D%22134%22%20y%3D%22256%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22honeydew%22/%3E%3Crect%20x%3D%22134%22%20y%3D%22306%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22linen%22/%3E%3Crect%20x%3D%22134%22%20y%3D%22356%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22lavender%22/%3E%3Crect%20x%3D%22198%22%20y%3D%226%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22lavender%22/%3E%3Crect%20x%3D%22198%22%20y%3D%2256%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22lightgray%22/%3E%3Crect%20x%3D%22198%22%20y%3D%22106%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22gainsboro%22/%3E%3Crect%20x%3D%22198%22%20y%3D%22156%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22lavender%22/%3E%3Crect%20x%3D%22198%22%20y%3D%22206%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22honeydew%22/%3E%3Crect%20x%3D%22198%22%20y%3D%22256%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22lavender%22/%3E%3Crect%20x%3D%22198%22%20y%3D%22306%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22lightgray%22/%3E%3Crect%20x%3D%22262%22%20y%3D%226%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22lavender%22/%3E%3Crect%20x%3D%22262%22%20y%3D%22106%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22lavender%22/%3E%3Crect%20x%3D%22262%22%20y%3D%22156%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22honeydew%22/%3E%3Crect%20x%3D%22262%22%20y%3D%22206%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22linen%22/%3E%3Crect%20x%3D%22262%22%20y%3D%22256%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22linen%22/%3E%3Crect%20x%3D%22262%22%20y%3D%22306%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22honeydew%22/%3E%3Crect%20x%3D%22262%22%20y%3D%22356%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22gainsboro%22/%3E%3Crect%20x%3D%22326%22%20y%3D%226%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22honeydew%22/%3E%3Crect%20x%3D%22326%22%20y%3D%2256%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22linen%22/%3E%3Crect%20x%3D%22326%22%20y%3D%22156%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22lightgray%22/%3E%3Crect%20x%3D%22326%22%20y%3D%22206%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22gainsboro%22/%3E%3Crect%20x%3D%22326%22%20y%3D%22256%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22gainsboro%22/%3E%3Crect%20x%3D%22390%22%20y%3D%226%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22honeydew%22/%3E%3Crect%20x%3D%22390%22%20y%3D%2256%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22honeydew%22/%3E%3Crect%20x%3D%22390%22%20y%3D%22106%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22lightgray%22/%3E%3Crect%20x%3D%22390%22%20y%3D%22156%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22lavender%22/%3E%3Crect%20x%3D%22390%22%20y%3D%22306%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22gainsboro%22/%3E%3Crect%20x%3D%22390%22%20y%3D%22356%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22lightgray%22/%3E%3Crect%20x%3D%22454%22%20y%3D%2256%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22honeydew%22/%3E%3Crect%20x%3D%22454%22%20y%3D%22106%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22lightgray%22/%3E%3Crect%20x%3D%22454%22%20y%3D%22156%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22gainsboro%22/%3E%3Crect%20x%3D%22454%22%20y%3D%22206%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22lavender%22/%3E%3Crect%20x%3D%22454%22%20y%3D%22256%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22honeydew%22/%3E%3Crect%20x%3D%22454%22%20y%3D%22356%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22lavender%22/%3E%3Crect%20x%3D%22518%22%20y%3D%2256%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22lightgray%22/%3E%3Crect%20x%3D%22518%22%20y%3D%22106%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22gainsboro%22/%3E%3Crect%20x%3D%22518%22%20y%3D%22156%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22lightgray%22/%3E%3Crect%20x%3D%22518%22%20y%3D%22206%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22lightgray%22/%3E%3Crect%20x%3D%22518%22%20y%3D%22256%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22linen%22/%3E%3Crect%20x%3D%22518%22%20y%3D%22306%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22lightgray%22/%3E%3Crect%20x%3D%22518%22%20y%3D%22356%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22gainsboro%22/%3E%3Crect%20x%3D%22582%22%20y%3D%226%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22linen%22/%3E%3Crect%20x%3D%22582%22%20y%3D%2256%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22lavender%22/%3E%3Crect%20x%3D%22582%22%20y%3D%22106%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22lightgray%22/%3E%3Crect%20x%3D%22582%22%20y%3D%22156%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22lightgray%22/%3E%3Crect%20x%3D%22582%22%20y%3D%22206%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22lavender%22/%3E%3Crect%20x%3D%22582%22%20y%3D%22256%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22lavender%22/%3E%3Crect%20x%3D%22582%22%20y%3D%22306%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22lavender%22/%3E%3Crect%20x%3D%22582%22%20y%3D%22356%22%20width%3D%2252%22%20height%3D%2238%22%20rx%3D%224%22%20fill%3D%22lavender%22/%3E%3Cpath%20d%3D%22M-10%20300%20C%20120%20250%20200%20340%20330%20290%20S%20520%20230%20650%20270%22%20stroke%3D%22lightskyblue%22%20stroke-width%3D%2222%22%20fill%3D%22none%22/%3E%3Cpath%20d%3D%22M40%2020%20L%20600%20380%22%20stroke%3D%22tomato%22%20stroke-width%3D%225%22%20fill%3D%22none%22/%3E%3Cpath%20d%3D%22M600%2030%20L%2060%20360%22%20stroke%3D%22royalblue%22%20stroke-width%3D%225%22%20fill%3D%22none%22/%3E%3Cpath%20d%3D%22M20%20200%20H%20620%22%20stroke%3D%22seagreen%22%20stroke-width%3D%225%22%20fill%3D%22none%22/%3E%3Ccircle%20cx%3D%22130%22%20cy%3D%2295%22%20r%3D%227%22%20fill%3D%22white%22%20stroke%3D%22black%22%20stroke-width%3D%222.5%22/%3E%3Ctext%20x%3D%22140%22%20y%3D%2286%22%20font-size%3D%229%22%20fill%3D%22black%22%3EChorsu%3C/text%3E%3Ccircle%20cx%3D%22320%22%20cy%3D%22200%22%20r%3D%227%22%20fill%3D%22white%22%20stroke%3D%22black%22%20stroke-width%3D%222.5%22/%3E%3Ctext%20x%3D%22330%22%20y%3D%22191%22%20font-size%3D%229%22%20fill%3D%22black%22%3EAmir%20Temur%20xiyoboni%3C/text%3E%3Ccircle%20cx%3D%22500%22%20cy%3D%22310%22%20r%3D%227%22%20fill%3D%22white%22%20stroke%3D%22black%22%20stroke-width%3D%222.5%22/%3E%3Ctext%20x%3D%22510%22%20y%3D%22301%22%20font-size%3D%229%22%20fill%3D%22black%22%3EToshkent%3C/text%3E%3Ccircle%20cx%3D%22200%22%20cy%3D%22200%22%20r%3D%227%22%20fill%3D%22white%22%20stroke%3D%22black%22%20stroke-width%3D%222.5%22/%3E%3Ctext%20x%3D%22210%22%20y%3D%22191%22%20font-size%3D%229%22%20fill%3D%22black%22%3EPaxtakor%3C/text%3E%3Ccircle%20cx%3D%22470%22%20cy%3D%22200%22%20r%3D%227%22%20fill%3D%22white%22%20stroke%3D%22black%22%20stroke-width%3D%222.5%22/%3E%3Ctext%20x%3D%22480%22%20y%3D%22191%22%20font-size%3D%229%22%20fill%3D%22black%22%3EOybek%3C/text%3E%3Ccircle%20cx%3D%22140%22%20cy%3D%22300%22%20r%3D%227%22%20fill%3D%22white%22%20stroke%3D%22black%22%20stroke-width%3D%222.5%22/%3E%3Ctext%20x%3D%22150%22%20y%3D%22291%22%20font-size%3D%229%22%20fill%3D%22black%22%3EBunyodkor%3C/text%3E%3Ccircle%20cx%3D%22480%22%20cy%3D%2295%22%20r%3D%227%22%20fill%3D%22white%22%20stroke%3D%22black%22%20stroke-width%3D%222.5%22/%3E%3Ctext%20x%3D%22490%22%20y%3D%2286%22%20font-size%3D%229%22%20fill%3D%22black%22%3EYunus%20Rajabiy%3C/text%3E%3Ctext%20x%3D%2218%22%20y%3D%22390%22%20font-size%3D%228%22%20fill%3D%22dimgray%22%3EMetro%20xaritasi%20%C2%B7%20masshtab%201%3A25%20000%3C/text%3E%3C/svg%3E" alt="Toşkent metro xaritasi: Çorsu, Paxtakor, Amir Temur xiyoboni, Oybek va boşqa bekatlar" width="640" height="400">
  <span class="fx-lens__hint" aria-hidden="true">Kursorni olib boring yoki Tab + strelkalar</span>
</figure>
```

- Qilmang: Rasmning yagona ma'lumot manbai bölmasin — muhim yozuvlar alt matnda yoki yonida ham bölsin.
- Qilmang: Kiçik (ikon, avatar) rasmga qöymang — kamida 320 px enli rasm.
- Qilmang: Galereyada har rasmga qöymang — töliq köriş uçun lightbox.

## Xat (asosçiga taklif) (`letter`, beta, 0.1.0 dan)

Bitta odamga — asosçi, muallif, rahbarga — töğridan-töğri xat bloki: çapda kimga (sarlavha, bir gap, avatar va ism), öngda bitta yaxlit xat yuzasi — maydon, içidagi pastki qatorda yuboruvçi, belgilar sanoği va «Yuboriş». Uç holat: kirgan (forma), mehmon (butun yuza — kirişga havola, edge keşga mos), yuborildi (rahmat). Soyasiz, brend tusidagi fon. Fox MB sörovi (Manbaa «Asosçiga taklif», 21.10).

- Qaçon: Boş sahifada asosçi yoki muallifga taklif, fikr-mulohaza. «Rahbarga yozing», «Muharrirga xat» kabi bitta odamga murojaat.
- Qaçon emas: Köp maydonli ariza (ism, telefon, xizmat) → `form`; Çat yoki suhbat oqimi → `composer`
- Klaviatura: Tab — Maydon → Yuboriş; Enter (tugmada) — Yuboradi
- Tokenlar: --fx-bg-brand-solid, --fx-bg-brand-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-ease-standard, --fx-font-adjust-display, --fx-font-family-display, --fx-font-size-2xl, --fx-font-size-display-sm, --fx-font-size-lg, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-motion-fast, --fx-radius-circle, --fx-radius-overlay, --fx-radius-surface, --fx-size-icon-sm, --fx-space-1, --fx-space-10, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-space-6, --fx-text-brand, --fx-text-error, --fx-text-on-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<section class="fx-letter" aria-labelledby="lt1-t" data-fx-letter>
  <div class="fx-letter__intro">
    <p class="fx-letter__kicker">Töğridan-töğri</p>
    <h2 class="fx-letter__title" id="lt1-t">Taklifingizni <em>asosçiga</em> yozing</h2>
    <p class="fx-letter__text">Fikr, ğoya yoki tanqid — xatingiz töğridan-töğri asosçiga boradi.</p>
    <div class="fx-letter__person"><span class="fx-avatar" data-size="md" data-color="purple" aria-hidden="true">RS</span><span><b>Rahim Sadiy</b><small>Manbaa asosçisi</small></span></div>
  </div>
  <div class="fx-letter__main">
    <form class="fx-letter__box" method="post" action="#">
      <label class="fx-sr-only" for="lt1-m">Taklifingiz</label>
      <textarea class="fx-letter__input" id="lt1-m" name="matn" rows="3" minlength="10" maxlength="3000" required placeholder="Manbaa'da nimani koʻrishni xohlaysiz?"></textarea>
      <div class="fx-letter__bar"><span class="fx-letter__from">Yuboruvçi: Dilnoza Karimova · @dilnoza_k</span><span class="fx-letter__end"><span class="fx-letter__count" aria-live="polite">0 / 3000</span><button class="fx-btn fx-letter__send" data-variant="primary" type="submit">Yuboriş<svg viewBox="0 0 256 256" aria-hidden="true"><path fill="currentColor" d="M221.66,133.66l-72,72a8,8,0,0,1-11.32-11.32L196.69,136H40a8,8,0,0,1,0-16H196.69L138.34,61.66a8,8,0,0,1,11.32-11.32l72,72A8,8,0,0,1,221.66,133.66Z"/></svg></button></span></div>
    </form>
    <p class="fx-letter__note">Javob Telegram orqali keladi.</p>
  </div>
</section>
<!-- mehmon: butun yuza — kirishga havola (edge keshda hamma uchun bir xil) -->
<section class="fx-letter" aria-labelledby="lt2-t">
  <div class="fx-letter__intro">
    <p class="fx-letter__kicker">Töğridan-töğri</p>
    <h2 class="fx-letter__title" id="lt2-t">Taklifingizni <em>asosçiga</em> yozing</h2>
    <p class="fx-letter__text">Fikr, ğoya yoki tanqid — xatingiz töğridan-töğri asosçiga boradi.</p>
    <div class="fx-letter__person"><span class="fx-avatar" data-size="md" data-color="purple" aria-hidden="true">RS</span><span><b>Rahim Sadiy</b><small>Manbaa asosçisi</small></span></div>
  </div>
  <div class="fx-letter__main">
    <a class="fx-letter__box" href="#kirish"><span class="fx-letter__ghost">Taklif yoziş uçun kiring — bir daqiqa, Telegram yoki Google bilan</span><span class="fx-letter__bar"><span class="fx-letter__from">Asosçi sizga javob qaytara olişi uçun</span><span class="fx-letter__end"><span class="fx-btn fx-letter__send" data-variant="primary">Kiriş<svg viewBox="0 0 256 256" aria-hidden="true"><path fill="currentColor" d="M221.66,133.66l-72,72a8,8,0,0,1-11.32-11.32L196.69,136H40a8,8,0,0,1,0-16H196.69L138.34,61.66a8,8,0,0,1,11.32-11.32l72,72A8,8,0,0,1,221.66,133.66Z"/></svg></span></span></span></a>
  </div>
</section>
<!-- yuborildi -->
<section class="fx-letter" aria-labelledby="lt3-t">
  <div class="fx-letter__intro">
    <p class="fx-letter__kicker">Töğridan-töğri</p>
    <h2 class="fx-letter__title" id="lt3-t">Taklifingizni <em>asosçiga</em> yozing</h2>
    <p class="fx-letter__text">Fikr, ğoya yoki tanqid — xatingiz töğridan-töğri asosçiga boradi.</p>
    <div class="fx-letter__person"><span class="fx-avatar" data-size="md" data-color="purple" aria-hidden="true">RS</span><span><b>Rahim Sadiy</b><small>Manbaa asosçisi</small></span></div>
  </div>
  <div class="fx-letter__main">
    <div class="fx-letter__done" role="status"><svg viewBox="0 0 256 256" aria-hidden="true"><path fill="currentColor" d="M229.66,77.66l-128,128a8,8,0,0,1-11.32,0l-56-56a8,8,0,0,1,11.32-11.32L96,188.69,218.34,66.34a8,8,0,0,1,11.32,11.32Z"/></svg><b>Rahmat! Taklifingiz asosçiga yetkazildi.</b><p>Javob Telegram orqali keladi. Yana yozmoqçimisiz? Sahifani yangilang.</p></div>
  </div>
</section>
```

- Qilmang: Mehmonga öçirilgan (disabled) kulrang maydon körsatmang — u «buzuq» körinadi; butun yuza kirişga havola bölsin.
- Qilmang: Maydon va tugmani ikki alohida obyekt qilib yonma-yon qöymang — tugma xat yuzasining içidagi pastki qatorda.
- Qilmang: Soya qöşmang — blok fon tusi bilan ajraladi.

## Lightbox (`lightbox`, beta, 0.24.0 dan)

Rasm körgiç: töliq ekran native <dialog> — katta rasm, yaqinlaştiriş (bosiş yoki ⊕; siçqonça siljitilsa rasm suriladi), oldingi/keyingi, sanagiç, imzo. Esc yopadi, ← → almaştiradi, gorizontal suriş ham almaştiradi. Içki tuzilmani xulq özi quradi; oçuvçilar data-fx-lightbox-target="<dialog id>".

- Qaçon: Tördagi rasmni töliq ekranda köriş, yaqinlaştiriş va qöşnilariga ötiş kerak bölganda.
- Qaçon emas: Forma yoki tasdiq oynasi → `dialog`; Yon panelda tafsilot → `sheet`
- Klaviatura: ← → — Oldingi/keyingi rasm; + / − / Z — Yaqinlaştiriş/kiçraytiriş; Esc — Yopadi; Tab — Dialog içida aylanadi
- Tokenlar: --fx-bg-brand-solid, --fx-bg-overlay, --fx-border-width-focus, --fx-control-h-md, --fx-ease-emphasized, --fx-ease-enter, --fx-ease-exit, --fx-ease-standard, --fx-font-size-lg, --fx-font-size-sm, --fx-motion-base, --fx-motion-exit-base, --fx-motion-fast, --fx-motion-instant, --fx-motion-press, --fx-radius-circle, --fx-space-2, --fx-space-3, --fx-space-4, --fx-text-on-brand

```html
<div class="fx-gallery" data-cols="3" style="max-inline-size: 24rem">
  <a class="fx-gallery__item" href="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23e8875a%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23c2410c%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EBozor%3C%2Ftext%3E%3C%2Fsvg%3E" data-fx-lightbox-target="lb2" data-caption="Çorsu bozori"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23e8875a%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23c2410c%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EBozor%3C%2Ftext%3E%3C%2Fsvg%3E" alt="Çorsu bozori"></a>
  <a class="fx-gallery__item" href="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%235a8be8%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%231d4ed8%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EOmbor%3C%2Ftext%3E%3C%2Fsvg%3E" data-fx-lightbox-target="lb2" data-caption="Markaziy ombor"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%235a8be8%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%231d4ed8%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EOmbor%3C%2Ftext%3E%3C%2Fsvg%3E" alt="Markaziy ombor"></a>
  <a class="fx-gallery__item" href="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%234fb286%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23047857%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EOfis%3C%2Ftext%3E%3C%2Fsvg%3E" data-fx-lightbox-target="lb2" data-caption="Yangi ofis"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20640%20400%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%234fb286%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%23047857%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22640%22%20height%3D%22400%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22320%22%20y%3D%22214%22%20font-family%3D%22sans-serif%22%20font-size%3D%2244%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EOfis%3C%2Ftext%3E%3C%2Fsvg%3E" alt="Yangi ofis"></a>
</div>
<dialog class="fx-lightbox" id="lb2" data-fx-lightbox aria-label="Rasm körgiç"></dialog>
```

- Qilmang: Lightbox içiga şakl yoki uzun matn qöymang — bu faqat rasm uçun.
- Qilmang: Rasmning alt matnini imzosiz qoldirmang: imzo yoki alt körsatiladi.

## Havola (`link`, beta, 0.8.0 dan)

Boşqa sahifa yoki manzilga ötadigan matn. Brend rangida, tagi çizilgan; ustiga borilganda çiziq yöqoladi. Kengaytma: target=_blank / data-external ↗ ikoni (matnda “yangi oynada” bölsin), data-variant=more (“Hammasi →”), data-visited (ixtiyoriy), bosmada manzil çiqadi. Harakat (4.37): data-underline="grow" — tinç holatda xira çiziq, ustiga borilganda yoki fokusda töliq çiziq boşidan oxiriga çiziladi va çiqişda oxiriga qarab yiğiladi (RTL'da öngdan); data-weight="bold" — qalinroq çiziq. Menyu, footer va maqola içida işlaydi; harakat kamaytirilsa çiziq darhol paydo böladi.

- Qaçon: Boşqa sahifaga yoki manzilga ötiş matn içida.
- Qaçon emas: Amal bajariş → `button`
- Variantlar: data-tone=brand|muted (standart brand); data-variant=more; data-underline=grow; data-weight=bold
- Klaviatura: Enter — Ötadi
- Tokenlar: --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-ease-emphasized, --fx-ease-enter, --fx-ease-standard, --fx-font-weight-medium, --fx-motion-base, --fx-motion-fast, --fx-motion-slow, --fx-radius-badge, --fx-space-1, --fx-text-brand, --fx-text-secondary

```html
<p>Batafsil: <a class="fx-link" href="#">foydalaniş şartlari</a>.</p>
<p><a class="fx-link" data-tone="muted" href="#">Yordam markazi</a></p>
<a class="fx-link" href="https://example.uz" target="_blank" rel="noopener">Hujjatlar<span class="fx-sr-only"> (yangi oynada)</span></a> <a class="fx-link" data-variant="more" href="#">Hammasi</a>
<nav aria-label="Pastki menyu" style="display:flex;flex-wrap:wrap;gap:var(--fx-space-5);margin-block-start:var(--fx-space-4)"><a class="fx-link" data-underline="grow" data-tone="muted" href="#">Narxlar</a><a class="fx-link" data-underline="grow" data-tone="muted" href="#">Hujjatlar</a><a class="fx-link" data-underline="grow" data-tone="muted" href="#">Nima yangi</a><a class="fx-link" data-underline="grow" data-weight="bold" href="#">Boğlaniş</a></nav>
```

- Qilmang: Amal uçun havola işlatmang (saqlaş, öçiriş) — tugma.
- Qilmang: data-underline="grow"ni uzun abzatsdagi har havolaga qöymang — menyu, footer va kartalar uçun.

## Havola oldindan köriş (`linkpreview`, beta, 0.29.0 dan)

Havola ustiga kursor olib borilganda (yoki fokusda) sahifaning kiçik rasmi, sarlavhasi, qisqa tavsifi va domeni çiqadi (4.81) — foydalanuvçi bosmasdan qayerga ketişini köradi. Xulq hover kartaniki (data-fx-hovercard: keçikiş, Esc, karta ustida yopilmaydi); bu komponent faqat körinişni beradi: class="fx-hovercard fx-linkpreview". Rasm — oldindan tayyorlangan OG rasm (1,91:1).

- Qaçon: Maqola, yordam markazi va çatdagi taşqi havolalar. Changelog yoki e'lonlarda boşqa sahifaga işora.
- Qaçon emas: Odam yoki yozuv haqida qisqa ma'lumot → `hovercard`; Bir sözli izoh → `tip`
- Variantlar: data-size=sm (standart md)
- Klaviatura: Tab (fokus) — ~300 ms dan keyin oldindan köriş oçiladi; Esc — Yopadi
- Tokenlar: --fx-bg-muted, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-semibold, --fx-line-height-snug, --fx-radius-control, --fx-size-icon-sm, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-8, --fx-text-secondary, --fx-text-tertiary

```html
<p style="max-inline-size:40rem">Yangi tariflar haqida <a class="fx-link" href="#" data-fx-hovercard="lp-tarif">narxlar sahifasida</a> yozilgan, ulaniş böyiça — <a class="fx-link" href="#" data-fx-hovercard="lp-docs">hujjatlar</a>da.</p>
<div class="fx-hovercard fx-linkpreview" id="lp-tarif" popover="manual">
  <img class="fx-linkpreview__shot" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20600%20314%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22hsl(200%2070%25%2072%25)%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22hsl(230%2060%25%2042%25)%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22600%22%20height%3D%22314%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22300%22%20y%3D%22171%22%20font-family%3D%22sans-serif%22%20font-size%3D%2235%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3ETariflar%3C%2Ftext%3E%3C%2Fsvg%3E" alt="" width="600" height="314">
  <div class="fx-linkpreview__body"><p class="fx-linkpreview__title">Tariflar — oylik va yillik obuna</p><p class="fx-linkpreview__desc">Start, Biznes va Korporativ tariflar: 3 foydalanuvçidan boşlab, yillik tölovda 2 oy bepul.</p><span class="fx-linkpreview__domain"><svg viewBox="0 0 256 256" aria-hidden="true"><path d="M224,104a8,8,0,0,1-16,0V59.32l-66.33,66.34a8,8,0,0,1-11.32-11.32L196.68,48H152a8,8,0,0,1,0-16h64a8,8,0,0,1,8,8Zm-40,24a8,8,0,0,0-8,8v72H48V80h72a8,8,0,0,0,0-16H48A16,16,0,0,0,32,80V208a16,16,0,0,0,16,16H176a16,16,0,0,0,16-16V136A8,8,0,0,0,184,128Z"/></svg>savdo.uz/tariflar</span></div>
</div>
<div class="fx-hovercard fx-linkpreview" id="lp-docs" popover="manual">
  <img class="fx-linkpreview__shot" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20600%20314%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22hsl(150%2070%25%2072%25)%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22hsl(180%2060%25%2042%25)%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22600%22%20height%3D%22314%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22300%22%20y%3D%22171%22%20font-family%3D%22sans-serif%22%20font-size%3D%2235%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3EHujjatlar%3C%2Ftext%3E%3C%2Fsvg%3E" alt="" width="600" height="314">
  <div class="fx-linkpreview__body"><p class="fx-linkpreview__title">Telegram botni CRM'ga ulaş</p><p class="fx-linkpreview__desc">5 daqiqalik qöllanma: bot tokeni, webhook va arizalarni avtomatik taqsimlaş.</p><span class="fx-linkpreview__domain"><svg viewBox="0 0 256 256" aria-hidden="true"><path d="M224,104a8,8,0,0,1-16,0V59.32l-66.33,66.34a8,8,0,0,1-11.32-11.32L196.68,48H152a8,8,0,0,1,0-16h64a8,8,0,0,1,8,8Zm-40,24a8,8,0,0,0-8,8v72H48V80h72a8,8,0,0,0,0-16H48A16,16,0,0,0,32,80V208a16,16,0,0,0,16,16H176a16,16,0,0,0,16-16V136A8,8,0,0,0,184,128Z"/></svg>docs.savdo.uz</span></div>
</div>
```

- Qilmang: Içki sahifadagi har havolaga qöymang — faqat taşqi yoki muhim havolalarga.
- Qilmang: Kartaga yagona muhim amal yoki ma'lumot qöymang — u faqat qöşimça.
- Qilmang: Rasm yöq bölsa, böş ramka körsatmang — data-size="sm" yoki rasmsiz variant.

## Röyxat (`list`, beta, 0.12.0 dan)

Qatorlar röyxati: çapda avatar yoki belgi, örtada sarlavha va meta (bitta qator, «…» bilan), öngda qiymat yoki amal. Butun qator havola bölişi mumkin. Variantlar: belgilanadigan qator (.fx-check), amalli qator, ixçam, kartali. Kengaytma: .fx-list__lead (çap slot), data-divider=none, data-focus=inset.

- Qaçon: Bir xil turdagi yozuvlar: mijozlar, xabarlar, fayllar — köp ustun kerak bölmasa.
- Qaçon emas: Ustunlar böyiça soliştiriş → `table`
- Variantlar: data-density=compact (standart default); data-variant=card (standart default); data-divider=none; data-focus=inset
- Klaviatura: Tab, Enter — Qator havolasiga ötadi
- Tokenlar: --fx-bg-brand-subtle, --fx-bg-muted, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-md, --fx-control-h-sm, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-radius-nav, --fx-radius-surface, --fx-size-icon-md, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-text-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<ul class="fx-list">
  <li class="fx-list__item"><a class="fx-list__link" href="#"><span class="fx-avatar" data-size="sm" data-color="yellow" role="img" aria-label="Aziz">AZ</span><span class="fx-list__body"><span class="fx-list__title">Aziz Karimov</span><span class="fx-list__meta">Obuna · 2 kun oldin</span></span><span class="fx-list__end">250 000 söm</span></a></li>
  <li class="fx-list__item"><a class="fx-list__link" href="#"><span class="fx-avatar" data-size="sm" data-color="blue" role="img" aria-label="Bobur">BO</span><span class="fx-list__body"><span class="fx-list__title">Bobur Toshmatov</span><span class="fx-list__meta">Savol · bugun 09:14</span></span><span class="fx-list__end"><span class="fx-status" data-tone="pending">Kutilmoqda</span></span></a></li>
</ul>
<ul class="fx-list" data-variant="card" data-density="compact">
  <li class="fx-list__item"><label class="fx-check fx-list__check"><input type="checkbox" aria-label="Aziz Karimovni tanlaş"><span class="fx-check__box"></span></label><span class="fx-list__body"><span class="fx-list__title">Aziz Karimov</span><span class="fx-list__meta">Obuna</span></span><span class="fx-list__end"><button class="fx-btn" type="button">Oçiş</button></span></li>
</ul>
<ul class="fx-list" data-divider="none"><li class="fx-list__item"><span class="fx-list__lead" aria-hidden="true">★</span><div class="fx-list__body"><span class="fx-list__title">Sevimli</span></div></li></ul>
```

- Qilmang: Qator içida bir neçta havola qilmang, agar butun qator havola bölsa.

## Variantlar röyxati (`listbox`, beta, 0.15.0 dan)

Combobox va buyruqlar oynasining içki röyxati: guruh sarlavhasi, variant (ikonka yoki avatar, nom, izoh, öngda maslahat), faol variant, köp tanlovda ✓ (aria-multiselectable), «Yaratiş» varianti, böş holat. Özi alohida işlatilmaydi.

- Qaçon: Combobox va buyruqlar oynasi içida.
- Qaçon emas: Amallar röyxati → `menu`
- Tokenlar: --fx-bg-muted, --fx-bg-pressed, --fx-control-h-md, --fx-control-h-sm, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-radius-nav, --fx-size-icon-sm, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-6, --fx-text-brand, --fx-text-primary, --fx-text-tertiary

```html
<ul class="fx-listbox" role="listbox" aria-label="Viloyatlar">
  <li class="fx-listbox__group" role="presentation">Viloyatlar</li>
  <li class="fx-option" role="option" id="o1" data-active>Toşkent</li>
  <li class="fx-option" role="option" id="o2" aria-selected="true">Samarqand</li>
  <li class="fx-option" role="option" id="o3">Farğona <span class="fx-option__hint">vodiy</span></li>
</ul>
<ul class="fx-listbox" role="listbox" aria-multiselectable="true" aria-label="Mas'ullar">
  <li class="fx-option fx-option--lg" role="option" id="p1" aria-selected="true"><span class="fx-avatar" data-size="sm" data-color="yellow" aria-hidden="true">AK</span><span class="fx-option__body">Aziz Karimov<span class="fx-option__desc">aziz@namuna.uz</span></span></li>
  <li class="fx-option fx-option--lg" role="option" id="p2"><span class="fx-avatar" data-size="sm" data-color="green" aria-hidden="true">BT</span><span class="fx-option__body">Bobur Toshmatov<span class="fx-option__desc">bobur@namuna.uz</span></span></li>
</ul>
```

- Qilmang: Röyxatni combobox yoki buyruqlar oynasisiz alohida qöymang.

## Röyxat sahifasi (`listpage`, beta, 0.23.0 dan)

Röyxat sahifasi qolipi (PDP «Masdar»): sarlavha + son + asosiy amal → xulosa tasmasi → saqlangan körinişlar → filtr qatori → jadval → sahifalaş; ommaviy panel jadval ostida suzadi. Qolip faqat tartib beradi, komponentlar — alohida.

- Qaçon: CRM/ERP'da jadvalli röyxat ekrani.
- Qaçon emas: Boş panel (körsatkiçlar, grafiklar) → `layout`; Karta körinişidagi röyxat → `list`
- Tokenlar: --fx-bg-surface, --fx-border-color-surface, --fx-border-width-default, --fx-control-h-lg, --fx-font-size-md, --fx-font-size-xl, --fx-font-weight-regular, --fx-font-weight-semibold, --fx-radius-surface, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-text-tertiary

```html
<div class="fx-listpage">
  <header class="fx-listpage__head"><h2 class="fx-listpage__title">Arizalar <span class="fx-listpage__n">248</span></h2><div class="fx-listpage__actions"><button class="fx-btn" data-variant="primary" type="button">Yangi ariza</button></div></header>
  <div class="fx-views" role="group" aria-label="Körinişlar"><button class="fx-views__item" type="button" aria-pressed="true">Hammasi <span class="fx-views__count">248</span></button><button class="fx-views__item" type="button" aria-pressed="false">Muddati ötgan <span class="fx-views__count" data-tone="error">12</span></button></div>
  <div class="fx-filterbar" data-fx-filterbar><div class="fx-filterbar__main" role="search" aria-label="Filtrlaş"><div class="fx-filterbar__search"><label class="fx-search" data-size="sm"><input class="fx-search__input" type="search" placeholder="Qidiriş" aria-label="Qidiriş"></label></div></div></div>
  <div class="fx-listpage__table"><div class="fx-table-scroll"><table class="fx-table"><caption class="fx-sr-only">Arizalar</caption><thead><tr><th scope="col">Mijoz</th><th scope="col" data-type="num">Summa</th></tr></thead><tbody><tr><td>Aziz</td><td data-type="num">1 200 000</td></tr><tr><td>Bobur</td><td data-type="num">450 000</td></tr></tbody></table></div></div>
  <div class="fx-listpage__foot"><nav class="fx-pagination" data-variant="minimal" aria-label="Sahifalar"><span class="fx-pagination__info">1–2 / 248</span><a class="fx-pagination__page" aria-disabled="true" aria-label="Oldingi">‹</a><a class="fx-pagination__page" href="#" aria-label="Keyingi">›</a></nav></div>
</div>
```

- Qilmang: Qolipga dashboard grafiklarini qöymang — u boş panel.
- Qilmang: Jadvalni sahifa bilan birga aylantirmang — jadval öz hududida (fx-table-scroll).
- Qilmang: Ommaviy panelni jadval içiga qöymang — pastda suzadi (fx-bulkbar).

## Yuklaniş qoplamasi (`loading`, beta, 0.22.0 dan)

Blok ustida xira qatlam + aylana: kontent joyida qoladi, ota aria-busy="true" bölsa körinadi. Variantlar: xira (andoza), blur, butun sahifa.

- Qaçon: Mavjud kontent qayta yuklanayotganda (filtr, yangilaş).
- Qaçon emas: Birinçi yuklaniş → `skeleton`; Tugma içidagi jarayon → `button`; Sahifalararo ötiş → `toploader`
- Variantlar: data-variant=blur (standart dim); data-scope=page (standart block)
- Tokenlar: --fx-bg-page, --fx-ease-enter, --fx-ease-exit, --fx-font-size-sm, --fx-motion-base, --fx-motion-exit-fast, --fx-space-1, --fx-space-2, --fx-text-secondary

```html
<div class="fx-loading" aria-busy="true">
  <div class="fx-loading__content" inert>
    <div class="fx-card"><p class="fx-card__title">Haftalik hisobot</p><p class="fx-card__text">24 ta yangi ariza, 6 ta yopilgan bitim.</p></div>
  </div>
  <div class="fx-loading__overlay">
    <span class="fx-spinner" aria-hidden="true"></span>
    <p class="fx-loading__text" role="status">Yangilanmoqda…</p>
  </div>
</div>
```

- Qilmang: Ostidagi kontentni inert qilmay qoldirmang — fokus va bosiş yaşirin elementga ketadi.
- Qilmang: Birinçi yuklanişda qoplama emas — skelet (kontent şaklini körsatadi).
- Qilmang: Butun sahifa qoplamasini 1 soniyadan qisqa jarayonga qöymang — miltillaydi.

## Logolar bulutiga işonç (`logos`, beta, 0.28.0 dan)

Ijtimoiy isbot qatori (4.175): qisqa sarlavha («… jamoalar işonadi») va mijoz yoki hamkor logolari. Logolar kulrang va biroz xira — sahifani bezamaydi, hover yoki fokusda asl rangiga qaytadi. data-layout: row (standart — markazda oqim), grid (çegarali kataklar). Harakatli variant — röyxatni .fx-marquee içiga qöying (.fx-marquee__track fx-logos__list). Logo — currentColor'li SVG yoki rasm.

- Qaçon: Hero ostida yoki narx sahifasida işonç belgisi. Integratsiyalar va hamkorlar röyxati (grid).
- Qaçon emas: Mijoz fikrlari → `testimonials`; Bosiladigan integratsiya kartalari → `card`
- Variantlar: data-layout=grid (standart row); data-tone=color (standart mono)
- Tokenlar: --fx-bg-page, --fx-border-color-default, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-ease-standard, --fx-font-size-lg, --fx-font-size-sm, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-motion-base, --fx-popover-width, --fx-radius-badge, --fx-radius-surface, --fx-size-icon-lg, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-4, --fx-space-6, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<section class="fx-logos" aria-labelledby="lg-t">
  <h2 class="fx-logos__title" id="lg-t">Bizning yeçimlar bilan işlayotgan jamoalar</h2>
  <ul class="fx-logos__list"><li><span class="fx-logos__item"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 9l2-5h12l2 5M4 9h16v11H4zM9 20v-6h6v6" fill="none" stroke="currentColor" stroke-width="2" stroke-linejoin="round"/></svg>Çorsu Market</span></li><li><span class="fx-logos__item"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 21c-5-3-8-7-8-11a8 8 0 0 1 16 0c0 4-3 8-8 11z" fill="currentColor"/></svg>Navbahor Soft</span></li><li><span class="fx-logos__item"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M3 18c4-8 14-4 18-12" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round"/></svg>Ipak Yöli Lab</span></li><li><span class="fx-logos__item"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 21V10a8 8 0 0 1 16 0v11zM9 21v-6a3 3 0 0 1 6 0v6" fill="currentColor"/></svg>Registon Media</span></li><li><span class="fx-logos__item"><svg viewBox="0 0 24 24" aria-hidden="true"><rect x="3" y="3" width="8" height="8" rx="2" fill="currentColor"/><rect x="13" y="13" width="8" height="8" rx="4" fill="currentColor"/></svg>Tashkent Digital</span></li><li><span class="fx-logos__item"><svg viewBox="0 0 24 24" aria-hidden="true"><circle cx="12" cy="12" r="9" fill="none" stroke="currentColor" stroke-width="2"/><path d="M3 12h18M12 3c3 3 3 15 0 18" fill="none" stroke="currentColor" stroke-width="2"/></svg>Samarqand Travel</span></li></ul>
</section>
<section class="fx-logos" data-layout="grid" aria-label="Hamkorlar" style="margin-block-start:var(--fx-space-10)">
  <ul class="fx-logos__list"><li><span class="fx-logos__item"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 9l2-5h12l2 5M4 9h16v11H4zM9 20v-6h6v6" fill="none" stroke="currentColor" stroke-width="2" stroke-linejoin="round"/></svg>Çorsu Market</span></li><li><span class="fx-logos__item"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 21c-5-3-8-7-8-11a8 8 0 0 1 16 0c0 4-3 8-8 11z" fill="currentColor"/></svg>Navbahor Soft</span></li><li><span class="fx-logos__item"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M3 18c4-8 14-4 18-12" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round"/></svg>Ipak Yöli Lab</span></li><li><span class="fx-logos__item"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 21V10a8 8 0 0 1 16 0v11zM9 21v-6a3 3 0 0 1 6 0v6" fill="currentColor"/></svg>Registon Media</span></li><li><span class="fx-logos__item"><svg viewBox="0 0 24 24" aria-hidden="true"><rect x="3" y="3" width="8" height="8" rx="2" fill="currentColor"/><rect x="13" y="13" width="8" height="8" rx="4" fill="currentColor"/></svg>Tashkent Digital</span></li><li><span class="fx-logos__item"><svg viewBox="0 0 24 24" aria-hidden="true"><circle cx="12" cy="12" r="9" fill="none" stroke="currentColor" stroke-width="2"/><path d="M3 12h18M12 3c3 3 3 15 0 18" fill="none" stroke="currentColor" stroke-width="2"/></svg>Samarqand Travel</span></li></ul>
</section>
<section class="fx-logos" aria-label="Mijozlar (harakatli)" style="margin-block-start:var(--fx-space-10)">
  <div class="fx-marquee" data-fx-marquee data-gap="lg" style="inline-size:100%"><ul class="fx-marquee__track fx-logos__list"><li><span class="fx-logos__item"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 9l2-5h12l2 5M4 9h16v11H4zM9 20v-6h6v6" fill="none" stroke="currentColor" stroke-width="2" stroke-linejoin="round"/></svg>Çorsu Market</span></li><li><span class="fx-logos__item"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 21c-5-3-8-7-8-11a8 8 0 0 1 16 0c0 4-3 8-8 11z" fill="currentColor"/></svg>Navbahor Soft</span></li><li><span class="fx-logos__item"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M3 18c4-8 14-4 18-12" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round"/></svg>Ipak Yöli Lab</span></li><li><span class="fx-logos__item"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 21V10a8 8 0 0 1 16 0v11zM9 21v-6a3 3 0 0 1 6 0v6" fill="currentColor"/></svg>Registon Media</span></li><li><span class="fx-logos__item"><svg viewBox="0 0 24 24" aria-hidden="true"><rect x="3" y="3" width="8" height="8" rx="2" fill="currentColor"/><rect x="13" y="13" width="8" height="8" rx="4" fill="currentColor"/></svg>Tashkent Digital</span></li><li><span class="fx-logos__item"><svg viewBox="0 0 24 24" aria-hidden="true"><circle cx="12" cy="12" r="9" fill="none" stroke="currentColor" stroke-width="2"/><path d="M3 12h18M12 3c3 3 3 15 0 18" fill="none" stroke="currentColor" stroke-width="2"/></svg>Samarqand Travel</span></li></ul></div>
</section>
```

- Qilmang: Ruxsatsiz mijoz logosini qöymang.
- Qilmang: Logolarni turli balandlikda qoldirmang — optik bir xil ölçamga keltiring.
- Qilmang: 12 tadan ortiq logoni harakatsiz qatorga tiqmang — grid yoki marquee.

## Magnit tugma (`magnet`, beta, 0.29.0 dan)

Kursor yaqinlaşganda tugma unga biroz tortiladi (Aceternity Magnetic Button): tugmaning özi kuç uluşida, içidagi yozuv (.fx-magnet__label) yana biroz köproq siljiydi — qatlamli «tirik» his. Maydon tugma atrofida (data-range, px), kuç data-strength (0–1, standart 0,35), eng köp siljiş çegaralangan — tugma qoçib ketmaydi. Kursor ketsa, prujina bilan joyiga qaytadi. data-shape="orb" — landing uçun katta yumaloq CTA. Faqat siçqonçada; klaviatura, barmoq, harakat kamaytirilgan, calm va none rejimda tugma joyida.

- Qaçon: Landing hero yoki footer'dagi asosiy CTA. Portfolio sahifasidagi «Boğlaniş» doira tugmasi.
- Qaçon emas: Oddiy amal tugmasi → `button`; Bosiliş tölqini kerak bölsa → `ripple`
- Variantlar: data-shape=auto|orb (standart auto)
- Tokenlar: --fx-control-h-lg, --fx-ease-bounce, --fx-ease-standard, --fx-font-size-md, --fx-magnet-x, --fx-magnet-y, --fx-motion-fast, --fx-motion-slower, --fx-radius-circle

```html
<div style="display:flex;flex-wrap:wrap;align-items:center;gap:var(--fx-space-8);padding:var(--fx-space-8)">
  <button type="button" class="fx-btn" data-variant="primary" data-size="lg" data-fx-magnet><span class="fx-magnet__label">Bepul boşlaş →</span></button>
  <a class="fx-btn" href="#" data-size="lg" data-fx-magnet data-strength="0.5"><span class="fx-magnet__label">Demo köriş</span></a>
  <button type="button" class="fx-btn" data-variant="primary" data-fx-magnet data-shape="orb" data-range="48"><span class="fx-magnet__label">Boğlaniş</span></button>
</div>
```

- Qilmang: Bir ekranda bittadan ortiq magnit tugma qöymang — asosiy CTA uçun.
- Qilmang: Forma, jadval yoki menyu tugmalariga qöymang — aniq bosiş muhim joyda çalğitadi.
- Qilmang: Kuçni 0,6 dan oşirmang — tugma kursordan «qoçadi».

## Xarita markeri (`mapmarker`, beta, 0.29.0 dan)

Xarita ustidagi marker (4.206, Base Web «Map Marker», Aceternity «3D Pin»): MapLibre, Leaflet yoki Yandex xaritasiga HTML marker sifatida qöyiladigan tugma. data-type: pin (standart — tomçi şaklli, içida ikon yoki harf, uçi aniq nuqtaga tegadi), price (narx tabletkasi dumli — kvartira, e'lon, yetkaziş narxi; körilgani data-seen bilan xira), dot (nuqta — «Siz şu yerdasiz», data-pulse bilan tölqin), cluster (yaqin markerlar soni, data-size sm/md/lg — bosilsa xarita yaqinlaşadi). Tanlangan — aria-pressed="true": kattaroq, brend rangida, biroz kötariladi va nom yorliği oçiq qoladi. Hover/fokusda nom yorliği (.fx-mapmarker__tip) çiqadi. Rang data-color (6 pastel). Namuna uçun .fx-mapmarker__map — haqiqiy xaritasiz katak fon; joy --fx-mapmarker-x / --fx-mapmarker-y.

- Qaçon: Filiallar, dökonlar, kvartiralar, kuryer yoki buyurtma joylaşuvini xaritada körsatiş. Manzil tanlaş va «Men şu yerdaman» nuqtasi.
- Qaçon emas: Raqamlar böyiça hudud xaritasi (issiqlik) → `heatmap`; Oddiy holat nuqtasi → `indicator`; Manzillar röyxati → `list`
- Variantlar: data-type=pin|price|dot|cluster (standart pin); data-color=yellow|pink|blue|coral|green|purple (standart none); data-size=sm|md|lg (standart md); data-pulse=on (standart off)
- Klaviatura: Tab — Markerlar orasida (DOM tartibida); Enter, Space — Markerni tanlaydi / cluster'ni yaqinlaştiradi
- Tokenlar: --fx-bg-brand-solid, --fx-bg-category-blue, --fx-bg-category-coral, --fx-bg-category-green, --fx-bg-category-pink, --fx-bg-category-purple, --fx-bg-category-yellow, --fx-bg-muted, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-focus, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-lg, --fx-control-h-md, --fx-control-h-sm, --fx-duration-pulse, --fx-ease-spring, --fx-ease-standard, --fx-fg-info, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-regular, --fx-font-weight-semibold, --fx-knob-motion-loop, --fx-mapmarker-x, --fx-mapmarker-y, --fx-motion-base, --fx-motion-fast, --fx-motion-press, --fx-motion-shift-sm, --fx-radius-circle, --fx-radius-control, --fx-radius-pill, --fx-radius-surface, --fx-shadow-md, --fx-size-icon-sm, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-text-on-brand, --fx-text-on-category, --fx-text-primary, --fx-text-secondary, --fx-viz-grid, --fx-z-raised

```html
<div class="fx-mapmarker__map" role="group" aria-label="Toşkent: «Mehr Klinikasi» filiallari xaritasi">
  <button class="fx-mapmarker" type="button" data-color="green" aria-pressed="false" aria-label="Mehr Klinikasi, Çilonzor filiali" style="--fx-mapmarker-x: 22%; --fx-mapmarker-y: 38%"><span class="fx-mapmarker__body"><span class="fx-mapmarker__glyph">M</span></span><span class="fx-mapmarker__tip" aria-hidden="true">Çilonzor filiali<small>08:00–20:00 · oçiq</small></span></button>
  <button class="fx-mapmarker" type="button" data-color="blue" aria-pressed="true" aria-label="Mehr Klinikasi, Yunusobod filiali — tanlangan" style="--fx-mapmarker-x: 48%; --fx-mapmarker-y: 30%"><span class="fx-mapmarker__body"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 21V8l8-5 8 5v13M9 21v-6h6v6"/></svg></span><span class="fx-mapmarker__tip" aria-hidden="true">Yunusobod filiali<small>Boş ofis · 24/7</small></span></button>
  <button class="fx-mapmarker" type="button" data-color="coral" aria-pressed="false" aria-label="Mehr Klinikasi, Mirzo Ulugʻbek filiali" style="--fx-mapmarker-x: 70%; --fx-mapmarker-y: 62%"><span class="fx-mapmarker__body"><span class="fx-mapmarker__glyph">M</span></span><span class="fx-mapmarker__tip" aria-hidden="true">Mirzo Ulugʻbek filiali<small>Bugun yopiq</small></span></button>
  <button class="fx-mapmarker" type="button" data-type="price" aria-pressed="false" aria-label="Kvartira, 2 xona, oyiga 450 ming söm" style="--fx-mapmarker-x: 35%; --fx-mapmarker-y: 78%"><span class="fx-mapmarker__body"><span>450 ming</span></span></button>
  <button class="fx-mapmarker" type="button" data-type="price" aria-pressed="false" aria-label="Kvartira, 3 xona, oyiga 1,2 million söm — körilgan" style="--fx-mapmarker-x: 58%; --fx-mapmarker-y: 82%" data-seen><span class="fx-mapmarker__body"><span>1,2 mln</span></span></button>
  <button class="fx-mapmarker" type="button" data-type="cluster" data-size="lg" aria-label="Sergeli tumanida 24 ta joy — yaqinlaştiriş" style="--fx-mapmarker-x: 84%; --fx-mapmarker-y: 24%"><span class="fx-mapmarker__body"><span>24</span></span></button>
  <button class="fx-mapmarker" type="button" data-type="cluster" data-size="sm" aria-label="Olmazor tumanida 5 ta joy — yaqinlaştiriş" style="--fx-mapmarker-x: 12%; --fx-mapmarker-y: 72%"><span class="fx-mapmarker__body"><span>5</span></span></button>
  <span class="fx-mapmarker" data-type="dot" data-pulse role="img" aria-label="Siz şu yerdasiz" style="--fx-mapmarker-x: 52%; --fx-mapmarker-y: 58%"><span class="fx-mapmarker__body"></span></span>
</div>
```

- Qilmang: Yuzlab markerni birdaniga çizmang — yaqinlarini cluster'ga yiğing (supercluster va h.k.).
- Qilmang: Tanlanganni faqat rang bilan bildirmang — ölçam, kötariliş va oçiq yorliq ham bor.
- Qilmang: Markerni <div> qilib qöymang — bosiladigan bölsa <button> (Tab, Enter) va aniq aria-label (manzil, narx).
- Qilmang: Narx markerida «söm»ni qisqartirib ma'noni yöqotmang — aria-label'da töliq yozing.

## Markdown muharrir (`markdown`, beta, 0.28.0 dan)

Markdown muharrir: «Yoziş / Köriş» tablari, formatlaş paneli (qalin, qiya, sarlavha, havola, kod, iqtibos, röyxatlar, vazifalar, @eslatish), Ctrl+B/I/K, röyxatni Enter bilan davom ettiriş, @ bilan odamni tanlaş (fx-mention), rasm/faylni taşlaş, joylaş yoki biriktiriş. «Köriş» xavfsiz HTML çizadi.

- Qaçon: CRM izohlari, vazifa tavsifi, içki hujjat, changelog yozuvi. Dasturçilar va içki jamoa uçun formatlangan matn.
- Qaçon emas: Oddiy foydalanuvçiga körinadigan formatlaş (WYSIWYG) → `richtext`; Bir-ikki qatorli izoh → `input`
- Klaviatura: Ctrl/⌘+B, Ctrl/⌘+I, Ctrl/⌘+K — Qalin, qiya, havola; Enter (roʻyxat bandida) — Keyingi bandni boşlaydi; böş bandda röyxatni tugatadi; Ctrl/⌘+Enter — Yuboriş hodisasi; ← → (tablarda / panelda) — Rejim yoki vositani almaştiradi; @ — Hamkasblar röyxati (↑ ↓, Enter)
- Tokenlar: --fx-bg-brand-subtle, --fx-bg-field, --fx-bg-muted, --fx-border-color-default, --fx-border-color-field, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-md, --fx-control-h-sm, --fx-ease-standard, --fx-font-adjust-mono, --fx-font-adjust-sans, --fx-font-family-mono, --fx-font-family-sans, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-motion-fast, --fx-motion-instant, --fx-motion-press, --fx-radius-badge, --fx-radius-control, --fx-radius-field-multiline, --fx-size-icon-sm, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-text-brand, --fx-text-disabled, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<div class="fx-markdown" data-fx-markdown>
  <div class="fx-markdown__bar">
    <div class="fx-tabs" role="tablist" aria-label="Muharrir rejimi" data-variant="pill" data-fx-tabs>
      <button class="fx-tabs__tab" role="tab" id="md-t1" aria-controls="md-p1" aria-selected="true">Yoziş</button>
      <button class="fx-tabs__tab" role="tab" id="md-t2" aria-controls="md-p2" aria-selected="false">Köriş</button>
    </div>
    <div class="fx-toolbar" data-variant="flat" role="toolbar" aria-label="Formatlaş" aria-controls="md-in" data-fx-toolbar><button class="fx-markdown__tool" data-md="bold" aria-label="Qalin (Ctrl+B)" title="Qalin (Ctrl+B)"><b aria-hidden="true">B</b></button><button class="fx-markdown__tool" data-md="italic" aria-label="Qiya (Ctrl+I)" title="Qiya (Ctrl+I)"><i aria-hidden="true">I</i></button><button class="fx-markdown__tool" data-md="heading" aria-label="Sarlavha" title="Sarlavha"><b aria-hidden="true">H</b></button><button class="fx-markdown__tool" data-md="link" aria-label="Havola (Ctrl+K)" title="Havola (Ctrl+K)"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M8.5 11.5a3 3 0 0 0 4.2 0l2.6-2.6a3 3 0 0 0-4.2-4.2l-.9.9M11.5 8.5a3 3 0 0 0-4.2 0l-2.6 2.6a3 3 0 0 0 4.2 4.2l.9-.9" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg></button><button class="fx-markdown__tool" data-md="code" aria-label="Kod" title="Kod"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M7 6l-4 4 4 4M13 6l4 4-4 4" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg></button><button class="fx-markdown__tool" data-md="quote" aria-label="Iqtibos" title="Iqtibos"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M4 6h12M4 10h8M4 14h10" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg></button><button class="fx-markdown__tool" data-md="ul" aria-label="Röyxat" title="Röyxat"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M8 6h9M8 10h9M8 14h9M4 6h.01M4 10h.01M4 14h.01" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg></button><button class="fx-markdown__tool" data-md="ol" aria-label="Raqamli röyxat" title="Raqamli röyxat"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M8 6h9M8 10h9M8 14h9M3.5 5l1-1v4" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg></button><button class="fx-markdown__tool" data-md="task" aria-label="Vazifalar röyxati" title="Vazifalar röyxati"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M3 5.5l1.5 1.5L7 4.5M9 6h8M3 12h4v4H3zM9 14h8" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg></button><button class="fx-markdown__tool" data-md="mention" aria-label="Odamni eslatiş (@)" title="Odamni eslatiş (@)"><span aria-hidden="true">@</span></button></div>
  </div>
  <div class="fx-markdown__panel" role="tabpanel" id="md-p1" aria-labelledby="md-t1">
    <div class="fx-mention" data-fx-mention>
      <textarea class="fx-markdown__input" id="md-in" aria-label="Izoh matni (Markdown)" role="combobox" aria-expanded="false" aria-controls="md-ml" aria-autocomplete="list" placeholder="Bitim boʻyicha izoh yozing… (@ bilan hamkasbni eslating)">### Uchrashuv natijasi
Mijoz **yillik tarif**ga qiziqdi, narxni _chegirma bilan_ soʻradi.

- [x] Taklifnoma yuborildi
- [ ] Shartnoma loyihasi — @dilnoza
- [ ] Juma kuni qayta qoʻngʻiroq

Batafsil: [narxlar jadvali](https://misol.uz/narxlar)</textarea>
      <div class="fx-mention__popup" hidden><ul class="fx-listbox" role="listbox" id="md-ml" aria-label="Hamkasblar"><li class="fx-option" role="option" id="md-m1" data-value="dilnoza">Dilnoza Rahimova</li><li class="fx-option" role="option" id="md-m2" data-value="bobur">Bobur Toshmatov</li><li class="fx-option" role="option" id="md-m3" data-value="madina">Madina Yusupova</li><li class="fx-listbox__empty" hidden>Topilmadi</li></ul></div>
    </div>
  </div>
  <div class="fx-markdown__panel" role="tabpanel" id="md-p2" aria-labelledby="md-t2" tabindex="0" hidden><div class="fx-markdown__preview fx-prose" data-size="sm"></div></div>
  <div class="fx-markdown__foot"><span>Markdown qöllanadi · rasmni taşlang yoki joylang · Ctrl+Enter — yuboriş</span><label class="fx-markdown__attach"><input type="file" multiple><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M13.5 7.5l-5 5a2 2 0 0 1-2.8-2.8l5.5-5.5a3.5 3.5 0 0 1 5 5l-5.7 5.7a5 5 0 0 1-7-7L8 4.5" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg>Fayl biriktiriş</label></div>
</div>
```

- Qilmang: Preview'da foydalanuvçi matnini ekranlamasdan innerHTML qilmang — xulq avval hammasini ekranlaydi, keyin faqat ruxsat etilgan teglarni yaratadi.
- Qilmang: Formatlaş tugmalarini ikonkasiz va nomsiz qoldirmang — har birida aria-label va title (tugmalar birikmasi bilan).
- Qilmang: Oddiy foydalanuvçilar uçun (mijoz formasi) markdown bermang — oddiy textarea yetarli.

## Yugurik qator (marquee) (`marquee`, beta, 0.28.0 dan)

Logolar, fikrlar yoki teglar çeksiz suriladigan qator (4.71). Tasma bir marta nusxalanadi (nusxa ekran öquvçidan yaşirin), tezlik uzunlikdan hisoblanadi — har ekranda bir xil (data-speed, px/soniya, standart 40). Hover yoki klaviatura fokusi kelganda töxtaydi, ekrandan çiqsa pauza. Ikki çetda yumşoq söniş. Vertikal variant — fikrlar ustuni uçun; data-direction="reverse" — teskari yönaliş (ikki qatorli «qarama-qarşi» bezak). JS bölmasa yoki harakat kamaytirilsa — oddiy gorizontal scroll.

- Qaçon: Mijoz logolari, integratsiyalar yoki komponentlar röyxati — «köp» ekanini his ettiriş. Fikrlar ustuni (vertikal) — landing pastida ijtimoiy isbot.
- Qaçon emas: Foydalanuvçi boşqaradigan slaydlar → `carousel`; Logolarni harakatsiz körsatiş → `logos`
- Variantlar: data-orientation=vertical (standart horizontal); data-direction=reverse (standart normal); data-gap=sm|lg (standart md); data-pause=none (standart hover)
- Klaviatura: Tab — Qator içidagi havolaga fokus — harakat töxtaydi; Enter, Space — Pauza tugmasi harakatni töxtatadi / davom ettiradi
- Tokenlar: --fx-duration-pulse, --fx-marquee-height, --fx-space-12, --fx-space-4, --fx-space-8, --fx-text-primary

```html
<div class="fx-marquee" data-fx-marquee id="mq-logo" aria-label="Bizga işongan jamoalar" role="region">
  <ul class="fx-marquee__track">
    <li><strong style="font-size:var(--fx-font-size-lg)">Çorsu Market</strong></li>
    <li><strong style="font-size:var(--fx-font-size-lg)">Navbahor Soft</strong></li>
    <li><strong style="font-size:var(--fx-font-size-lg)">Ipak Yöli Lab</strong></li>
    <li><strong style="font-size:var(--fx-font-size-lg)">Registon Media</strong></li>
    <li><strong style="font-size:var(--fx-font-size-lg)">Tashkent Digital</strong></li>
    <li><strong style="font-size:var(--fx-font-size-lg)">Samarqand Travel</strong></li>
  </ul>
</div>
<div class="fx-marquee" data-fx-marquee data-direction="reverse" data-gap="sm" data-speed="30" style="margin-block-start:var(--fx-space-4)">
  <ul class="fx-marquee__track">
    <li><span class="fx-badge" data-color="purple" data-size="lg">Tugma</span></li>
    <li><span class="fx-badge" data-color="blue" data-size="lg">Jadval</span></li>
    <li><span class="fx-badge" data-color="green" data-size="lg">Kalendar</span></li>
    <li><span class="fx-badge" data-color="pink" data-size="lg">Grafik</span></li>
    <li><span class="fx-badge" data-color="yellow" data-size="lg">Forma</span></li>
    <li><span class="fx-badge" data-color="coral" data-size="lg">Dialog</span></li>
  </ul>
</div>
<button class="fx-btn fx-marquee__toggle" data-variant="ghost" data-size="sm" type="button" aria-controls="mq-logo" aria-pressed="false" style="margin-block-start:var(--fx-space-2)">Harakatni töxtatiş</button>
```

- Qilmang: Muhim ma'lumotni (narx, şart) yugurik qatorga qöymang — öquvçi uşlab ololmaydi.
- Qilmang: Bitta sahifada ikkitadan ortiq yugurik qator qöymang.
- Qilmang: Bosiladigan havolalarni juda tez qatorga qöymang — hover'da töxtaydi, lekin data-speed past bölsin.

## Maskali kiritiş (`mask`, beta, 0.23.0 dan)

Şablon böyiça avtomatik formatlanadigan maydon: telefon +998 (__) ___-__-__, karta ____ ____ ____ ____. «#» — raqam, qolgani doimiy belgi; +998 bilan joylansa ham töğri kesiladi. Formatsiz qiymat — dataset.raw.

- Qaçon: Telefon, karta, STIR — qat'iy tuzilmali raqamlar.
- Qaçon emas: Pul miqdori → `currency`; Bir martalik kod katakçalari → `otp`
- Klaviatura: 0–9 — Raqam kiritadi, ajratgiçlar özi qöşiladi; Backspace — Oxirgi raqamni öçiradi

```html
<label class="fx-field" for="tel"><span class="fx-label">Telefon</span>
<input class="fx-input" id="tel" type="tel" name="telefon" data-fx-mask="+998 (##) ###-##-##" placeholder="+998 (90) 123-45-67" autocomplete="tel"></label>
<label class="fx-field" for="kart"><span class="fx-label">Karta raqami</span>
<input class="fx-input" id="kart" name="karta" data-fx-mask="#### #### #### ####" placeholder="8600 0000 0000 0000" autocomplete="cc-number"></label>
```

- Qilmang: Maskani tekşiruv örnida işlatmang — töliqlik data-complete, haqiqiylik alohida tekşiriladi.
- Qilmang: Şablon içida harf kerak bölsa — oddiy input va pattern.

## Masonry (`masonry`, beta, 0.29.0 dan)

Balandligi har xil kartalar (skrinşot, fikr, maqola) ustunlarga ziç joylanadi (4.73). Brauzer CSS masonry'ni qöllasa (display: grid-lanes yoki grid-template-rows: masonry) — kartalar qator tartibida; aks holda zaxira — CSS ustunlar (tartib ustun böylab yuqoridan pastga). Ustun soni kenglikka qarab özi özgaradi (eng tor ~15rem), data-cols — yuqori çegara. JS kerak emas.

- Qaçon: Portfolio, skrinşotlar, mijozlar fikri, Pinterest kabi galereya — balandliklar har xil.
- Qaçon emas: Bir xil kataklar yoki turli ölçamli xususiyatlar mozaikasi → `bento`; Rasm galereyasi bir xil nisbatda → `gallery`
- Variantlar: data-cols=2|3|5 (standart 4); data-gap=sm|lg (standart md)
- Tokenlar: --fx-bg-surface, --fx-border-color-surface, --fx-border-width-default, --fx-font-size-sm, --fx-font-size-xs, --fx-radius-surface, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-6, --fx-text-tertiary

```html
<ul class="fx-masonry" data-cols="3" aria-label="Portfolio: tayyor loyihalar">
  <li class="fx-masonry__item"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20600%20380%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22hsl(210%2070%25%2072%25)%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22hsl(240%2060%25%2042%25)%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22600%22%20height%3D%22380%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22300%22%20y%3D%22204%22%20font-family%3D%22sans-serif%22%20font-size%3D%2242%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3Edashboard%3C%2Ftext%3E%3C%2Fsvg%3E" alt="Ombor hisobi — ekran körinişi" width="600" height="380" loading="lazy"><div class="fx-masonry__body"><strong>Ombor hisobi</strong><span class="fx-masonry__meta">Inventar · 3 kun oldin</span></div></li>
  <li class="fx-masonry__item"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20600%20250%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22hsl(30%2070%25%2072%25)%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22hsl(60%2060%25%2042%25)%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22600%22%20height%3D%22250%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22300%22%20y%3D%22139%22%20font-family%3D%22sans-serif%22%20font-size%3D%2228%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3Ekassa%3C%2Ftext%3E%3C%2Fsvg%3E" alt="Kassir ekrani — ekran körinişi" width="600" height="250" loading="lazy"><div class="fx-masonry__body"><strong>Kassir ekrani</strong><span class="fx-masonry__meta">POS · 1 hafta oldin</span></div></li>
  <li class="fx-masonry__item"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20600%20460%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22hsl(160%2070%25%2072%25)%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22hsl(190%2060%25%2042%25)%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22600%22%20height%3D%22460%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22300%22%20y%3D%22244%22%20font-family%3D%22sans-serif%22%20font-size%3D%2251%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3Enavbat%3C%2Ftext%3E%3C%2Fsvg%3E" alt="Klinika navbati — ekran körinişi" width="600" height="460" loading="lazy"><div class="fx-masonry__body"><strong>Klinika navbati</strong><span class="fx-masonry__meta">Helpdesk · bugun</span></div></li>
  <li class="fx-masonry__item"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20600%20300%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22hsl(260%2070%25%2072%25)%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22hsl(290%2060%25%2042%25)%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22600%22%20height%3D%22300%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22300%22%20y%3D%22164%22%20font-family%3D%22sans-serif%22%20font-size%3D%2233%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3Ejurnal%3C%2Ftext%3E%3C%2Fsvg%3E" alt="Maktab jurnali — ekran körinişi" width="600" height="300" loading="lazy"><div class="fx-masonry__body"><strong>Maktab jurnali</strong><span class="fx-masonry__meta">LMS · keça</span></div></li>
  <li class="fx-masonry__item"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20600%20420%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22hsl(120%2070%25%2072%25)%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22hsl(150%2060%25%2042%25)%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22600%22%20height%3D%22420%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22300%22%20y%3D%22224%22%20font-family%3D%22sans-serif%22%20font-size%3D%2247%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3Exarita%3C%2Ftext%3E%3C%2Fsvg%3E" alt="Yetkazib beriş — ekran körinişi" width="600" height="420" loading="lazy"><div class="fx-masonry__body"><strong>Yetkazib beriş</strong><span class="fx-masonry__meta">Logistika · 2 kun oldin</span></div></li>
  <li class="fx-masonry__item"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20600%20280%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22hsl(340%2070%25%2072%25)%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22hsl(10%2060%25%2042%25)%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22600%22%20height%3D%22280%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22300%22%20y%3D%22154%22%20font-family%3D%22sans-serif%22%20font-size%3D%2231%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3Efaktura%3C%2Ftext%3E%3C%2Fsvg%3E" alt="Hisob-faktura — ekran körinişi" width="600" height="280" loading="lazy"><div class="fx-masonry__body"><strong>Hisob-faktura</strong><span class="fx-masonry__meta">ERP · bugun</span></div></li>
  <li class="fx-masonry__item"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20600%20350%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22hsl(190%2070%25%2072%25)%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22hsl(220%2060%25%2042%25)%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22600%22%20height%3D%22350%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22300%22%20y%3D%22189%22%20font-family%3D%22sans-serif%22%20font-size%3D%2239%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3ECRM%3C%2Ftext%3E%3C%2Fsvg%3E" alt="Mijoz kartasi — ekran körinişi" width="600" height="350" loading="lazy"><div class="fx-masonry__body"><strong>Mijoz kartasi</strong><span class="fx-masonry__meta">CRM · 5 kun oldin</span></div></li>
</ul>
```

- Qilmang: Tartib muhim bölgan röyxat (yangiliklar lentasi, jadval) uçun işlatmang — zaxira rejimida köz ustun böylab yuradi.
- Qilmang: Bir xil balandlikdagi kartalar uçun kerak emas — oddiy tör (fx-grid) yetarli.
- Qilmang: Çeksiz yuklaşda yangi kartalar yuqoridagilarni siljitmasin — rasmga width/height bering.

## Material (şişa) (`material`, experimental, 0.58.0 dan)

Material öqi (tajriba, 20.10 — DS tadqiqoti: iOS 26, HyperOS 3, One UI 8.5, ColorOS 16, HarmonyOS 6, Telegram «şişa»ga ötdi): data-fx-material="glass-weak | glass | glass-strong" — uç daraja (HarmonyOS kabi). Faqat ustki qatlamlar şişaga aylanadi: popover, menyu, dialog, varaq, buyruqlar oynasi, hover karta, yopişqoq tepa panel va sayt sarlavhasi; kartalar va jadvallar tekis qoladi (öqiliş birinçi). Tizimda «kamroq şaffoflik» yoki Harakat «yöq» bölsa — töliq tekis. Berilmasa — heç narsa özgarmaydi. <html> yoki istalgan blokka qöyiladi.

- Qaçon: Rasm, xarita, video yoki rangli fon ustida oçiladigan menyu, popover, dialog. Kontent ostidan ötadigan yopişqoq tepa panel (aylantirişda kontent sezilib turadi). Zamonaviy, «2026» kayfiyatli libos (Apple, HyperOS, One UI uslubi).
- Qaçon emas: Ma'lumot ziç ilova (CRM jadvali, hisobot) → `elevation`; Bitta yuzani kötariş (soya bilan) → `elevation`
- Variantlar: data-fx-material=glass-weak|glass|glass-strong (standart solid)
- Tokenlar: --fx-bg-page, --fx-bg-surface, --fx-border-color-surface, --fx-color-pastel-blue, --fx-color-pastel-pink, --fx-color-pastel-yellow, --fx-color-white, --fx-glass-alpha, --fx-glass-blur, --fx-glass-sat, --fx-radius-overlay, --fx-space-3, --fx-space-4, --fx-space-5, --fx-space-8

```html
<div style="display:grid;gap:var(--fx-space-5);inline-size:100%">
<div class="fx-material-demo" data-fx-material="glass">
  <div class="fx-shell__top" style="position:relative;grid-area:auto;border-radius:var(--fx-radius-surface)"><b>Iş maydoni</b><span style="margin-inline-start:auto" class="fx-badge">Şişa</span></div>
  <div style="display:flex;flex-wrap:wrap;gap:var(--fx-space-4);align-items:start">
    <div class="fx-menu" role="menu" aria-label="Amallar" data-static style="min-inline-size:12rem"><button class="fx-menu__item" role="menuitem" type="button">Tahrirlaş</button><button class="fx-menu__item" role="menuitem" type="button">Nusxa oliş</button><button class="fx-menu__item" role="menuitem" type="button">Arxivlaş</button></div>
    <div class="fx-popover" data-static style="gap:var(--fx-space-2);max-inline-size:18rem;padding:var(--fx-space-4)"><b>Buyurtma №4817</b><span style="color:var(--fx-text-secondary)">Ertaga 10:00–14:00 orasida yetkaziladi.</span><button class="fx-btn" data-variant="primary" data-size="sm" type="button">Tasdiqlaş</button></div>
  </div>
</div>
<div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,14rem),1fr));gap:var(--fx-space-3)">
  <div class="fx-material-demo" data-fx-material="glass-weak" style="padding:var(--fx-space-5)"><div class="fx-popover" data-static style="padding:var(--fx-space-3)">Kuçsiz — glass-weak</div></div>
  <div class="fx-material-demo" data-fx-material="glass" style="padding:var(--fx-space-5)"><div class="fx-popover" data-static style="padding:var(--fx-space-3)">Muvozanatli — glass</div></div>
  <div class="fx-material-demo" data-fx-material="glass-strong" style="padding:var(--fx-space-5)"><div class="fx-popover" data-static style="padding:var(--fx-space-3)">Kuçli — glass-strong</div></div>
</div>
</div>
```

- Qilmang: Kartalar, jadval va uzun matnli yuzalarga şişa bermang — öqilişi tuşadi; şişa — faqat ustki qatlam.
- Qilmang: Rangli, notekis fon ustida kuçli şişani kiçik matn bilan işlatmang — muvozanatli yoki kuçsiz darajani tanlang.
- Qilmang: Şaffoflikni qölda yozmang — daraja atributi yetarli; foydalanuvçining «kamroq şaffoflik» sozlamasi hurmat qilinadi.

## Jamoa a'zolari (`members`, beta, 0.28.0 dan)

Jamoa a'zolari va takliflar sahifasi (naqş): örinlar hisobi (5 / 10), email bilan taklif (rol tanlaş bilan), a'zolar jadvali — rol, holat (Faol / Kutilmoqda), oxirgi faollik, amallar. Taklif darhol «Kutilmoqda» qatori bölib qöşiladi; olib taşlaş va bekor qiliş fxConfirm bilan tasdiqlanadi.

- Qaçon: SaaS sozlamalarida jamoa, rollar va takliflarni boşqariş. CRM yoki loyiha iş maydoniga hamkasblarni çaqiriş.
- Qaçon emas: Kim hozir onlayn ekanini körsatiş → `presence`; Köp ustunli, saralanadigan katta foydalanuvçilar bazasi → `datagrid`
- Variantlar: data-state=active|pending (standart active)
- Klaviatura: Enter (email maydonida) — Taklif yuboradi; Tab — Qatorlardagi rol tanlagiçi va amal tugmalari böylab; Esc (tasdiq oynasida) — Bekor qiladi, fokus tugmaga qaytadi
- Tokenlar: --fx-bg-subtle, --fx-border-color-default, --fx-border-color-strong, --fx-border-width-default, --fx-border-width-focus, --fx-ease-enter, --fx-ease-exit, --fx-fg-success, --fx-font-size-lg, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-semibold, --fx-motion-base, --fx-motion-exit-base, --fx-radius-surface, --fx-space-1, --fx-space-12, --fx-space-3, --fx-space-4, --fx-space-5, --fx-space-6, --fx-text-error, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<section class="fx-members" data-fx-members data-seats="10" aria-labelledby="mb-t">
  <header class="fx-members__head">
    <div><h2 class="fx-members__title" id="mb-t">Jamoa a'zolari</h2><p class="fx-members__text">Kim nimani köradi va özgartiradi — rol belgilaydi.</p></div>
    <div class="fx-members__seats"><span>Band örinlar: <b data-members-seats>5 / 10</b></span><div class="fx-progress" data-size="sm" role="progressbar" aria-label="Band örinlar" aria-valuemin="0" aria-valuenow="5" aria-valuemax="10" style="--fx-progress-value: 50%"></div></div>
  </header>
  <form class="fx-members__invite" data-members-invite novalidate>
    <label class="fx-field"><span class="fx-label">Email orqali taklif</span><input class="fx-input" type="email" required placeholder="hamkasb@kompaniya.uz" autocomplete="off"></label>
    <label class="fx-field"><span class="fx-label">Rol</span><span class="fx-select-wrap"><select class="fx-select"><option>Administrator</option><option>Menejer</option><option selected>A'zo</option><option>Faqat köriş</option></select></span></label>
    <button class="fx-btn" type="submit" data-variant="primary">Taklif yuboriş</button>
    <p class="fx-members__msg" aria-live="polite"></p>
  </form>
  <div class="fx-table-scroll">
  <table class="fx-table fx-members__table">
    <thead><tr><th scope="col">A'zo</th><th scope="col">Rol</th><th scope="col">Holat</th><th scope="col" class="fx-members__when">Oxirgi faollik</th><th scope="col"><span class="fx-sr-only">Amallar</span></th></tr></thead>
    <tbody>
      <tr class="fx-members__row" data-state="active" data-email="aziz@chorsu-savdo.uz"><td><div class="fx-persona" data-size="sm"><span class="fx-avatar" data-size="sm" data-color="yellow" role="img" aria-label="Aziz Karimov">AK</span><span class="fx-persona__text"><span class="fx-persona__name">Aziz Karimov</span><span class="fx-persona__meta">aziz@chorsu-savdo.uz</span></span></div></td><td><span class="fx-members__owner">Egasi</span></td><td><span class="fx-status" data-tone="success">Faol</span></td><td class="fx-members__when">Hozir onlayn</td><td><div class="fx-members__actions"></div></td></tr>
      <tr class="fx-members__row" data-state="active" data-email="dilnoza@chorsu-savdo.uz"><td><div class="fx-persona" data-size="sm"><span class="fx-avatar" data-size="sm" data-color="green" role="img" aria-label="Dilnoza Rahimova">DR</span><span class="fx-persona__text"><span class="fx-persona__name">Dilnoza Rahimova</span><span class="fx-persona__meta">dilnoza@chorsu-savdo.uz</span></span></div></td><td><span class="fx-select-wrap"><select class="fx-select fx-members__role" data-size="sm" aria-label="Rol: Dilnoza Rahimova"><option>Administrator</option><option selected>Menejer</option><option>A'zo</option><option>Faqat köriş</option></select></span></td><td><span class="fx-status" data-tone="success">Faol</span></td><td class="fx-members__when">Bugun, 09:41</td><td><div class="fx-members__actions"><button class="fx-btn" type="button" data-variant="danger-ghost" data-size="sm" data-members-remove>Olib taşlaş</button></div></td></tr>
      <tr class="fx-members__row" data-state="active" data-email="bobur@chorsu-savdo.uz"><td><div class="fx-persona" data-size="sm"><span class="fx-avatar" data-size="sm" data-color="blue" role="img" aria-label="Bobur Toshmatov">BT</span><span class="fx-persona__text"><span class="fx-persona__name">Bobur Toshmatov</span><span class="fx-persona__meta">bobur@chorsu-savdo.uz</span></span></div></td><td><span class="fx-select-wrap"><select class="fx-select fx-members__role" data-size="sm" aria-label="Rol: Bobur Toshmatov"><option>Administrator</option><option>Menejer</option><option selected>A'zo</option><option>Faqat köriş</option></select></span></td><td><span class="fx-status" data-tone="success">Faol</span></td><td class="fx-members__when">Keça, 18:05</td><td><div class="fx-members__actions"><button class="fx-btn" type="button" data-variant="danger-ghost" data-size="sm" data-members-remove>Olib taşlaş</button></div></td></tr>
      <tr class="fx-members__row" data-state="active" data-email="madina@chorsu-savdo.uz"><td><div class="fx-persona" data-size="sm"><span class="fx-avatar" data-size="sm" data-color="purple" role="img" aria-label="Madina Yusupova">MY</span><span class="fx-persona__text"><span class="fx-persona__name">Madina Yusupova</span><span class="fx-persona__meta">madina@chorsu-savdo.uz</span></span></div></td><td><span class="fx-select-wrap"><select class="fx-select fx-members__role" data-size="sm" aria-label="Rol: Madina Yusupova"><option>Administrator</option><option>Menejer</option><option>A'zo</option><option selected>Faqat köriş</option></select></span></td><td><span class="fx-status" data-tone="success">Faol</span></td><td class="fx-members__when">12-oktabr</td><td><div class="fx-members__actions"><button class="fx-btn" type="button" data-variant="danger-ghost" data-size="sm" data-members-remove>Olib taşlaş</button></div></td></tr>
      <tr class="fx-members__row" data-state="pending" data-email="sardor@chorsu-savdo.uz"><td><div class="fx-persona" data-size="sm"><span class="fx-avatar" data-size="sm" role="img" aria-label="sardor@chorsu-savdo.uz">SR</span><span class="fx-persona__text"><span class="fx-persona__name">sardor@chorsu-savdo.uz</span><span class="fx-persona__meta">Taklif 2 kun oldin yuborilgan</span></span></div></td><td><span class="fx-select-wrap"><select class="fx-select fx-members__role" data-size="sm" aria-label="Rol: sardor@chorsu-savdo.uz"><option>Administrator</option><option>Menejer</option><option selected>A'zo</option><option>Faqat köriş</option></select></span></td><td><span class="fx-status" data-tone="pending">Kutilmoqda</span></td><td class="fx-members__when">—</td><td><div class="fx-members__actions"><button class="fx-btn" type="button" data-variant="ghost" data-size="sm" data-members-resend>Qayta yuboriş</button><button class="fx-btn" type="button" data-variant="danger-ghost" data-size="sm" data-members-remove>Bekor qiliş</button></div></td></tr>
    </tbody>
  </table>
  </div>
</section>
```

- Qilmang: Egasini olib taşlaş yoki rolini özgartiriş tugmasini körsatmang — «Egasi» matn bölib tursin; egalikni alohida «Egalikni topşiriş» oqimi ötkazadi.
- Qilmang: Kutilayotgan taklifni faol a'zo bilan aralaştirib yubormang — «Kutilmoqda» holati, kursiv nom va çap çiziq bilan ajralib tursin.
- Qilmang: Olib taşlaşni tasdiqsiz bajarmang — fxConfirm nima yöqolişini aytadi.

## Mention (`mention`, beta, 0.23.0 dan)

Matn maydonida «@» yozilsa odamlar röyxati oçiladi: yozgan sari filtrlanadi; ↑ ↓ va Enter/Tab «@nom» ni joylaydi, Esc yopadi. Izoh, topşiriq, xabar maydonlari uçun.

- Qaçon: Izoh yoki topşiriq matnida odamni eslaş (@).
- Qaçon emas: Odamni alohida maydonda tanlaş → `combobox`
- Klaviatura: @ + harf — Röyxatni oçadi va filtrlaydi; ↑ ↓ — Variant; Enter, Tab — Tanlaydi; Esc — Yopadi
- Tokenlar: --fx-bg-surface, --fx-border-color-surface, --fx-border-width-default, --fx-control-h-sm, --fx-radius-overlay, --fx-shadow-lg, --fx-space-1

```html
<label class="fx-field" for="mn"><span class="fx-label">Izoh</span></label>
<div class="fx-mention" data-fx-mention>
  <textarea class="fx-textarea" id="mn" role="combobox" aria-expanded="false" aria-controls="mn-list" aria-autocomplete="list" placeholder="Fikringiz… (@ bilan odamni eslang)"></textarea>
  <div class="fx-mention__popup" hidden>
    <ul class="fx-listbox" role="listbox" id="mn-list" aria-label="Odamlar">
      <li class="fx-option fx-option--lg" role="option" id="mn1" data-value="aziz"><span class="fx-avatar" data-size="sm" data-color="yellow" aria-hidden="true">AK</span><span class="fx-option__body">Aziz Karimov<span class="fx-option__desc">Savdo menejeri</span></span></li>
      <li class="fx-option fx-option--lg" role="option" id="mn2" data-value="bobur"><span class="fx-avatar" data-size="sm" data-color="green" aria-hidden="true">BT</span><span class="fx-option__body">Bobur Toshmatov<span class="fx-option__desc">Dasturçi</span></span></li>
      <li class="fx-option fx-option--lg" role="option" id="mn3" data-value="dilnoza"><span class="fx-avatar" data-size="sm" data-color="pink" aria-hidden="true">DR</span><span class="fx-option__body">Dilnoza Rahimova<span class="fx-option__desc">Dizayner</span></span></li>
      <li class="fx-listbox__empty" hidden>Topilmadi</li>
    </ul>
  </div>
</div>
```

- Qilmang: Mention röyxatini @ işlatilmaydigan maydonda oçmang.
- Qilmang: Röyxatsiz erkin @ matn bölsa — oddiy textarea.

## Menyu (`menu`, beta, 0.11.0 dan)

Tugma ostida oçiladigan amallar röyxati: bandlar, guruh sarlavhasi, ajratgiç, tugmalar maslahati, xavfli band, belgilanadigan bandlar. Native popover + foxui.js (klaviatura). Içki menyu (→ bilan oçiladi) va menyu içida qidiruv ham bor. Moslaşuvçi (4.26): data-fx-adaptive — telefonda (< 640 px) pastki varaqqa aylanadi.

- Qaçon: Qator amallari, «Yana» tugmasi, foydalanuvçi menyusi.
- Qaçon emas: Sahifa navigatsiyasi → `nav`; Forma maydonida qiymat tanlaş → `select`
- Variantlar: data-fx-adaptive=true
- Klaviatura: Enter, Space, ↓ — Trigger: oçadi, birinçi bandga fokus; ↑ ↓ — Bandlar böylab; Home, End — Birinçi / oxirgi band; Harf — Şu harfdan boşlanadigan bandga; Esc — Yopadi, fokus triggerga; →, Enter, Space — Içki menyuni oçadi, birinçi bandga fokus; ←, Esc — Içki menyuni yopadi, fokus ota bandga; ↓ (qidiruvdan) — Birinçi bandga
- Tokenlar: --fx-bg-muted, --fx-bg-overlay, --fx-bg-pressed, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-strong, --fx-border-color-surface, --fx-border-width-default, --fx-control-h-sm, --fx-ease-enter, --fx-ease-exit, --fx-ease-sheet, --fx-font-adjust-mono, --fx-font-family-mono, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-motion-base, --fx-motion-exit-fast, --fx-motion-scale-enter, --fx-motion-shift-sm, --fx-motion-slow, --fx-popover-width, --fx-radius-circle, --fx-radius-nav, --fx-radius-overlay, --fx-shadow-lg, --fx-size-icon-sm, --fx-size-touch-target, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-8, --fx-text-brand, --fx-text-disabled, --fx-text-error, --fx-text-primary, --fx-text-tertiary

```html
<button class="fx-btn" popovertarget="m1" aria-haspopup="menu">Amallar</button>
<div class="fx-menu" id="m1" role="menu" popover data-fx-menu>
  <button class="fx-menu__item" role="menuitem">Tahrirlaş <span class="fx-menu__kbd">E</span></button>
  <button class="fx-menu__item" role="menuitem">Nusxa oliş <span class="fx-menu__kbd">Ctrl+D</span></button>
  <hr class="fx-menu__sep">
  <div class="fx-menu__title" role="presentation">Köriniş</div>
  <button class="fx-menu__item" role="menuitemcheckbox" aria-checked="true">Ixçam</button>
  <hr class="fx-menu__sep">
  <button class="fx-menu__item" role="menuitem" data-tone="danger">Öçiriş</button>
</div>
<button class="fx-btn" popovertarget="m2" aria-haspopup="menu">Içki menyu + qidiruv</button>
<div class="fx-menu" id="m2" role="menu" popover data-fx-menu>
  <input class="fx-menu__search" type="search" placeholder="Amalni qidiring" aria-label="Menyuda qidiriş" autocomplete="off">
  <button class="fx-menu__item" role="menuitem">Oçiş</button>
  <div class="fx-menu__subwrap">
    <button class="fx-menu__item" role="menuitem" aria-haspopup="menu" aria-expanded="false">Papkaga köçiriş</button>
    <div class="fx-menu__sub" role="menu" hidden>
      <button class="fx-menu__item" role="menuitem">Mijozlar</button>
      <button class="fx-menu__item" role="menuitem">Arxiv</button>
    </div>
  </div>
  <button class="fx-menu__item" role="menuitem">Nusxa oliş</button>
  <p class="fx-menu__empty" hidden>Heç narsa topilmadi</p>
</div>
<!-- Moslashuvchi (4.26): telefonda pastki varaq -->
<button class="fx-btn" popovertarget="m-adapt" aria-haspopup="menu">Amallar</button>
<div class="fx-menu" id="m-adapt" role="menu" popover data-fx-menu data-fx-adaptive>
  <button class="fx-menu__item" role="menuitem">Tahrirlaş</button>
  <button class="fx-menu__item" role="menuitem">Nusxa oliş</button>
  <button class="fx-menu__item" role="menuitem" data-tone="danger">Öçiriş</button>
</div>
```

- Qilmang: Menyuga forma yoki uzun matn qöymang — popover yoki dialog.
- Qilmang: Bitta bandli menyu qilmang — oddiy tugma.
- Qilmang: Içki menyuni ikki bosqiçdan çuqur qilmang — murakkab tanlov uçun dialog yoki buyruqlar oynasi.
- Qilmang: Qidiruvni 7 tagaça bandli menyuga qöymang — keraksiz.

## Menubar (`menubar`, beta, 0.29.0 dan)

Ilova menyu qatori (4.148, APG menubar): «Fayl · Tahrir · Köriniş · Yordam» — hisobot konstruktori, hujjat tahrirlovçi, jadval muharriri kabi köp buyruqli ilovalar uçun. Har trigger ostida menyu; içki menyu (Eksport → Excel/PDF), belgilanadigan (menuitemcheckbox) va bittasi tanlanadigan (menuitemradio) bandlar, tugma yorliği (kbd), ajratuvçi, öçiq band. Bitta menyu oçiq bölsa, qöşni triggerga siçqonça yoki ← → bilan ötilganda u ham oçiladi. Tanlov — fx-menubar-select hodisasi.

- Qaçon: Köp buyruqli iş muhiti: hisobot konstruktori, hujjat yoki jadval muharriri. Buyruqlar guruhlari doimiy körinib tursin («Fayl», «Tahrir»).
- Qaçon emas: Bitta tugma ostidagi amallar röyxati → `menu`; Sayt bölimlari navigatsiyasi → `nav`; Ikon-tugmalar qatori → `toolbar`
- Variantlar: data-variant=bar|flat (standart bar); data-tone=neutral|danger (standart neutral)
- Klaviatura: ← / → — Qatorda oldingi / keyingi menyu (menyu oçiq bölsa — u ham oçiladi; içki menyuda → oçadi, ← yopadi); ↓ / Enter / Space — Menyuni oçadi, birinçi bandga; ↑ — Menyuni oçadi, oxirgi bandga; menyu içida — oldingi band; Home / End — Birinçi / oxirgi band; Enter — Bandni tanlaydi va menyuni yopadi; Space — Belgilanadigan bandni almaştiradi (menyu oçiq qoladi); Esc — Bir daraja yopadi, fokus triggerga; Tab — Hamma menyularni yopib, keyingi elementga; Harf — Şu harf bilan boşlanuvçi bandga
- Tokenlar: --fx-bg-muted, --fx-bg-pressed, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-sm, --fx-ease-enter, --fx-ease-exit, --fx-ease-standard, --fx-elevation-3, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-motion-exit-fast, --fx-motion-fast, --fx-motion-shift-sm, --fx-popover-width, --fx-radius-control, --fx-radius-nav, --fx-radius-overlay, --fx-size-icon-sm, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-6, --fx-text-disabled, --fx-text-error, --fx-text-primary, --fx-text-tertiary, --fx-z-dropdown

```html
<nav class="fx-menubar" data-fx-menubar aria-label="Hisobot konstruktori">
  <ul class="fx-menubar__bar" role="menubar" aria-label="Hisobot konstruktori">
    <li role="none" class="fx-menubar__entry">
      <button class="fx-menubar__trigger" role="menuitem" type="button">Fayl</button>
      <ul class="fx-menubar__menu" role="menu">
        <li role="none"><button class="fx-menubar__item" role="menuitem" type="button">Yangi hisobot<kbd class="fx-menubar__kbd">Ctrl+N</kbd></button></li>
        <li role="none"><button class="fx-menubar__item" role="menuitem" type="button">Oçiş…<kbd class="fx-menubar__kbd">Ctrl+O</kbd></button></li>
        <li role="none" class="fx-menubar__entry">
          <button class="fx-menubar__item" role="menuitem" type="button">Eksport</button>
          <ul class="fx-menubar__menu" role="menu">
            <li role="none"><button class="fx-menubar__item" role="menuitem" type="button" data-value="xlsx">Excel (.xlsx)</button></li>
            <li role="none"><button class="fx-menubar__item" role="menuitem" type="button" data-value="pdf">PDF</button></li>
            <li role="none"><button class="fx-menubar__item" role="menuitem" type="button" data-value="csv">CSV</button></li>
          </ul>
        </li>
        <li role="separator" class="fx-menubar__sep"></li>
        <li role="none"><button class="fx-menubar__item" role="menuitem" type="button">Çop etiş<kbd class="fx-menubar__kbd">Ctrl+P</kbd></button></li>
        <li role="none"><button class="fx-menubar__item" role="menuitem" type="button" aria-disabled="true">Arxivga oliş</button></li>
      </ul>
    </li>
    <li role="none" class="fx-menubar__entry">
      <button class="fx-menubar__trigger" role="menuitem" type="button">Tahrir</button>
      <ul class="fx-menubar__menu" role="menu">
        <li role="none"><button class="fx-menubar__item" role="menuitem" type="button">Bekor qiliş<kbd class="fx-menubar__kbd">Ctrl+Z</kbd></button></li>
        <li role="none"><button class="fx-menubar__item" role="menuitem" type="button">Qaytariş<kbd class="fx-menubar__kbd">Ctrl+Y</kbd></button></li>
        <li role="separator" class="fx-menubar__sep"></li>
        <li role="none"><button class="fx-menubar__item" role="menuitem" type="button" data-tone="danger">Ustunni öçiriş</button></li>
      </ul>
    </li>
    <li role="none" class="fx-menubar__entry">
      <button class="fx-menubar__trigger" role="menuitem" type="button">Köriniş</button>
      <ul class="fx-menubar__menu" role="menu">
        <li role="none"><button class="fx-menubar__item" role="menuitemcheckbox" type="button" aria-checked="true">Jami qatori</button></li>
        <li role="none"><button class="fx-menubar__item" role="menuitemcheckbox" type="button" aria-checked="false">Grafik</button></li>
        <li role="separator" class="fx-menubar__sep"></li>
        <li role="none" class="fx-menubar__label" aria-hidden="true">Davr</li>
        <li role="none"><ul class="fx-menubar__group" role="group" aria-label="Davr">
          <li role="none"><button class="fx-menubar__item" role="menuitemradio" type="button" aria-checked="false">Kunlik</button></li>
          <li role="none"><button class="fx-menubar__item" role="menuitemradio" type="button" aria-checked="true">Haftalik</button></li>
          <li role="none"><button class="fx-menubar__item" role="menuitemradio" type="button" aria-checked="false">Oylik</button></li>
        </ul></li>
      </ul>
    </li>
    <li role="none" class="fx-menubar__entry">
      <button class="fx-menubar__trigger" role="menuitem" type="button">Yordam</button>
      <ul class="fx-menubar__menu" role="menu">
        <li role="none"><button class="fx-menubar__item" role="menuitem" type="button">Qisqa tugmalar<kbd class="fx-menubar__kbd">?</kbd></button></li>
        <li role="none"><button class="fx-menubar__item" role="menuitem" type="button">Qöllanma</button></li>
      </ul>
    </li>
  </ul>
</nav>
```

- Qilmang: Sayt navigatsiyasi (havolalar) uçun menubar işlatmang — u ilova buyruqlari uçun; sayt menyusi — nav yoki site-header.
- Qilmang: Har bandni içki menyuga joylamang — 2 darajadan çuqur bölmasin.
- Qilmang: Faqat rang bilan tanlangan holatni körsatmang — ✓ / ● belgisi bor.

## Xabar (AI) (`message`, experimental, 0.16.0 dan)

Suhbat xabari: AI agent yoki odam — avatar, ism, vaqt, matn; foydalanuvçi xabari öngda brend tusida. Qöşimça: «yozmoqda» belgisi (.fx-typing) va AI yorliği (.fx-ai-label). Kengaytma: data-group=cont (ketma-ket, avatarsiz), .fx-message__variants (2/3), data-state=editing|error, .fx-message__retry, matn içida kod va jadval.

- Qaçon: AI agent yoki odam bilan suhbat, izohlar lentasi.
- Qaçon emas: Tizim xabari → `toast`
- Variantlar: data-role=assistant|user (standart assistant)
- Tokenlar: --fx-bg-brand-solid, --fx-bg-brand-subtle, --fx-bg-category-purple-subtle, --fx-bg-muted, --fx-bg-pressed, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-error, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-md, --fx-control-h-sm, --fx-duration-pulse, --fx-ease-standard, --fx-fg-error, --fx-font-adjust-mono, --fx-font-family-mono, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-motion-fast, --fx-motion-instant, --fx-motion-press, --fx-radius-badge, --fx-radius-circle, --fx-radius-control, --fx-radius-overlay, --fx-radius-surface, --fx-radius-tag, --fx-size-avatar-md, --fx-size-icon-md, --fx-size-icon-sm, --fx-size-status-dot-sm, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-6, --fx-text-brand, --fx-text-on-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<div class="fx-message">
  <span class="fx-avatar" data-color="purple" role="img" aria-label="Mister Fox">MF</span>
  <div class="fx-message__meta"><span class="fx-message__name">Mister Fox</span><span class="fx-ai-label">AI</span><time>09:14</time></div>
  <div class="fx-message__body"><p>FoxUI 0.15.0 çiqdi: buyruqlar oynasi va combobox. Sinovlar ötdi.</p></div>
</div>
<div class="fx-message" data-role="user">
  <div class="fx-message__body">Qolganlarni ham bajar.</div>
</div>
<div class="fx-message">
  <span class="fx-avatar" data-color="purple" role="img" aria-label="Mister Fox">MF</span>
  <div class="fx-message__meta"><span class="fx-message__name">Mister Fox</span></div>
  <div class="fx-message__body"><span class="fx-typing" role="status" aria-label="Yozmoqda"><i></i><i></i><i></i></span></div>
</div>
<div class="fx-message" data-group="cont"><div class="fx-message__body">Ikkinçi xabar.<pre><code>npm i foxui</code></pre></div></div>
```

- Qilmang: AI yaratgan matnni yorliqsiz körsatmang — .fx-ai-label.

## Ölçagiç (`meter`, beta, 0.23.0 dan)

Ma'lum diapazondagi qiymat: siğim, ball, mezon. Progress'dan farqi — jarayon emas, holat: maqsad belgisi (--fx-meter-target), zonalar (past/örta/yuqori, data-zones), şkala yorliqlari. Asosiy şakl — çiziqli (#54, WDS «Grafiklar»); bitta yirik körsatkiç kartasi uçun yarim doira (data-shape="gauge", 4.115): raqam markazda, maqsad çiziği, zonalar. Baholi şkala (data-variant="graded", Manbaa'dan otaga 19.10): 0–100 işonç yoki sifat bali — qizildan yaşilgaça gradient, har 10 ballda kesik, ▼ belgi, katta son va daraja sözi; <details> bölsa oçilganda qismlar röyxati, data-shape="tile" — kvadrat nişon.

- Qaçon: Qiymatning diapazondagi örni, maqsad yoki xavfli zona bilan.
- Qaçon emas: Jarayon foizi → `progress`; Taqqoslaş (bir neçta toifa) → `barlist`
- Variantlar: data-tone=success|warning|error (standart ink); data-size=sm|lg (standart md); data-zones=reverse; data-shape=line|gauge|tile (standart line); data-variant=graded (standart solid)
- Tokenlar: --fx-bg-error-subtle, --fx-bg-success-subtle, --fx-bg-surface, --fx-bg-warning-subtle, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-strong, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-color-amber-300, --fx-color-amber-600, --fx-color-black, --fx-color-green-600, --fx-color-red-300, --fx-color-red-600, --fx-control-h-lg, --fx-control-h-md, --fx-ease-standard, --fx-fg-error, --fx-fg-success, --fx-fg-warning, --fx-font-adjust-display, --fx-font-adjust-numeric, --fx-font-family-display, --fx-font-family-numeric, --fx-font-size-display-sm, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-bold, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-motion-base, --fx-motion-fast, --fx-motion-slow, --fx-radius-badge, --fx-radius-surface, --fx-shadow-sm, --fx-size-icon-sm, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-text-error, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary, --fx-viz-ink, --fx-viz-track

```html
<div class="fx-meter" data-tone="success" data-zones style="--fx-meter-value: 82%; --fx-meter-target: 90%">
  <div class="fx-meter__head"><span class="fx-meter__label" id="mt1">Davomat</span><span class="fx-meter__value">82 % · maqsad 90 %</span></div>
  <div class="fx-meter__track" role="meter" aria-labelledby="mt1" aria-valuenow="82" aria-valuemin="0" aria-valuemax="100" aria-valuetext="82 foiz, maqsad 90 foiz">
    <div class="fx-meter__fill"></div><div class="fx-meter__target" aria-hidden="true"></div>
  </div>
  <div class="fx-meter__scale" aria-hidden="true"><span>0</span><span>50</span><span>100</span></div>
</div>
<div class="fx-meter" data-tone="warning" data-size="sm" style="--fx-meter-value: 91%">
  <div class="fx-meter__head"><span class="fx-meter__label" id="mt2">Server diski</span><span class="fx-meter__value">91 GB / 100 GB</span></div>
  <div class="fx-meter__track" role="meter" aria-labelledby="mt2" aria-valuenow="91" aria-valuemin="0" aria-valuemax="100"><div class="fx-meter__fill"></div></div>
</div>
<!-- Yarim doira (4.115) -->
<div class="fx-meter" data-shape="gauge" data-zones style="--fx-meter-value: 74%; --fx-meter-target: 80%">
  <div class="fx-meter__head"><span class="fx-meter__label" id="mtg1">Mijoz qoniqişi · maqsad 80</span><span class="fx-meter__value">74</span></div>
  <div class="fx-meter__track" role="meter" aria-labelledby="mtg1" aria-valuenow="74" aria-valuemin="0" aria-valuemax="100" aria-valuetext="74 ball, maqsad 80">
    <div class="fx-meter__fill"></div><div class="fx-meter__target" aria-hidden="true"></div>
  </div>
  <div class="fx-meter__scale" aria-hidden="true"><span>0</span><span>100</span></div>
</div>
<!-- Baholi shkala (data-variant="graded") — ochiladigan tarkib bilan -->
<details class="fx-meter" data-variant="graded" data-size="lg" data-tone="warning" style="--fx-meter-value: 43%">
  <summary>
    <span class="fx-meter__head"><span class="fx-meter__label" id="mgr1">Işonçlilik</span><span class="fx-meter__level">Örta</span></span>
    <span class="fx-meter__score"><b>43</b>/100</span>
    <span class="fx-meter__track" role="meter" aria-labelledby="mgr1" aria-valuenow="43" aria-valuemin="0" aria-valuemax="100" aria-valuetext="43 ball, örta"><span class="fx-meter__fill"></span><span class="fx-meter__mark" aria-hidden="true"></span></span>
  </summary>
  <ul class="fx-meter__parts">
    <li class="fx-meter" data-variant="graded" data-size="sm" data-tone="warning" style="--fx-meter-value: 40%"><span class="fx-meter__head"><span class="fx-meter__label" id="mgr2">Kiriş · Örta</span><span class="fx-meter__value">40/100</span></span><span class="fx-meter__track" role="meter" aria-labelledby="mgr2" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100"><span class="fx-meter__fill"></span></span></li>
    <li class="fx-meter" data-variant="graded" data-size="sm" data-tone="error" style="--fx-meter-value: 25%"><span class="fx-meter__head"><span class="fx-meter__label" id="mgr3">Hayoti · Past</span><span class="fx-meter__value">25/100</span></span><span class="fx-meter__track" role="meter" aria-labelledby="mgr3" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"><span class="fx-meter__fill"></span></span></li>
    <li class="fx-meter" data-variant="graded" data-size="sm" data-tone="success" style="--fx-meter-value: 88%"><span class="fx-meter__head"><span class="fx-meter__label" id="mgr4">Manbalar · Juda yuqori</span><span class="fx-meter__value">88/100</span></span><span class="fx-meter__track" role="meter" aria-labelledby="mgr4" aria-valuenow="88" aria-valuemin="0" aria-valuemax="100"><span class="fx-meter__fill"></span></span></li>
  </ul>
</details>
<!-- Kvadrat nishon -->
<a class="fx-meter" href="#mgr1" data-variant="graded" data-shape="tile" data-tone="warning" style="--fx-meter-value: 43%">
  <span class="fx-meter__label" id="mgr5">Işonç</span><span class="fx-meter__score"><b>43</b></span>
  <span class="fx-meter__track" role="meter" aria-labelledby="mgr5" aria-valuenow="43" aria-valuemin="0" aria-valuemax="100" aria-valuetext="43 ball, örta"><span class="fx-meter__fill"></span></span>
  <span class="fx-meter__level">Örta</span>
</a>
```

- Qilmang: Jarayon (yuklaniş) uçun işlatmang — progress.
- Qilmang: Dashboard grafiklarida yarim doira işlatmang — çiziqli; gauge faqat bitta yirik körsatkiç kartasida (siğim, NPS) va raqami bilan.
- Qilmang: Zonalar rangiga yolğiz tayanmang — qiymat matni (82 %) yonida yoziladi.
- Qilmang: Diapazoni yöq qiymat uçun işlatmang.
- Qilmang: Baholi şkalani jarayon foizi uçun işlatmang — progress. Daraja rangiga yolğiz tayanmang: söz (Past · Örta · Yuqori) yonida turadi.
- Qilmang: Ballni «sovğa» qilmang: qiymat faqat hisobdan; qism max = 0 bölsa (jarima) — çiziqsiz, faqat matn.

## Pastga qadalgan yoziş oynalari (`minichat`, beta, 0.29.0 dan)

Ekranning pastki öng burçagiga qadalgan kiçik oynalar (4.201, Gmail va Salesforce «Docked composer»): iş sahifasidan çiqmasdan bir neçta çat suhbati yoki yangi xat yonma-yon oçiq turadi. Har oyna: sarlavha tugmasi (avatar, nom, holat, yiğilganda öqilmaganlar soni) — bosilsa yiğiladi/oçiladi; «Kattalaştiriş» (aria-pressed) va «Yopiş»; tana — xabarlar (.fx-minichat__log) yoki xat maydonlari (.fx-minichat__fields) va pastda yoziş qatori. data-state: open, minimized (faqat sarlavha), expanded. Oçiq oynalar data-max dan oşsa eng eskisi özi yiğiladi. Xulq (data-fx-minichat): Esc oynani yiğadi va fokusni sarlavhaga qaytaradi; yopilganda fokus qöşni oynaga ötadi; hodisalar fx-minichat-toggle, fx-minichat-close (bekor qilinadigan — «Qoralama saqlansinmi?» uçun); root.fxMinichat.add(oyna). data-tone="brand" — sarlavha brend rangida. data-size="block" — hujjat namunasi (fixed emas). Telefonda oçiq oyna töliq kenglikda, yiğilganlar ostida qator böladi.

- Qaçon: CRM, helpdesk va poçta ilovasida iş sahifasidan çiqmasdan suhbat yoki xat yoziş. Bir vaqtda 2–3 mijoz bilan yozişma.
- Qaçon emas: Töliq suhbat sahifasi → `conversation`; Yordamçi AI paneli → `assistant`; Bitta yon panel (yozuv tafsiloti) → `sheet`
- Variantlar: data-state=open|minimized|expanded (standart open); data-tone=brand (standart default); data-size=block (standart fixed); data-from=me (standart them)
- Klaviatura: Enter, Space (sarlavhada) — Oynani yiğadi / oçadi; Esc (oyna ichida) — Oynani yiğadi, fokus sarlavhaga; Tab — Sarlavha → kattalaştiriş → yopiş → tana maydonlari
- Tokenlar: --fx-bg-brand-solid, --fx-bg-error-solid, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-strong, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-md, --fx-control-h-sm, --fx-ease-enter, --fx-ease-standard, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-regular, --fx-font-weight-semibold, --fx-motion-base, --fx-motion-fast, --fx-motion-shift-md, --fx-radius-badge, --fx-radius-control, --fx-radius-overlay, --fx-radius-pill, --fx-radius-surface, --fx-shadow-lg, --fx-size-icon-md, --fx-size-icon-sm, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-6, --fx-text-on-brand, --fx-text-on-error, --fx-text-primary, --fx-text-tertiary, --fx-z-overlay

```html
<div class="fx-minichat" data-fx-minichat data-max="2" data-size="block" role="region" aria-label="Oçiq suhbatlar">
  <section class="fx-minichat__window" data-state="open" aria-label="Aziz Karimov bilan suhbat">
    <header class="fx-minichat__head"><button class="fx-minichat__toggle" type="button" aria-expanded="true"><span class="fx-avatar" data-size="sm" data-color="coral" data-status="active" aria-hidden="true">AK</span><span class="fx-minichat__title">Aziz Karimov<span class="fx-minichat__sub">onlayn · «Ipak Yöli Savdo»</span></span><span class="fx-minichat__unread" aria-label="2 ta öqilmagan">2</span></button><button class="fx-minichat__action" type="button" data-minichat="expand" aria-pressed="false" aria-label="Kattalaştiriş: Aziz Karimov"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M14 4h6v6M10 20H4v-6M20 4l-7 7M4 20l7-7"/></svg></button><button class="fx-minichat__action" type="button" data-minichat="close" aria-label="Yopiş: Aziz Karimov"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 6l12 12M18 6 6 18"/></svg></button></header>
    <div class="fx-minichat__body">
      <div class="fx-minichat__log" role="log" aria-label="Xabarlar" tabindex="0"><span class="fx-minichat__time">Bugun, 10:42</span><p class="fx-minichat__msg">Assalomu alaykum! Hisob-faktura FX-2026-0412 ni olsak böladimi?</p><p class="fx-minichat__msg" data-from="me">Vaalaykum assalom, hozir yuboraman.</p><p class="fx-minichat__msg">Rahmat, 5 ta örin uçun edi.</p></div>
      <form class="fx-minichat__foot"><input class="fx-input" data-size="sm" placeholder="Xabar yozing" aria-label="Xabar: Aziz Karimov"><button class="fx-btn" data-variant="primary" data-size="sm" type="submit">Yuboriş</button></form>
    </div>
  </section>
  <section class="fx-minichat__window" data-state="open" data-tone="brand" aria-label="Yangi xat">
    <header class="fx-minichat__head"><button class="fx-minichat__toggle" type="button" aria-expanded="true"><span class="fx-minichat__title">Yangi xat<span class="fx-minichat__sub">Qoralama saqlandi</span></span></button><button class="fx-minichat__action" type="button" data-minichat="expand" aria-pressed="false" aria-label="Kattalaştiriş: Yangi xat"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M14 4h6v6M10 20H4v-6M20 4l-7 7M4 20l7-7"/></svg></button><button class="fx-minichat__action" type="button" data-minichat="close" aria-label="Yopiş: Yangi xat"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 6l12 12M18 6 6 18"/></svg></button></header>
    <form class="fx-minichat__body">
      <div class="fx-minichat__fields"><label>Kimga <input type="email" value="dilnoza@foxui.dev" aria-label="Kimga"></label><label>Mavzu <input value="Oktabr hisoboti" aria-label="Mavzu"></label><textarea aria-label="Xat matni" placeholder="Xat matni"></textarea></div>
      <div class="fx-minichat__foot"><button class="fx-btn" data-variant="primary" data-size="sm" type="submit">Yuboriş</button></div>
    </form>
  </section>
  <section class="fx-minichat__window" data-state="minimized" aria-label="Malika Nazarova bilan suhbat">
    <header class="fx-minichat__head"><button class="fx-minichat__toggle" type="button" aria-expanded="false"><span class="fx-avatar" data-size="sm" data-color="pink" aria-hidden="true">MN</span><span class="fx-minichat__title">Malika Nazarova</span><span class="fx-minichat__unread" aria-label="5 ta öqilmagan">5</span></button><button class="fx-minichat__action" type="button" data-minichat="expand" aria-pressed="false" aria-label="Kattalaştiriş: Malika Nazarova"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M14 4h6v6M10 20H4v-6M20 4l-7 7M4 20l7-7"/></svg></button><button class="fx-minichat__action" type="button" data-minichat="close" aria-label="Yopiş: Malika Nazarova"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 6l12 12M18 6 6 18"/></svg></button></header>
    <div class="fx-minichat__body" hidden>
      <div class="fx-minichat__log" role="log" aria-label="Xabarlar" tabindex="0"><p class="fx-minichat__msg">Ertangi uçraşuv 15:00 da, Çilonzordagi ofisda.</p></div>
      <form class="fx-minichat__foot"><input class="fx-input" data-size="sm" placeholder="Xabar yozing" aria-label="Xabar: Malika Nazarova"><button class="fx-btn" data-variant="primary" data-size="sm" type="submit">Yuboriş</button></form>
    </div>
  </section>
</div>
```

- Qilmang: 3 tadan ortiq oynani oçiq qoldirmang — data-max bilan çeklang, qolganlari yiğiladi.
- Qilmang: Yozilgan matnni yopişda jimgina yöqotmang — fx-minichat-close'ni töxtatib qoralamani saqlang yoki sörang.
- Qilmang: Muhim forma (tölov, röyxatdan ötiş) uçun işlatmang — u alohida sahifa yoki dialog.

## Qurilma ramkasi (`mockup`, beta, 0.29.0 dan)

Skrinşot yoki jonli HTML'ni brauzer (manzil qatori va uçta nuqta) yoki telefon (yumaloq ramka, kesik) ramkasida körsatiş (4.75) — landing, hujjat va taqdimot uçun. Ramka faqat CSS: rasm faylisiz, ranglar mavzudan, yoruğ va qoronğida moslaşadi. Ekran içiga img, video yoki FoxUI bloklari qöyiladi; brauzer nisbati 16:10 (data-ratio="auto" — kontent balandligi), telefon 9:19,5.

- Qaçon: Landing hero blokida mahsulot skrinşoti. Hujjatda «telefonda qanday körinadi» namunasi.
- Qaçon emas: Oddiy rasm → `image`; Oldin/keyin soliştiriş → `compare`
- Variantlar: data-device=browser|phone (standart browser); data-ratio=auto (standart 16/10); data-notch=none (standart island); data-shadow=none (standart lg)
- Tokenlar: --fx-bg-muted, --fx-bg-page, --fx-bg-surface, --fx-border-color-default, --fx-border-color-strong, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-font-size-xs, --fx-radius-circle, --fx-radius-control, --fx-radius-overlay, --fx-radius-pill, --fx-radius-surface, --fx-shadow-lg, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-6, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,17rem),1fr));gap:var(--fx-space-8);align-items:center">
<figure class="fx-mockup" data-device="browser">
  <div class="fx-mockup__frame">
    <div class="fx-mockup__bar" aria-hidden="true"><span class="fx-mockup__dots"><i></i></span><span class="fx-mockup__url">crm.savdo.uz/bitimlar</span><span></span></div>
    <div class="fx-mockup__screen"><div style="display:grid;grid-template-columns:auto 1fr;block-size:100%;font-size:var(--fx-font-size-xs)"><div style="display:grid;align-content:start;gap:var(--fx-space-2);padding:var(--fx-space-3);background:var(--fx-bg-surface);border-inline-end:var(--fx-border-width-default) solid var(--fx-border-color-default)"><strong>Savdo CRM</strong><span>Boş sahifa</span><span style="color:var(--fx-text-brand);font-weight:var(--fx-font-weight-semibold)">Bitimlar</span><span>Mijozlar</span><span>Hisobotlar</span></div><div style="display:grid;align-content:start;gap:var(--fx-space-3);padding:var(--fx-space-4)"><strong style="font-size:var(--fx-font-size-md)">Bitimlar · oktyabr</strong><div style="display:grid;grid-template-columns:repeat(3,1fr);gap:var(--fx-space-2)"><div class="fx-card" style="padding:var(--fx-space-3)">Yangi<br><b style="font-size:var(--fx-font-size-lg)">48</b></div><div class="fx-card" style="padding:var(--fx-space-3)">Muzokara<br><b style="font-size:var(--fx-font-size-lg)">17</b></div><div class="fx-card" style="padding:var(--fx-space-3)">Yutildi<br><b style="font-size:var(--fx-font-size-lg)">9</b></div></div><div class="fx-progress" style="--fx-progress-value:64%" role="progressbar" aria-valuenow="64" aria-label="Oylik reja"></div><span style="color:var(--fx-text-tertiary)">Oylik reja: 64 % · 312 mln söm</span></div></div></div>
  </div>
  <figcaption>CRM: bitimlar paneli</figcaption>
</figure>
<figure class="fx-mockup" data-device="phone">
  <div class="fx-mockup__frame"><div class="fx-mockup__screen"><div style="display:grid;align-content:start;gap:var(--fx-space-3);padding:var(--fx-space-12) var(--fx-space-4) var(--fx-space-4);block-size:100%;font-size:var(--fx-font-size-xs)"><strong style="font-size:var(--fx-font-size-lg)">Salom, Dilnoza</strong><div class="fx-card" style="padding:var(--fx-space-3)">Bugungi tuşum<br><b style="font-size:var(--fx-font-size-xl)">4,2 mln söm</b></div><div class="fx-card" style="padding:var(--fx-space-3)">Yangi buyurtmalar: <b>12</b></div><div class="fx-card" style="padding:var(--fx-space-3)">Kuryerda: <b>5</b></div></div></div></div>
  <figcaption>Dökon ilovasi</figcaption>
</figure>
</div>
```

- Qilmang: Muhim matnni faqat skrinşot içida bermang — alt yoki figcaption yozing.
- Qilmang: Ramkani içki ilova oynasi (haqiqiy UI) sifatida işlatmang — bu namoyiş uçun.
- Qilmang: Bitta ekranda 3 tadan köp ramka qöymang.

## Şakl morfi (`morph`, beta, 0.29.0 dan)

Tugma bosilganda va tanlanganda yoyi prujina bilan özgaradi (M3 Expressive shape morph): standart — yumaloq tugma bosilganda yoki tanlanganda kvadratroq böladi; data-fx-morph="round" — aksinça. Faqat burçak özgaradi, ölçam va joy sakramaydi. .fx-morph — tugma guruhi (oraliq bilan) yoki data-variant="connected" — yopişgan guruh: içki burçaklar kiçik, tanlangan tugma töliq yumaloqlanadi. Tanlangan holat aria-pressed / aria-checked / aria-selected yoki içidagi radio/checkbox orqali — JS şart emas (aria-pressed uçun togglegroup xulqi). Harakat kamaytirilsa şakl darhol almaşadi.

- Qaçon: Davr tanlaş (Kun · Hafta · Oy), köriniş almaştiriş — landing yoki dashboard sarlavhasida. Asosiy CTA tugmasiga «tirik» bosiliş hissi beriş (expressive ekran).
- Qaçon emas: Ilova içidagi oddiy segment tanlov → `togglegroup`; Vositalar paneli tugmalari → `toolbar`
- Variantlar: data-fx-morph=square|round (standart square); data-variant=gap|connected (standart gap)
- Klaviatura: Tab — Guruhga kiradi (togglegroup bilan — tanlangan tugmaga); ← → — Guruh içida keyingi tugma (togglegroup yoki radio); Space / Enter — Tanlaydi
- Tokenlar: --fx-bg-brand-solid, --fx-bg-brand-solid-hover, --fx-bg-muted, --fx-border-color-focus, --fx-border-width-focus, --fx-control-h-md, --fx-ease-spring, --fx-ease-standard, --fx-motion-fast, --fx-motion-instant, --fx-motion-slow, --fx-radius-control, --fx-space-1, --fx-text-on-brand, --fx-text-primary

```html
<div class="fx-morph" role="group" aria-label="Davr" data-fx-togglegroup data-required>
  <button type="button" class="fx-btn fx-togglegroup__item" data-fx-morph aria-pressed="false">Kun</button>
  <button type="button" class="fx-btn fx-togglegroup__item" data-fx-morph aria-pressed="true">Hafta</button>
  <button type="button" class="fx-btn fx-togglegroup__item" data-fx-morph aria-pressed="false">Oy</button>
  <button type="button" class="fx-btn fx-togglegroup__item" data-fx-morph aria-pressed="false">Yil</button>
</div>
<fieldset class="fx-morph" data-variant="connected" style="border:0;padding:0;margin:var(--fx-space-4) 0 0">
  <legend class="fx-sr-only">Köriniş</legend>
  <label class="fx-btn" data-fx-morph><input type="radio" name="morph-view" value="list" checked>Röyxat</label>
  <label class="fx-btn" data-fx-morph><input type="radio" name="morph-view" value="board">Kanban</label>
  <label class="fx-btn" data-fx-morph><input type="radio" name="morph-view" value="calendar">Kalendar</label>
</fieldset>
<p style="display:flex;gap:var(--fx-space-3);margin-block-start:var(--fx-space-4)">
  <button type="button" class="fx-btn" data-variant="primary" data-size="lg" data-fx-morph>Buyurtma beriş</button>
  <button type="button" class="fx-btn" data-size="lg" data-fx-morph="round">Savatga</button>
</p>
```

- Qilmang: Şakl özgarişini yagona belgi qilmang — tanlangan tugma rangi ham boşqaça (guruhda avtomatik).
- Qilmang: Jadval va ziç forma içidagi tugmalarga qöymang — bu ifodali (expressive) ekranlar uçun.
- Qilmang: Bir guruhda morfli va morfsiz tugmalarni aralaştirmang.

## Harakat qatlami (`motion`, beta, 0.28.0 dan)

Zamonaviy CSS harakat qatlami. Prujina sxemasi (4.25, M3 Expressive): --fx-spring-spatial-fast|default|slow — joy/ölçam uçun (biroz oşib ketadi), --fx-spring-effects-* — rang/şaffoflik uçun (oşib ketmaydi); qiymat transition'ga tayyor juftlik, calm'da sakramaydi, expressive'da sekin prujina sakraydi; fx-spring data-spring="spatial|effects|both" — tayyor ötiş. Scroll'ga boğliq kiriş (4.31): data-fx-reveal="up|fade|blur|scale" — blok köriniş maydoniga kirganda paydo böladi (animation-timeline: view()), qöllanmasa darhol körinadi. Öqiş progress çiziği (4.32): fx-scroll-progress — sahifa aylantirilgani sari töladi (scroll() timeline). Aylanuvçi raqam (4.35): fx-ticker + data-fx-ticker — qiymat özgarganda raqamlar barabandek aylanadi (özbekça format: 126 400 000), birinçi aylaniş körinişda.

- Qaçon: Joy/ölçam özgarişi (panel oçilişi, karta kengayişi) — spatial prujina; rang/şaffoflik — effects. Landing va hujjat sahifasida bloklarning paydo bölişi; uzun maqolada öqiş progressi. Dashboard KPI qiymati yangilanganda (jonli tuşum, sotuvlar soni).
- Qaçon emas: Röyxat elementlarining ketma-ket kirişi → `list`; Vazifa bajariliş foizi → `progress`; Özgariş foizi belgisi → `delta`
- Variantlar: data-spring=effects|spatial|both (standart effects); data-speed=fast|default|slow (standart default); data-fx-reveal=up|fade|blur|scale (standart up); data-position=fixed|sticky (standart fixed); data-size=md|sm (standart md); data-tone=brand|accent|up|down (standart brand); data-decimals=0|1|2 (standart 0)
- Tokenlar: --fx-bg-brand-solid, --fx-duration-stagger, --fx-ease-bounce, --fx-ease-emphasized, --fx-ease-enter, --fx-ease-spring, --fx-ease-standard, --fx-fg-error, --fx-fg-success, --fx-knob-motion, --fx-line-height-tight, --fx-motion-base, --fx-motion-fast, --fx-motion-scale-enter, --fx-motion-shift-lg, --fx-motion-shift-md, --fx-motion-slow, --fx-motion-slower, --fx-space-1, --fx-space-2, --fx-spring-effects-default, --fx-spring-effects-fast, --fx-spring-effects-slow, --fx-spring-spatial-default, --fx-spring-spatial-fast, --fx-spring-spatial-slow, --fx-viz-accent, --fx-z-sticky

```html
<div class="fx-scroll-progress" data-position="sticky" aria-hidden="true"></div>
<div class="fx-stat" style="max-inline-size: 18rem">
  <div class="fx-stat__label">Bugungi tuşum</div>
  <div class="fx-stat__value"><span class="fx-ticker" data-fx-ticker data-value="48750000" data-from="0" data-trend>48 750 000</span> <small>söm</small></div>
  <div class="fx-stat__hint">Har 5 daqiqada yangilanadi</div>
</div>
<button class="fx-btn" type="button" onclick="const t=document.querySelector('[data-fx-ticker]');t.dataset.value=+t.dataset.value+1250000">Tölov qöşiş</button>
<section data-fx-reveal="up" style="margin-block-start: var(--fx-space-6)">
  <h3 class="fx-type" data-role="title-lg">Yangi mijozlar</h3>
  <p class="fx-type">Oktabr oyida 42 ta yangi mijoz qöşildi — eng köpi Samarqand filialida.</p>
</section>
<div class="fx-card fx-spring" data-spring="both" style="max-inline-size: 18rem" data-fx-reveal="blur">Karta xiralikdan çiqadi</div>
```

- Qilmang: transition'da xom ms yoki cubic-bezier yozmang — --fx-spring-* juftligini işlating.
- Qilmang: Rang va şaffoflikka sakrovçi (spatial) prujina bermang — u faqat joy, ölçam va buriliş uçun.
- Qilmang: Muhim kontentni data-fx-reveal ortiga yaşirmang deb qörqmang — qöllanmasa darhol körinadi; lekin birinçi ekrandagi (LCP) blokka reveal qöymang.
- Qilmang: Raqamni har soniyada aylantirmang — ticker qiymat haqiqatan özgarganda işlaydi.

## Xabar amallari paneli (`msgactions`, beta, 0.23.0 dan)

Javob ostidagi ikonli amallar: nusxa (✓ bilan tasdiqlanadi), qayta yaratiş, yoqdi/yoqmadi, tahrir, variantlar tarmoği ‹ 2/3 ›. Toolbar naqşi: Tab bilan bitta kiriş, içida ← →. data-reveal="hover" — desktop'da faqat xabar ustida körinadi.

- Qaçon: AI javobi yoki xabar ostida tezkor amallar.
- Qaçon emas: Ikkilamçi amallar köp bölsa (menyuga yiğing) → `menu`
- Variantlar: data-reveal=hover (standart always)
- Klaviatura: Tab — Panelga kiriş/çiqiş; ← → — Tugmalar orasida; Home, End — Birinçi/oxirgi; Enter, Space — Amalni bajaradi
- Tokenlar: --fx-bg-brand-subtle, --fx-bg-muted, --fx-border-color-default, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-sm, --fx-ease-spring, --fx-ease-standard, --fx-fg-success, --fx-font-size-xs, --fx-motion-base, --fx-motion-fast, --fx-motion-instant, --fx-motion-press, --fx-radius-control, --fx-size-icon-md, --fx-space-1, --fx-text-brand, --fx-text-disabled, --fx-text-primary, --fx-text-tertiary

```html
<div class="fx-message">
  <span class="fx-avatar" data-color="purple" role="img" aria-label="Mister Fox">MF</span>
  <div class="fx-message__meta"><span class="fx-message__name">Mister Fox</span><span class="fx-ai-label">AI</span></div>
  <div class="fx-message__body"><p>Tayyor: 12 ta nofaol mijoz arxivga köçirildi, hisobot qayta hisoblandi.</p>
    <div class="fx-msgactions" role="toolbar" aria-label="Javob amallari" data-fx-msgactions data-reveal="hover" data-index="2" data-total="3">
      <button type="button" class="fx-msgactions__btn" data-action="copy" aria-label="Nusxalaş"><svg data-fx-icon="copy" viewBox="0 0 24 24" aria-hidden="true"><rect x="9" y="9" width="11" height="11" rx="2"/><path d="M5 15V6a2 2 0 0 1 2-2h9"/></svg><svg data-fx-icon="check" viewBox="0 0 24 24" aria-hidden="true"><path d="M5 12l5 5 9-10"/></svg></button><button type="button" class="fx-msgactions__btn" data-action="retry" aria-label="Qayta yaratiş"><svg data-fx-icon="retry" viewBox="0 0 24 24" aria-hidden="true"><path d="M20 12a8 8 0 1 1-2.3-5.7M20 4v5h-5"/></svg></button><button type="button" class="fx-msgactions__btn" data-action="like" aria-pressed="false" aria-label="Yoqdi"><svg data-fx-icon="up" viewBox="0 0 24 24" aria-hidden="true"><path d="M7 11v9H4v-9h3zM7 11l4-7c1.5 0 2.5 1 2.5 2.5V9H19a2 2 0 0 1 2 2.3l-1 6A2 2 0 0 1 18 19H7"/></svg></button><button type="button" class="fx-msgactions__btn" data-action="dislike" aria-pressed="false" aria-label="Yoqmadi"><svg data-fx-icon="down" viewBox="0 0 24 24" aria-hidden="true"><g transform="rotate(180 12 12)"><path d="M7 11v9H4v-9h3zM7 11l4-7c1.5 0 2.5 1 2.5 2.5V9H19a2 2 0 0 1 2 2.3l-1 6A2 2 0 0 1 18 19H7"/></g></svg></button><button type="button" class="fx-msgactions__btn" data-action="edit" aria-label="Tahrirlaş"><svg data-fx-icon="edit" viewBox="0 0 24 24" aria-hidden="true"><path d="M4 20h4L19 9l-4-4L4 16v4zM13.5 6.5l4 4"/></svg></button><span class="fx-msgactions__sep" aria-hidden="true"></span><button type="button" class="fx-msgactions__btn" data-action="prev" aria-label="Oldingi variant"><svg data-fx-icon="left" viewBox="0 0 24 24" aria-hidden="true"><path d="M15 6l-6 6 6 6"/></svg></button><span class="fx-msgactions__branch" aria-live="polite">2/3</span><button type="button" class="fx-msgactions__btn" data-action="next" aria-label="Keyingi variant"><svg data-fx-icon="chev" viewBox="0 0 24 24" aria-hidden="true"><path d="M9 6l6 6-6 6"/></svg></button>
      <span class="fx-msgactions__status" role="status"></span>
    </div>
  </div>
</div>
```

- Qilmang: Ikon-tugmaga aria-label bermay qoldirmang.
- Qilmang: Yoqdi/yoqmadi holatini faqat rangga tayantirmang — aria-pressed va töldirilgan ikon bor.
- Qilmang: Sensorli ekranda panelni yaşirmang — u yerda doim körinadi (şunday qilingan).

## Köp tanlov (`multiselect`, beta, 0.23.0 dan)

Bir neçta variant tanlanadigan maydon: tanlanganlar maydonda chip, ostida belgili (checkbox şaklli) röyxat. Yozib qidiradi, Enter/Space belgilaydi, Backspace oxirgi chipni olib taşlaydi; «+n» (data-visible), «3 ta tanlandi» (data-mode="count"), eng köpi (data-max), «Hammasini tanlaş», forma uçun yaşirin maydonlar (data-name) (#28).

- Qaçon: 5+ variantdan bir neçtasini tanlaş (filtr, teg, huquqlar).
- Qaçon emas: Bitta variant tanlanadi → `combobox`; 2–4 ta variant → `check`
- Variantlar: data-mode=chips|count (standart chips)
- Klaviatura: ↓ ↑ — Röyxatni oçadi, faol variantni siljitadi; Enter — Faol variantni belgilaydi/olib taşlaydi; Space — Maydon böş bölsa — faol variantni belgilaydi; Backspace — Maydon böş bölsa — oxirgi chipni olib taşlaydi; Esc — Röyxatni yopadi
- Tokenlar: --fx-bg-brand-solid, --fx-bg-brand-subtle, --fx-bg-field, --fx-bg-surface, --fx-border-color-default, --fx-border-color-error, --fx-border-color-field, --fx-border-color-focus, --fx-border-color-strong, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-md, --fx-control-h-sm, --fx-ease-standard, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-motion-fast, --fx-popover-width, --fx-radius-badge, --fx-radius-control, --fx-radius-overlay, --fx-shadow-lg, --fx-size-icon-md, --fx-size-icon-sm, --fx-space-1, --fx-space-2, --fx-space-3, --fx-text-brand, --fx-text-disabled, --fx-text-primary, --fx-text-tertiary

```html
<div class="fx-field">
  <label class="fx-label" for="ms1">Şaharlar</label>
  <div class="fx-multiselect" data-fx-multiselect data-name="shahar" data-visible="2">
    <div class="fx-multiselect__field">
      <input class="fx-multiselect__input" id="ms1" role="combobox" aria-expanded="false" aria-controls="ms1-list" aria-autocomplete="list" autocomplete="off" placeholder="Şahar tanlang">
      <svg class="fx-multiselect__chev" viewBox="0 0 16 16" aria-hidden="true"><path d="M4 6l4 4 4-4" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
    </div>
    <div class="fx-multiselect__popup" hidden>
      <ul class="fx-listbox" role="listbox" id="ms1-list" aria-multiselectable="true" aria-label="Şaharlar">
        <li class="fx-option" role="option" id="ms1-o1" data-value="toshkent" aria-selected="true">Toşkent</li>
        <li class="fx-option" role="option" id="ms1-o2" data-value="samarqand" aria-selected="true">Samarqand</li>
        <li class="fx-option" role="option" id="ms1-o3" data-value="buxoro" aria-selected="true">Buxoro</li>
        <li class="fx-option" role="option" id="ms1-o4" data-value="namangan" aria-selected="false">Namangan</li>
        <li class="fx-option" role="option" id="ms1-o5" data-value="qarshi" aria-selected="false">Qarşi</li>
        <li class="fx-listbox__empty" hidden>Heç narsa topilmadi</li>
      </ul>
      <div class="fx-multiselect__foot"><span class="fx-multiselect__status" aria-live="polite"></span><button class="fx-multiselect__all" type="button">Hammasini tanlaş</button></div>
    </div>
  </div>
  <span class="fx-hint">Bir neçtasini tanlaş mumkin</span>
</div>
```

- Qilmang: 2–3 tagaça variant bölsa köp tanlov örniga checkbox guruhini qöying.
- Qilmang: Tanlovni faqat rang bilan körsatmang — röyxatda belgi (✓ katak), maydonda chip.
- Qilmang: Eng köp sonni (data-max) yaşirmang — ostida yozib qöying.

## Yon menyu (`nav`, beta, 0.1.0 dan)

Yon menyu (S1): band 40, ikonka + nom (bitta qator «…»), son — xira pill, tanlangan — brend tusi; guruh sarlavhasi, içki bandlar uzuq yöl çiziğida, pastki bandlar tagda. Yiğilgan holat (data-collapsed) — ikonkalar ustuni, karkas xulqi bilan. Kengaytma: data-pinned (sevimlilar guruhi), .fx-nav__new (“Yangi” belgisi) / [data-new] nuqta, .fx-nav__search.

- Qaçon: Ilova yon menyusi: bölimlar orasida ötiş.
- Qaçon emas: Bir sahifa içidagi körinişlar → `tabs`
- Variantlar: data-collapsed=off|on (standart off); data-pinned=true
- Klaviatura: Tab, Enter — Bandga ötadi; Enter, Space — Guruh tugmasida — içki bandlarni oçadi/yopadi
- Tokenlar: --fx-bg-brand-solid, --fx-bg-brand-subtle, --fx-bg-muted, --fx-bg-pressed, --fx-bg-surface, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-ease-standard, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-knob-pill, --fx-motion-base, --fx-motion-fast, --fx-nav-item-height, --fx-nav-subitem-height, --fx-nav-width, --fx-nav-width-collapsed, --fx-radius-badge, --fx-radius-circle, --fx-radius-nav, --fx-radius-pill, --fx-size-icon-md, --fx-size-icon-sm, --fx-size-status-dot-sm, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-text-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<nav class="fx-nav" aria-label="Asosiy" data-fx-nav>
  <div class="fx-nav__group">
    <a class="fx-nav__item" href="#" ><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M3 9.5 10 4l7 5.5V16a1 1 0 0 1-1 1h-3.5v-4.5h-5V17H4a1 1 0 0 1-1-1z" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg><span class="fx-nav__label">Boş sahifa</span></a>
    <a class="fx-nav__item" href="#"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M3 11h4l1 2h4l1-2h4M4 5h12l1 6v5H3v-5z" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg><span class="fx-nav__label">Arizalar</span><span class="fx-nav__count">12</span></a>
  </div>
  <div class="fx-nav__group">
    <div class="fx-nav__title">Mijozlar</div>
    <a class="fx-nav__item" href="#"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M7 9a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM2 17c0-3 2.2-5 5-5s5 2 5 5M13 4a3 3 0 0 1 0 6M15 12c1.8.5 3 2.3 3 5" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg><span class="fx-nav__label">Hammasi</span></a>
    <div class="fx-nav__subs">
      <a class="fx-nav__item" href="#"><span class="fx-nav__label">Obunaçilar</span></a>
      <a class="fx-nav__item" href="#"><span class="fx-nav__label">Juda uzun nomli bölim nomi şu yerda kesiladi</span></a>
    </div>
  </div>
  <div class="fx-nav__group">
    <div class="fx-nav__title">Hisob</div>
    <button class="fx-nav__item fx-nav__toggle" type="button" aria-expanded="true"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M5 9h10v8H5zM7 9V6a3 3 0 0 1 6 0v3" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg><span class="fx-nav__label">Kiriş boşqaruvi</span><svg class="fx-nav__chev" viewBox="0 0 256 256" aria-hidden="true"><path fill="currentColor" d="M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80A8,8,0,0,1,53.66,90.34L128,164.69l74.34-74.35a8,8,0,0,1,11.32,11.32Z"/></svg></button>
    <div class="fx-nav__subs">
      <a class="fx-nav__item" href="#"><span class="fx-nav__label">Autentifikatsiya</span></a>
      <a class="fx-nav__item" href="#" aria-current="page"><span class="fx-nav__label">Ulangan ilovalar</span></a>
      <a class="fx-nav__item" href="#"><span class="fx-nav__label">Faol seanslar</span></a>
    </div>
  </div>
  <div class="fx-nav__foot"><a class="fx-nav__item" href="#"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M10 12.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5zM10 2v2M10 16v2M2 10h2M16 10h2M4.3 4.3l1.4 1.4M14.3 14.3l1.4 1.4M4.3 15.7l1.4-1.4M14.3 5.7l1.4-1.4" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg><span class="fx-nav__label">Sozlamalar</span></a></div>
</nav>
<nav class="fx-nav" aria-label="Asosiy"><div class="fx-nav__group" data-pinned><p class="fx-nav__title">Sevimlilar</p><a class="fx-nav__item" href="#"><span class="fx-nav__label">Hisobotlar</span><span class="fx-nav__new">Yangi</span></a></div></nav>
```

- Qilmang: Tanlangan bandga çap rangli çiziq yoki qora pill qöymang — brend tusi.
- Qilmang: Uzun nomni ikki qatorga tuşirmang va şriftni kiçraytirmang — «…» va title.

## Bildirişnoma sozlamalari (`notifprefs`, beta, 0.28.0 dan)

Bildirişnoma sozlamalari matritsasi (naqş): qatorlar — hodisalar (Savdo, Vazifalar, Xavfsizlik guruhlari), ustunlar — kanallar (Email, Telegram, Ilova). Ustun sarlavhasida va qator oxirida «hammasi» (qisman — «–»). Ulanmagan kanal öçiq va «Ulaş» havolasi bilan; xavfsizlik xati — «majburiy».

- Qaçon: Profil yoki jamoa sozlamalarida: qaysi hodisa haqida qaysi kanal orqali xabar oliş. Bir neçta kanal (email, Telegram, ilova, SMS) va 5+ hodisa bölganda.
- Qaçon emas: Bitta yoqiş/öçiriş sozlamasi → `check`; Ruxsatlar guruhi (köp tanlov röyxati) → `checklist`
- Klaviatura: Tab / Shift+Tab — Checkbox'lar böylab; Space — Belgilaş; «hammasi» — butun ustun/qatorni almaştiradi
- Tokenlar: --fx-bg-muted, --fx-bg-page, --fx-bg-subtle, --fx-border-color-default, --fx-border-width-default, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-regular, --fx-font-weight-semibold, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-5, --fx-text-brand, --fx-text-disabled, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<form class="fx-table-scroll" aria-labelledby="np-t">
<h3 id="np-t" style="margin:0 0 var(--fx-space-3);font-size:var(--fx-font-size-md)">Qaysi xabarlarni qayerga olasiz</h3>
<table class="fx-notifprefs" data-fx-notifprefs>
  <thead><tr><th scope="col">Hodisa</th><th scope="col"><span class="fx-notifprefs__channel"><label class="fx-check"><input type="checkbox" data-col-all="email" aria-label="Email: hammasi"><span class="fx-check__box"></span></label>Email</span></th><th scope="col"><span class="fx-notifprefs__channel"><label class="fx-check"><input type="checkbox" data-col-all="telegram" aria-label="Telegram: hammasi"><span class="fx-check__box"></span></label>Telegram</span></th><th scope="col" data-off><span class="fx-notifprefs__channel"><label class="fx-check"><input type="checkbox" data-col-all="app" disabled aria-label="Ilova: hammasi"><span class="fx-check__box"></span></label>Ilova<span class="fx-notifprefs__note">Ulanmagan · <a href="#">Ulaş</a></span></span></th><th scope="col" class="fx-notifprefs__all">Hammasi</th></tr></thead>
  <tbody>
    <tr class="fx-notifprefs__group"><th colspan="5" scope="colgroup">Savdo</th></tr>
    <tr><th scope="row"><span class="fx-notifprefs__event">Yangi ariza</span><span class="fx-notifprefs__desc">Saytdagi forma yoki Telegram botdan</span></th><td><label class="fx-check"><input type="checkbox" name="ariza.email" data-col="email" checked aria-label="Yangi ariza — Email"><span class="fx-check__box"></span></label></td><td><label class="fx-check"><input type="checkbox" name="ariza.telegram" data-col="telegram" checked aria-label="Yangi ariza — Telegram"><span class="fx-check__box"></span></label></td><td data-off><label class="fx-check"><input type="checkbox" name="ariza.app" data-col="app" disabled aria-label="Yangi ariza — Ilova"><span class="fx-check__box"></span></label></td><td class="fx-notifprefs__all"><label class="fx-check"><input type="checkbox" data-row-all aria-label="Yangi ariza: barça kanallar"><span class="fx-check__box"></span></label></td></tr>
    <tr><th scope="row"><span class="fx-notifprefs__event">Tölov tuşdi</span><span class="fx-notifprefs__desc">Summasi va mijoz bilan</span></th><td><label class="fx-check"><input type="checkbox" name="tolov.email" data-col="email" aria-label="Tölov tuşdi — Email"><span class="fx-check__box"></span></label></td><td><label class="fx-check"><input type="checkbox" name="tolov.telegram" data-col="telegram" checked aria-label="Tölov tuşdi — Telegram"><span class="fx-check__box"></span></label></td><td data-off><label class="fx-check"><input type="checkbox" name="tolov.app" data-col="app" disabled aria-label="Tölov tuşdi — Ilova"><span class="fx-check__box"></span></label></td><td class="fx-notifprefs__all"><label class="fx-check"><input type="checkbox" data-row-all aria-label="Tölov tuşdi: barça kanallar"><span class="fx-check__box"></span></label></td></tr>
    <tr><th scope="row"><span class="fx-notifprefs__event">Bitim bosqiçi özgardi</span><span class="fx-notifprefs__desc">Siz mas'ul bölgan bitimlar</span></th><td><label class="fx-check"><input type="checkbox" name="bosqich.email" data-col="email" aria-label="Bitim bosqiçi özgardi — Email"><span class="fx-check__box"></span></label></td><td><label class="fx-check"><input type="checkbox" name="bosqich.telegram" data-col="telegram" aria-label="Bitim bosqiçi özgardi — Telegram"><span class="fx-check__box"></span></label></td><td data-off><label class="fx-check"><input type="checkbox" name="bosqich.app" data-col="app" disabled aria-label="Bitim bosqiçi özgardi — Ilova"><span class="fx-check__box"></span></label></td><td class="fx-notifprefs__all"><label class="fx-check"><input type="checkbox" data-row-all aria-label="Bitim bosqiçi özgardi: barça kanallar"><span class="fx-check__box"></span></label></td></tr>
    <tr class="fx-notifprefs__group"><th colspan="5" scope="colgroup">Vazifalar</th></tr>
    <tr><th scope="row"><span class="fx-notifprefs__event">Vazifa muddati yaqin</span><span class="fx-notifprefs__desc">Muddatdan 1 soat oldin</span></th><td><label class="fx-check"><input type="checkbox" name="muddat.email" data-col="email" checked aria-label="Vazifa muddati yaqin — Email"><span class="fx-check__box"></span></label></td><td><label class="fx-check"><input type="checkbox" name="muddat.telegram" data-col="telegram" checked aria-label="Vazifa muddati yaqin — Telegram"><span class="fx-check__box"></span></label></td><td data-off><label class="fx-check"><input type="checkbox" name="muddat.app" data-col="app" disabled aria-label="Vazifa muddati yaqin — Ilova"><span class="fx-check__box"></span></label></td><td class="fx-notifprefs__all"><label class="fx-check"><input type="checkbox" data-row-all aria-label="Vazifa muddati yaqin: barça kanallar"><span class="fx-check__box"></span></label></td></tr>
    <tr><th scope="row"><span class="fx-notifprefs__event">Haftalik hisobot</span><span class="fx-notifprefs__desc">Har duşanba, 09:00</span></th><td><label class="fx-check"><input type="checkbox" name="hisobot.email" data-col="email" checked aria-label="Haftalik hisobot — Email"><span class="fx-check__box"></span></label></td><td><label class="fx-check"><input type="checkbox" name="hisobot.telegram" data-col="telegram" aria-label="Haftalik hisobot — Telegram"><span class="fx-check__box"></span></label></td><td data-off><label class="fx-check"><input type="checkbox" name="hisobot.app" data-col="app" disabled aria-label="Haftalik hisobot — Ilova"><span class="fx-check__box"></span></label></td><td class="fx-notifprefs__all"><label class="fx-check"><input type="checkbox" data-row-all aria-label="Haftalik hisobot: barça kanallar"><span class="fx-check__box"></span></label></td></tr>
    <tr class="fx-notifprefs__group"><th colspan="5" scope="colgroup">Xavfsizlik</th></tr>
    <tr><th scope="row"><span class="fx-notifprefs__event">Yangi qurilmadan kiriş</span><span class="fx-notifprefs__desc">Şahar va qurilma nomi bilan</span></th><td><label class="fx-check"><input type="checkbox" name="kirish.email" data-col="email" checked disabled aria-label="Yangi qurilmadan kiriş — Email"><span class="fx-check__box"></span></label><span class="fx-notifprefs__lock">majburiy</span></td><td><label class="fx-check"><input type="checkbox" name="kirish.telegram" data-col="telegram" checked aria-label="Yangi qurilmadan kiriş — Telegram"><span class="fx-check__box"></span></label></td><td data-off><label class="fx-check"><input type="checkbox" name="kirish.app" data-col="app" disabled aria-label="Yangi qurilmadan kiriş — Ilova"><span class="fx-check__box"></span></label></td><td class="fx-notifprefs__all"><label class="fx-check"><input type="checkbox" data-row-all aria-label="Yangi qurilmadan kiriş: barça kanallar"><span class="fx-check__box"></span></label></td></tr>
  </tbody>
</table>
</form>
```

- Qilmang: Har katakka alohida switch qöymang — matritsada checkbox ixçamroq va «hammasi» bilan yaxşi işlaydi.
- Qilmang: Ulanmagan kanalni yaşirmang — öçiq holda «Ulaş» havolasi bilan körsating, foydalanuvçi imkoniyatni bilsin.
- Qilmang: Majburiy xabarni belgisiz öçiq qilib qöymang — «majburiy» sözi sababini aytadi.

## Bildirişnomalar markazi (`notify`, beta, 0.23.0 dan)

Qönğiroq tugmasi (öqilmaganlar soni bilan) bosilsa panel oçiladi: «Hammasi / Eslatmalar» tablari, «hammasini öqilgan deb belgilaş», kun böyiça guruhlangan kiruvçilar (fx-inbox). Son va tugma yorliği özi yangilanadi.

- Qaçon: Ilova tepa panelida umumiy bildirişnomalar markazi (eslatmalar, topşiriq yangiliklari).
- Qaçon emas: Töliq sahifali kiruvçilar röyxati → `inbox`; Vaqtinçalik xabar (saqlandi, xato) → `toast`
- Klaviatura: Enter, Space — Tugma: panelni oçadi; ← → — Tablar orasida; Tab — Qator havolalari va amallariga; Esc — Panelni yopadi
- Tokenlar: --fx-bg-surface, --fx-border-color-default, --fx-border-color-surface, --fx-border-width-default, --fx-dialog-width, --fx-ease-enter, --fx-ease-exit, --fx-font-size-md, --fx-font-size-sm, --fx-font-weight-semibold, --fx-motion-base, --fx-motion-exit-fast, --fx-motion-scale-enter, --fx-motion-shift-sm, --fx-popover-width, --fx-radius-overlay, --fx-shadow-lg, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-8, --fx-text-primary

```html
<div class="fx-notify" data-fx-notify>
  <button class="fx-btn fx-notify__trigger" data-variant="ghost" data-shape="icon" popovertarget="nt" aria-label="Bildirişnomalar, 2 ta yangi" data-label="Bildirişnomalar"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M5 8a5 5 0 0 1 10 0c0 4 1.5 5.5 1.5 5.5h-13S5 12 5 8ZM8.5 16.5a1.6 1.6 0 0 0 3 0" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg><span class="fx-count">2</span></button>
  <div class="fx-notify__panel" id="nt" popover aria-label="Bildirişnomalar">
    <div class="fx-notify__head"><h2 class="fx-notify__title">Bildirişnomalar</h2><button class="fx-btn" data-variant="link" data-size="sm" data-notify="read-all">Hammasini öqilgan deb belgilaş</button></div>
    <div class="fx-tabs fx-notify__tabs" role="tablist" aria-label="Filtr" data-fx-tabs>
      <button class="fx-tabs__tab" role="tab" id="nt-t1" aria-selected="true" data-filter="all">Hammasi</button>
      <button class="fx-tabs__tab" role="tab" id="nt-t2" aria-selected="false" data-filter="mention">Eslatmalar</button>
    </div>
    <div class="fx-notify__body" role="tabpanel" aria-labelledby="nt-t1" tabindex="0">
<div class="fx-inbox" data-fx-inbox>
  <section class="fx-inbox__group" aria-labelledby="ib-d1"><h3 class="fx-inbox__day" id="ib-d1">Bugun</h3>
    <ul class="fx-inbox__list">
      <li class="fx-inbox__item" data-unread data-kind="mention">
        <span class="fx-inbox__dot"><span class="fx-sr-only">Yangi</span></span>
        <span class="fx-avatar" data-size="sm" data-color="purple" role="img" aria-label="Aziz">AZ</span>
        <a class="fx-inbox__body" href="#"><span class="fx-inbox__text"><strong>Aziz</strong> sizni «Tarif narxlari» vazifasida eslatdi</span><span class="fx-inbox__sub">Savdo · 12 daqiqa oldin</span></a>
        <div class="fx-inbox__aside"><time class="fx-inbox__time">12 daq</time><div class="fx-inbox__actions">
          <button class="fx-btn" data-variant="ghost" data-size="sm" data-shape="icon" data-inbox="read" aria-label="Öqilgan deb belgilaş" aria-pressed="false" title="Öqildi (U)"><svg viewBox="0 0 16 16" aria-hidden="true"><path d="M3 8.5 6.5 12 13 4.5" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
          <button class="fx-btn" data-variant="ghost" data-size="sm" data-shape="icon" data-inbox="snooze" aria-label="Keyinga qoldiriş" title="Keyinga (H)"><svg viewBox="0 0 16 16" aria-hidden="true"><path d="M8 3.5V8l3 2M8 14a6 6 0 1 0 0-12 6 6 0 0 0 0 12Z" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
          <button class="fx-btn" data-variant="ghost" data-size="sm" data-shape="icon" data-inbox="archive" aria-label="Arxivlaş" title="Arxiv (E)"><svg viewBox="0 0 16 16" aria-hidden="true"><path d="M2.5 4.5h11v2h-11zM3.5 6.5v6h9v-6M6.5 9h3" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
        </div></div>
      </li>
      <li class="fx-inbox__item" data-unread data-kind="all">
        <span class="fx-inbox__dot"><span class="fx-sr-only">Yangi</span></span>
        <span class="fx-avatar" data-size="sm" data-color="green" role="img" aria-label="Madina">MA</span>
        <a class="fx-inbox__body" href="#"><span class="fx-inbox__text"><strong>Madina</strong> arizani «Qabul qilindi»ga ötkazdi</span><span class="fx-inbox__sub">Arizalar · #1042</span></a>
        <div class="fx-inbox__aside"><time class="fx-inbox__time">1 soat</time><div class="fx-inbox__actions">
          <button class="fx-btn" data-variant="ghost" data-size="sm" data-shape="icon" data-inbox="read" aria-label="Öqilgan deb belgilaş" aria-pressed="false" title="Öqildi (U)"><svg viewBox="0 0 16 16" aria-hidden="true"><path d="M3 8.5 6.5 12 13 4.5" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
          <button class="fx-btn" data-variant="ghost" data-size="sm" data-shape="icon" data-inbox="snooze" aria-label="Keyinga qoldiriş" title="Keyinga (H)"><svg viewBox="0 0 16 16" aria-hidden="true"><path d="M8 3.5V8l3 2M8 14a6 6 0 1 0 0-12 6 6 0 0 0 0 12Z" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
          <button class="fx-btn" data-variant="ghost" data-size="sm" data-shape="icon" data-inbox="archive" aria-label="Arxivlaş" title="Arxiv (E)"><svg viewBox="0 0 16 16" aria-hidden="true"><path d="M2.5 4.5h11v2h-11zM3.5 6.5v6h9v-6M6.5 9h3" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
        </div></div>
      </li>
    </ul></section>
  <section class="fx-inbox__group" aria-labelledby="ib-d2"><h3 class="fx-inbox__day" id="ib-d2">Keça</h3>
    <ul class="fx-inbox__list">
      <li class="fx-inbox__item" data-kind="all">
        <span class="fx-inbox__dot"></span>
        <span class="fx-avatar" data-size="sm" data-color="coral" role="img" aria-label="Bobur">BO</span>
        <a class="fx-inbox__body" href="#"><span class="fx-inbox__text"><strong>Bobur</strong> tölov hisobini yubordi</span><span class="fx-inbox__sub">Moliya · hisob #318</span></a>
        <div class="fx-inbox__aside"><time class="fx-inbox__time">Keça</time><div class="fx-inbox__actions">
          <button class="fx-btn" data-variant="ghost" data-size="sm" data-shape="icon" data-inbox="read" aria-label="Öqilgan deb belgilaş" aria-pressed="false" title="Öqildi (U)"><svg viewBox="0 0 16 16" aria-hidden="true"><path d="M3 8.5 6.5 12 13 4.5" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
          <button class="fx-btn" data-variant="ghost" data-size="sm" data-shape="icon" data-inbox="snooze" aria-label="Keyinga qoldiriş" title="Keyinga (H)"><svg viewBox="0 0 16 16" aria-hidden="true"><path d="M8 3.5V8l3 2M8 14a6 6 0 1 0 0-12 6 6 0 0 0 0 12Z" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
          <button class="fx-btn" data-variant="ghost" data-size="sm" data-shape="icon" data-inbox="archive" aria-label="Arxivlaş" title="Arxiv (E)"><svg viewBox="0 0 16 16" aria-hidden="true"><path d="M2.5 4.5h11v2h-11zM3.5 6.5v6h9v-6M6.5 9h3" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
        </div></div>
      </li>
    </ul></section>
  <p class="fx-inbox__empty" hidden>Hammasi körib çiqildi — yangi narsa yöq.</p>
</div>
    </div>
  </div>
</div>
```

- Qilmang: Bildirişnomalarni toast bilan takrorlamang — toast faqat şu zahoti kerakli narsa uçun.
- Qilmang: Sonni tugma yorliğisiz qoldirmang — ekran öqigiç «N ta yangi»ni eşitişi kerak (xulq özi yozadi).

## «Hozir» paneli (`now`, beta, 0.55.0 dan)

Jonli holat plitkalari (2–4 ta): ikon + katta qiymat (soat, quyoş, harorat, kurs, bayram) + izoh + manba. Soat — data-fx-clock: har soniya yangilanadi, vaqt mintaqasi data-tz (IANA), JS'siz — server vaqti; qolgani serverdan. Manba eskirgan bölsa (data-stale) — manba qatori ogohlantiriş rangida, sana bilan. Tor joyda 2×2, toq oxirgisi butun qator. Manbaa'dan (⑤, Fox MB topşirdi, 20.10).

- Qaçon: Şahar, mamlakat yoki ofis sahifasi sarlavhasi ostida: mahalliy vaqt, quyoş, ob-havo, kurs, yaqin bayram. Dashboard'da tizim holati (jonli soat, oxirgi sinxron).
- Qaçon emas: Biznes körsatkiçi va uning özgarişi → `stat`; Bitta raqam katta → `count`
- Variantlar: data-stale=true
- Tokenlar: --fx-bg-subtle, --fx-bg-surface, --fx-border-color-surface, --fx-border-width-default, --fx-fg-warning, --fx-font-adjust-numeric, --fx-font-family-numeric, --fx-font-size-lg, --fx-font-size-sm, --fx-font-size-xl, --fx-font-size-xs, --fx-font-weight-semibold, --fx-radius-surface, --fx-size-icon-md, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-text-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<div class="fx-now" style="inline-size:100%">
  <div class="fx-now__tile"><span class="fx-now__icon"><svg viewBox="0 0 256 256" fill="currentColor" aria-hidden="true"><path d="M136,80v43.47l36.12,21.67a8,8,0,0,1-8.24,13.72l-40-24A8,8,0,0,1,120,128V80a8,8,0,0,1,16,0Zm-8-48A95.44,95.44,0,0,0,60.08,60.15C52.81,67.51,46.35,74.59,40,82V64a8,8,0,0,0-16,0v40a8,8,0,0,0,8,8H72a8,8,0,0,0,0-16H49c7.15-8.42,14.27-16.35,22.39-24.57a80,80,0,1,1,1.66,114.75,8,8,0,1,0-11,11.64A96,96,0,1,0,128,32Z"/></svg></span><span class="fx-now__body"><time class="fx-now__value" data-fx-clock data-tz="Europe/Paris">22:39:59</time><span class="fx-now__label">Toşkentdan 3 soat orqada · UTC+2</span></span></div>
  <div class="fx-now__tile"><span class="fx-now__icon"><svg viewBox="0 0 256 256" fill="currentColor" aria-hidden="true"><path d="M120,40V16a8,8,0,0,1,16,0V40a8,8,0,0,1-16,0Zm72,88a64,64,0,1,1-64-64A64.07,64.07,0,0,1,192,128Zm-16,0a48,48,0,1,0-48,48A48.05,48.05,0,0,0,176,128ZM58.34,69.66A8,8,0,0,0,69.66,58.34l-16-16A8,8,0,0,0,42.34,53.66Zm0,116.68-16,16a8,8,0,0,0,11.32,11.32l16-16a8,8,0,0,0-11.32-11.32ZM192,72a8,8,0,0,0,5.66-2.34l16-16a8,8,0,0,0-11.32-11.32l-16,16A8,8,0,0,0,192,72Zm5.66,114.34a8,8,0,0,0-11.32,11.32l16,16a8,8,0,0,0,11.32-11.32ZM48,128a8,8,0,0,0-8-8H16a8,8,0,0,0,0,16H40A8,8,0,0,0,48,128Zm80,80a8,8,0,0,0-8,8v24a8,8,0,0,0,16,0V216A8,8,0,0,0,128,208Zm112-88H216a8,8,0,0,0,0,16h24a8,8,0,0,0,0-16Z"/></svg></span><span class="fx-now__body"><b class="fx-now__value">08:17 — 18:55</b><span class="fx-now__label">Quyoş (Parij) · kun 10 soat 38 daqiqa</span></span></div>
  <div class="fx-now__tile" data-stale><span class="fx-now__icon"><svg viewBox="0 0 256 256" fill="currentColor" aria-hidden="true"><path d="M128,24h0A104,104,0,1,0,232,128,104.12,104.12,0,0,0,128,24Zm88,104a87.61,87.61,0,0,1-3.33,24H174.16a157.44,157.44,0,0,0,0-48h38.51A87.61,87.61,0,0,1,216,128ZM102,168H154a115.11,115.11,0,0,1-26,45A115.27,115.27,0,0,1,102,168Zm-3.9-16a140.84,140.84,0,0,1,0-48h59.88a140.84,140.84,0,0,1,0,48ZM40,128a87.61,87.61,0,0,1,3.33-24H81.84a157.44,157.44,0,0,0,0,48H43.33A87.61,87.61,0,0,1,40,128ZM154,88H102a115.11,115.11,0,0,1,26-45A115.27,115.27,0,0,1,154,88Zm52.33,0H170.71a135.28,135.28,0,0,0-22.3-45.6A88.29,88.29,0,0,1,206.37,88ZM107.59,42.4A135.28,135.28,0,0,0,85.29,88H49.63A88.29,88.29,0,0,1,107.59,42.4ZM49.63,168H85.29a135.28,135.28,0,0,0,22.3,45.6A88.29,88.29,0,0,1,49.63,168Zm98.78,45.6a135.28,135.28,0,0,0,22.3-45.6h35.66A88.29,88.29,0,0,1,148.41,213.6Z"/></svg></span><span class="fx-now__body"><b class="fx-now__value">+16 °C</b><span class="fx-now__label">Parijda · şamol 3,5 m/s · namlik 56 %</span><span class="fx-now__source">MET Norway · 8 kun oldin</span></span></div>
  <div class="fx-now__tile"><span class="fx-now__icon"><svg viewBox="0 0 256 256" fill="currentColor" aria-hidden="true"><path d="M197.58,129.06,146,110l-19-51.62a15.92,15.92,0,0,0-29.88,0L78,110l-51.62,19a15.92,15.92,0,0,0,0,29.88L78,178l19,51.62a15.92,15.92,0,0,0,29.88,0L146,178l51.62-19a15.92,15.92,0,0,0,0-29.88ZM137,164.22a8,8,0,0,0-4.74,4.74L112,223.85,91.78,169A8,8,0,0,0,87,164.22L32.15,144,87,123.78A8,8,0,0,0,91.78,119L112,64.15,132.22,119a8,8,0,0,0,4.74,4.74L191.85,144ZM144,40a8,8,0,0,1,8-8h16V16a8,8,0,0,1,16,0V32h16a8,8,0,0,1,0,16H184V64a8,8,0,0,1-16,0V48H152A8,8,0,0,1,144,40ZM248,88a8,8,0,0,1-8,8h-8v8a8,8,0,0,1-16,0V96h-8a8,8,0,0,1,0-16h8V72a8,8,0,0,1,16,0v8h8A8,8,0,0,1,248,88Z"/></svg></span><span class="fx-now__body"><b class="fx-now__value">1-noyabr</b><span class="fx-now__label">Barça avliyolar kuni</span><span class="fx-now__source">Keyin: 11-noyabr — Yaraş kuni</span></span></div>
</div>
```

- Qilmang: Ma'lumot yöq plitkani «—» bilan körsatmang — umuman çiqarmang.
- Qilmang: Eskirgan ma'lumotni sanasiz bermang — manba va «8 kun oldin» yozing.
- Qilmang: Törttadan köp plitka qöymang — panel tezkor nazar uçun.

## Son maydoni (`number`, beta, 0.14.0 dan)

Butun yoki önli son: − / + tugmalari (çegarada öçadi) va qölda yoziş. Native input type="number", min/max/step brauzerda; tugmalar foxui.js'da. Kengaytma: data-size=sm|lg, .fx-number__affix (valyuta/foiz/birlik), data-align=end. Formatlaş (4.96): data-format="number|percent|compact" — yozilayotganda minglik ajratgiç (1 200 000), kasr vergul bilan, foiz va qisqa köriniş («1,2 mln»); formaga xom son yaşirin inputda ketadi. Sudrab qiymat va ğildirak (4.97): data-scrub — .fx-number__scrub yorliğini çapga-öngga sudraş qiymatni özgartiradi (data-scrub="4" — bir qadam neça pikselda; Shift ×10, Alt ×0,1), data-wheel — maydon fokusda bölganda siçqonça ğildiragi (fokussiz sahifa odatdagidek aylanadi). Maket, rasm va grafik muharrirlari uçun.

- Qaçon: Kiçik butun son: miqdor, soni, kun.
- Qaçon emas: Taxminiy diapazon → `slider`; Raqamli identifikator → `input`
- Variantlar: data-size=sm|lg; data-format=number|percent|compact; data-width=full; data-scrub=; data-wheel=
- Klaviatura: ↑ ↓ — Bir qadam oşiradi/kamaytiradi; PgUp / PgDn — 10 qadam (formatli maydonda); Home / End — Eng kam / eng köp qiymat (formatli maydonda, çegara berilsa); Gʻildirak (fokusda) — data-wheel: bir qadam (Shift — 10)
- Tokenlar: --fx-bg-field, --fx-bg-muted, --fx-bg-pressed, --fx-border-color-field, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-lg, --fx-control-h-md, --fx-control-h-sm, --fx-ease-standard, --fx-font-size-lg, --fx-font-size-md, --fx-font-size-sm, --fx-font-weight-medium, --fx-knob-pill, --fx-motion-fast, --fx-radius-control, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-text-disabled, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<label class="fx-field">
  <span class="fx-label">Qurilmalar soni</span>
  <span class="fx-number" data-fx-number>
    <button class="fx-number__step" type="button" data-step="-1" aria-label="Kamaytiriş">−</button>
    <input class="fx-number__input" type="number" min="1" max="3" value="1" inputmode="numeric">
    <button class="fx-number__step" type="button" data-step="1" aria-label="Köpaytiriş">+</button>
  </span>
</label>
<span class="fx-number" data-fx-number data-size="sm"><button type="button" class="fx-number__step" data-step="-1" aria-label="Kamaytiriş">−</button><span class="fx-number__affix">söm</span><input class="fx-number__input" type="number" value="50" min="0" aria-label="Narx"><button type="button" class="fx-number__step" data-step="1" aria-label="Köpaytiriş">+</button></span>
<label class="fx-field" for="nf1"><span class="fx-label">Bitim summasi</span>
<span class="fx-number" data-fx-number data-format="number" data-width="full"><button class="fx-number__step" type="button" data-step="-1" aria-label="Kamaytiriş">−</button><input class="fx-number__input" id="nf1" name="summa" value="12500000" data-min="0" data-step="500000"><span class="fx-number__affix">söm</span><button class="fx-number__step" type="button" data-step="1" aria-label="Köpaytiriş">+</button></span></label>
<label class="fx-field" for="nf2"><span class="fx-label">Çegirma</span>
<span class="fx-number" data-fx-number data-format="percent" data-decimals="1"><input class="fx-number__input" id="nf2" name="chegirma" value="12,5" data-min="0" data-max="100" data-step="0.5"><span class="fx-number__affix">%</span></span></label>
<label class="fx-field" for="nf3"><span class="fx-label">Yillik tuşum rejasi</span>
<span class="fx-number" data-fx-number data-format="compact"><input class="fx-number__input" id="nf3" name="reja" value="1850000000" data-min="0" data-step="10000000"><span class="fx-number__affix">söm</span></span></label>
<!-- Sudrab qiymat va gʻildirak (4.97) — rasm muharriri / maket paneli -->
<div class="fx-number-row" role="group" aria-label="Blok ölçami">
<span class="fx-number" data-fx-number data-scrub data-wheel data-size="sm"><span class="fx-number__scrub" title="Çapga-öngga sudrang">E</span><input class="fx-number__input" type="number" min="0" max="1920" step="1" value="320" aria-label="Eni, px"></span>
<span class="fx-number" data-fx-number data-scrub data-wheel data-size="sm"><span class="fx-number__scrub" title="Çapga-öngga sudrang">B</span><input class="fx-number__input" type="number" min="0" max="1080" step="1" value="180" aria-label="Böyi, px"></span>
<span class="fx-number" data-fx-number data-scrub="2" data-wheel data-size="sm"><span class="fx-number__scrub" title="Çapga-öngga sudrang">↻</span><input class="fx-number__input" type="number" min="-180" max="180" step="1" value="0" aria-label="Buriş, gradus"></span>
</div>
<label class="fx-field" for="nf-sc"><span class="fx-label">Çegirma summasi</span>
<span class="fx-number" data-fx-number data-format="number" data-scrub data-wheel><span class="fx-number__scrub">Sudrang</span><input class="fx-number__input" id="nf-sc" name="chegirma_summa" value="150000" data-min="0" data-max="5000000" data-step="10000"><span class="fx-number__affix">söm</span></span></label>
```

- Qilmang: Telefon, karta, PINFL uçun type="number" qilmang — matn maydoni + inputmode="numeric".
- Qilmang: Katta summani formatsiz («12500000») körsatmang — data-format="number" guruhlab yozadi.
- Qilmang: Sudrab qiymatni yagona yöl qilmang — maydonga yoziş va ↑ ↓ doim işlaydi (sudraş — tezlatgiç).
- Qilmang: Ğildirakni fokussiz maydonga ulamang — sahifani aylantirayotgan odam qiymatni bilmasdan özgartiradi.

## Ulaniş / oflayn banneri (`offline`, beta, 0.28.0 dan)

Internet uzilganini va qaytganini xotirjam bildiruvçi pastki tabletka (4.163, #74): «Internet yöq — özgarişlar qurilmada saqlanib turibdi» (+ «Qayta uriniş») va qaytganda qisqa «Internet qayta ulandi» (3 soniyadan keyin yaşirinadi). foxui.js navigator.onLine va online/offline hodisalarini kuzatadi — sahifaga bir marta qöyiladi. Teskari rangli (snackbar), belgi + söz bilan; data-position: pastda (standart), tepada yoki hujjat ichida (inline).

- Qaçon: Forma, CRM yoki PWA — foydalanuvçi internetsiz ham işlayotgan bölişi mumkin bölgan har qanday ilova. Oflayn navbat (saqlanmagan özgarişlar) borligini bildiriş.
- Qaçon emas: Butun sahifa oçilmasa (oflayn sahifa) → `result`; Bir martalik amal natijasi → `toast`
- Variantlar: data-state=offline|online (standart offline); data-position=top|inline (standart bottom)
- Klaviatura: Enter, Space — «Qayta uriniş» — ulanişni qayta tekşiradi
- Tokenlar: --fx-bg-surface, --fx-border-width-default, --fx-color-pastel-green, --fx-color-pastel-yellow, --fx-ease-enter, --fx-font-size-sm, --fx-motion-base, --fx-motion-shift-md, --fx-radius-overlay, --fx-shadow-lg, --fx-size-icon-md, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-8, --fx-text-primary

```html
<div class="fx-offline" data-position="inline" data-state="offline" role="status">
  <span class="fx-offline__icon" data-for="offline" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><path d="M2 8.8a15 15 0 0 1 4.2-2.6M9.5 5.2A15 15 0 0 1 22 8.8M5 12.5a10 10 0 0 1 3.5-2M15 10.6a10 10 0 0 1 4 1.9M8.5 16a5 5 0 0 1 7 0M12 20h.01M3 3l18 18"/></svg></span>
  <span class="fx-offline__icon" data-for="online" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><path d="M2 8.8a15 15 0 0 1 20 0M5 12.5a10 10 0 0 1 14 0M8.5 16a5 5 0 0 1 7 0M12 20h.01"/></svg></span>
  <p class="fx-offline__text">Internet yöq — özgarişlar qurilmada saqlanib turibdi</p>
  <button class="fx-btn fx-offline__action" data-size="sm" type="button" data-offline="retry">Qayta uriniş</button>
</div>
<div class="fx-offline" data-position="inline" data-state="online" role="status" style="margin-block-start:var(--fx-space-3)">
  <span class="fx-offline__icon" data-for="online" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><path d="M2 8.8a15 15 0 0 1 20 0M5 12.5a10 10 0 0 1 14 0M8.5 16a5 5 0 0 1 7 0M12 20h.01"/></svg></span>
  <p class="fx-offline__text">Internet qayta ulandi</p>
</div>
<!-- Sahifada (bir marta, body oxirida): -->
<div class="fx-offline" data-fx-offline hidden>
  <span class="fx-offline__icon" data-for="offline" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><path d="M2 8.8a15 15 0 0 1 4.2-2.6M9.5 5.2A15 15 0 0 1 22 8.8M5 12.5a10 10 0 0 1 3.5-2M15 10.6a10 10 0 0 1 4 1.9M8.5 16a5 5 0 0 1 7 0M12 20h.01M3 3l18 18"/></svg></span>
  <span class="fx-offline__icon" data-for="online" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><path d="M2 8.8a15 15 0 0 1 20 0M5 12.5a10 10 0 0 1 14 0M8.5 16a5 5 0 0 1 7 0M12 20h.01"/></svg></span>
  <p class="fx-offline__text"></p>
  <button class="fx-btn fx-offline__action" data-size="sm" type="button" data-offline="retry">Qayta uriniş</button>
</div>
```

- Qilmang: Internet yöqligini modal oyna bilan bildirmang — işni töxtatmasin.
- Qilmang: «Xato» deb qörqitmang — nima saqlanib turganini ayting.
- Qilmang: Bir sahifaga ikkita oflayn banner qöymang.

## Onboarding oqimi (`onboarding`, beta, 0.28.0 dan)

Yangi foydalanuvçini kutib oliş oqimi (4.182): Xuş kelibsiz (vazifa tanlaş kartalari) → Profil → Jamoa taklifi → Tayyor. fx-wizard ustiga qurilgan naqş: çap ustunda brend, vertikal qadamlar (holati bilan) va yordam havolasi; öngda joriy qadam paneli va Orqaga / Davom etiş tugmalari. Qadam almaşganda panel yondan suriladi, yakunda ✓ belgisi prujina bilan çiqadi. Tekşiruv, fokus va qadam holatlari — wizard xulqi; telefonda bitta ustun. data-layout="page" — butun ekran (çegarasiz).

- Qaçon: Röyxatdan ötgandan keyin birinçi sozlaş (rol, profil, jamoa). Mahsulotni foydalanuvçiga moslaş uçun 3–5 savol.
- Qaçon emas: Uzoq muddatli «boşlaş» vazifalari → `checklist`; Interfeys böylab körsatmalar → `tour`; Oddiy köp qadamli forma → `wizard`
- Variantlar: data-layout=page (standart card)
- Klaviatura: ← → — Vazifa kartalari orasida; Enter — Keyingi qadam (oxirida — yuboriş); Tab — Maydonlar va tugmalar orasida
- Tokenlar: --fx-bg-brand-solid, --fx-bg-brand-subtle, --fx-bg-muted, --fx-bg-subtle, --fx-bg-success-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-strong, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-dialog-width, --fx-ease-bounce, --fx-ease-enter, --fx-ease-standard, --fx-fg-success, --fx-font-adjust-display, --fx-font-family-display, --fx-font-size-sm, --fx-font-size-xl, --fx-font-size-xs, --fx-font-weight-semibold, --fx-knob-motion, --fx-motion-fast, --fx-motion-instant, --fx-motion-press, --fx-motion-shift-lg, --fx-motion-slow, --fx-motion-slower, --fx-popover-width, --fx-radius-circle, --fx-radius-control, --fx-radius-overlay, --fx-radius-surface, --fx-shadow-lg, --fx-size-avatar-lg, --fx-size-control-sm, --fx-size-icon-lg, --fx-size-icon-md, --fx-space-1, --fx-space-10, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-space-6, --fx-space-8, --fx-text-brand, --fx-text-primary, --fx-text-secondary

```html
<form class="fx-wizard fx-onboarding" data-fx-wizard action="#" aria-label="Iş maydonini sozlaş">
  <aside class="fx-onboarding__aside">
    <div class="fx-bg" data-pattern="dots" data-fade="bottom" aria-hidden="true"></div>
    <p class="fx-onboarding__brand"><svg viewBox="0 0 24 24" aria-hidden="true"><rect x="3" y="3" width="18" height="18" rx="6" fill="currentColor"/></svg>Çorsu CRM</p>
    <ol class="fx-steps" data-orientation="vertical" aria-label="Sozlaş bosqiçlari">
      <li class="fx-steps__item" aria-current="step"><span class="fx-steps__text"><span class="fx-steps__label">Xuş kelibsiz</span><span class="fx-steps__desc">Siz kimsiz?</span></span></li>
      <li class="fx-steps__item"><span class="fx-steps__text"><span class="fx-steps__label">Profil</span><span class="fx-steps__desc">Ism va kompaniya</span></span></li>
      <li class="fx-steps__item"><span class="fx-steps__text"><span class="fx-steps__label">Jamoa</span><span class="fx-steps__desc">Hamkasblarni taklif qiling</span></span></li>
      <li class="fx-steps__item"><span class="fx-steps__text"><span class="fx-steps__label">Tayyor</span><span class="fx-steps__desc">Iş maydoniga ötiş</span></span></li>
    </ol>
    <p class="fx-onboarding__help">Yordam kerakmi? <a class="fx-link" href="#">Telegram orqali yozing</a></p>
  </aside>
  <div class="fx-onboarding__main">
    <section class="fx-wizard__panel">
      <p class="fx-onboarding__eyebrow">Xuş kelibsiz</p>
      <h2 class="fx-wizard__title">Siz qaysi vazifada işlaysiz?</h2>
      <p class="fx-wizard__text">Javobingizga qarab boş sahifani moslaymiz. Keyin sozlamalardan özgartiriş mumkin.</p>
      <fieldset class="fx-onboarding__options"><legend class="fx-sr-only">Vazifangiz</legend><label class="fx-onboarding__option"><input type="radio" name="ob-rol" value="dizayner" checked required><span class="fx-onboarding__option-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 20h9M16.5 3.5a2.1 2.1 0 0 1 3 3L7 19l-4 1 1-4z"/></svg></span><span class="fx-onboarding__option-title">Dizayner</span><span class="fx-onboarding__option-text">Mavzu va uslub bilan işlayman</span></label><label class="fx-onboarding__option"><input type="radio" name="ob-rol" value="dasturchi" required><span class="fx-onboarding__option-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M8 6l-6 6 6 6M16 6l6 6-6 6"/></svg></span><span class="fx-onboarding__option-title">Dasturçi</span><span class="fx-onboarding__option-text">Komponentlarni kodga ulayman</span></label><label class="fx-onboarding__option"><input type="radio" name="ob-rol" value="rahbar" required><span class="fx-onboarding__option-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 21h18M5 21V7l7-4 7 4v14M9 21v-6h6v6"/></svg></span><span class="fx-onboarding__option-title">Rahbar</span><span class="fx-onboarding__option-text">Jamoa va litsenziyalarni boşqaraman</span></label></fieldset>
    </section>
    <section class="fx-wizard__panel" hidden>
      <p class="fx-onboarding__eyebrow">Profil</p>
      <h2 class="fx-wizard__title">Özingiz haqingizda</h2>
      <div class="fx-field"><label class="fx-label" for="ob-ism" data-required>Ism</label><input class="fx-input" id="ob-ism" required autocomplete="name" placeholder="Dilnoza Qodirova"></div>
      <div class="fx-field"><label class="fx-label" for="ob-kom">Kompaniya</label><input class="fx-input" id="ob-kom" autocomplete="organization" placeholder="Çorsu Market"></div>
    </section>
    <section class="fx-wizard__panel" hidden>
      <p class="fx-onboarding__eyebrow">Jamoa</p>
      <h2 class="fx-wizard__title">Hamkasblaringizni taklif qiling</h2>
      <p class="fx-wizard__text">Har qatorga bitta email. Bu qadamni ötkazib yuborişingiz mumkin.</p>
      <div class="fx-field"><label class="fx-label" for="ob-email">Email manzillar</label><textarea class="fx-textarea" id="ob-email" placeholder="aziz@chorsu.uz&#10;madina@chorsu.uz"></textarea></div>
    </section>
    <section class="fx-wizard__panel" hidden>
      <span class="fx-onboarding__art" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12.5l4.5 4.5L19 7.5"/></svg></span>
      <h2 class="fx-wizard__title">Hammasi tayyor!</h2>
      <p class="fx-wizard__text">Iş maydoningiz sozlandi. Birinçi arizani qöşib köring — 2 daqiqa vaqt oladi.</p>
    </section>
    <div class="fx-wizard__footer">
      <button class="fx-btn" data-variant="ghost" type="button" data-wizard="prev">Orqaga</button>
      <span class="fx-wizard__status" data-wizard-status></span>
      <button class="fx-btn" data-variant="primary" type="button" data-wizard="next">Davom etiş</button>
      <button class="fx-btn" data-variant="primary" type="submit" data-wizard="submit">Iş maydoniga ötiş</button>
    </div>
  </div>
</form>
```

- Qilmang: Onboardingni 5 qadamdan uzun qilmang — qolganini checklist'ga qoldiring.
- Qilmang: Ixtiyoriy qadamni majburiy qilmang — «ötkazib yuboriş» mumkinligini ayting.
- Qilmang: Birinçi qadamda karta yoki tölov söramang.

## Şar (orb) (`orb`, beta, 0.26.0 dan)

AI yordamçining abstrakt «yuzi» — Siri şaridan ilhom: yuz, qöl, köz yöq, şuning uçun çizgi xatosi bölmaydi. Bitta rangdan (standart — brend, data-color — 6 toifa rangi, AI yordamçida — saytning brend rangi) töq yadro, uçta suzuvçi rang tölqini va şişasimon yaltiroq yasaladi. Holatlar: tinç (sekin nafas), öylayapti (tölqinlar tezlaşadi va içkariga buraladi), gapiryapti (urib turadi), menejerga ulaş (bir marta çaqnaydi). Içida Siri kabi ovoz tölqinlari — data-fx-orb bilan canvas lentalar (JS ~2 KB; JS bölmasa yoki harakat kamaytirilsa — gradient şar); AI yordamçida data-face="orb" bilan.

- Qaçon: AI yordamçi, ovozli yordamçi yoki «tirik» agentning belgisi — personaj çizilmagan joyda. Agent öylayotgani yoki javob berayotganini körsatiş.
- Qaçon emas: Odam yoki agentning harfli belgisi → `avatar`; Oddiy yuklaniş → `loading`
- Variantlar: data-color=coral|pink|blue|green|yellow|purple (standart brand); data-size=sm|lg|xl (standart md); data-state=thinking|talking|handoff (standart idle)
- Tokenlar: --fx-bg-brand-solid, --fx-bg-category-blue, --fx-bg-category-coral, --fx-bg-category-green, --fx-bg-category-pink, --fx-bg-category-purple, --fx-bg-category-yellow, --fx-bg-static-light, --fx-duration-pulse, --fx-duration-slower, --fx-ease-standard, --fx-motion-slow, --fx-radius-circle, --fx-size-avatar-lg, --fx-size-avatar-md, --fx-size-avatar-sm

```html
<span class="fx-orb" data-fx-orb data-size="xl" role="img" aria-label="Guli, tinç"><span class="fx-orb__wave"></span><span class="fx-orb__wave"></span><span class="fx-orb__wave"></span></span>
<span class="fx-orb" data-fx-orb data-size="xl" data-state="thinking" role="img" aria-label="Guli öylayapti"><span class="fx-orb__wave"></span><span class="fx-orb__wave"></span><span class="fx-orb__wave"></span></span>
<span class="fx-orb" data-fx-orb data-size="lg" data-color="coral" role="img" aria-label="Guli, koral rangda"><span class="fx-orb__wave"></span><span class="fx-orb__wave"></span><span class="fx-orb__wave"></span></span>
<span class="fx-orb" data-fx-orb role="img" aria-label="Guli"><span class="fx-orb__wave"></span><span class="fx-orb__wave"></span><span class="fx-orb__wave"></span></span>
<span class="fx-orb" data-fx-orb data-size="sm" role="img" aria-label="Guli"><span class="fx-orb__wave"></span><span class="fx-orb__wave"></span><span class="fx-orb__wave"></span></span>
```

- Qilmang: Şarni bezak uçun hamma joyga qöymang — u AI yordamçi yoki ovozli kiritiş belgisi.
- Qilmang: Holatni faqat harakat bilan bildirmang — aria-label yoki yonidagi matnda holat söz bilan bölsin.

## Orbita (`orbit`, beta, 0.29.0 dan)

Markaz (mahsulot logosi) atrofida bir yoki ikki halqada aylanuvçi ikonlar (4.78) — «qaysi xizmatlar bilan işlaydi» yoki modullar töplamini körsatiş uçun. Töliq CSS: halqa aylanadi, ikon teskari aylanib tik turadi, joyi avtomatik (halqada 8 tagaça). Çeksiz aylaniş faqat körinişda, hover yoki fokusda töxtaydi; harakat kamaytirilganda harakatsiz.

- Qaçon: Landing sahifasida integratsiyalar yoki modullar töplami. Mahsulot «ekotizimi» bölimi.
- Qaçon emas: Logolar qatori (mijozlar) → `logos`; Integratsiya oqimi (qayerdan qayerga) → `beam`
- Variantlar: data-ring=inner|outer (standart outer); data-speed=slow (standart normal); data-size=sm (standart md); data-color=blue|green|pink|yellow|purple (standart surface)
- Tokenlar: --fx-bg-category-blue, --fx-bg-category-green, --fx-bg-category-pink, --fx-bg-category-purple, --fx-bg-category-yellow, --fx-bg-surface, --fx-border-color-default, --fx-border-color-surface, --fx-border-width-default, --fx-control-h-lg, --fx-control-h-md, --fx-duration-pulse, --fx-font-size-sm, --fx-font-weight-semibold, --fx-radius-circle, --fx-shadow-md, --fx-shadow-sm, --fx-size-icon-md, --fx-space-12, --fx-text-on-category, --fx-text-primary

```html
<div class="fx-orbit" data-fx-orbit>
  <div class="fx-orbit__center">Savdo<br>CRM</div>
  <ul class="fx-orbit__ring" data-ring="outer" aria-label="Integratsiyalar">
    <li class="fx-orbit__item"><span class="fx-orbit__icon" data-color="blue" title="Telegram"><svg viewBox="0 0 256 256" aria-hidden="true"><path d="M228.88,26.19a9,9,0,0,0-9.16-1.57L17.06,103.93a14.22,14.22,0,0,0,2.43,27.21L72,141.45V200a15.92,15.92,0,0,0,10,14.83,15.91,15.91,0,0,0,17.51-3.73l25.32-26.26L165,220a15.88,15.88,0,0,0,10.51,4,16.3,16.3,0,0,0,5-.79,15.85,15.85,0,0,0,10.67-11.63L231.77,35A9,9,0,0,0,228.88,26.19Zm-61.14,36L78.15,126.35l-49.6-9.73ZM88,200V152.52l24.79,21.74Zm87.53,8L92.85,135.5l119-85.29Z"/></svg><span class="fx-sr-only">Telegram</span></span></li>
    <li class="fx-orbit__item"><span class="fx-orbit__icon" title="Email"><svg viewBox="0 0 256 256" aria-hidden="true"><path d="M224,48H32a8,8,0,0,0-8,8V192a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A8,8,0,0,0,224,48ZM203.43,64,128,133.15,52.57,64ZM216,192H40V74.19l82.59,75.71a8,8,0,0,0,10.82,0L216,74.19V192Z"/></svg><span class="fx-sr-only">Email</span></span></li>
    <li class="fx-orbit__item"><span class="fx-orbit__icon" data-color="green" title="IP-telefoniya"><svg viewBox="0 0 256 256" aria-hidden="true"><path d="M144.27,45.93a8,8,0,0,1,9.8-5.66,86.22,86.22,0,0,1,61.66,61.66,8,8,0,0,1-5.66,9.8A8.23,8.23,0,0,1,208,112a8,8,0,0,1-7.73-5.94,70.35,70.35,0,0,0-50.33-50.33A8,8,0,0,1,144.27,45.93Zm-2.33,41.8c13.79,3.68,22.65,12.54,26.33,26.33A8,8,0,0,0,176,120a8.23,8.23,0,0,0,2.07-.27,8,8,0,0,0,5.66-9.8c-5.12-19.16-18.5-32.54-37.66-37.66a8,8,0,1,0-4.13,15.46Zm81.94,95.35A56.26,56.26,0,0,1,168,232C88.6,232,24,167.4,24,88A56.26,56.26,0,0,1,72.92,32.12a16,16,0,0,1,16.62,9.52l21.12,47.15,0,.12A16,16,0,0,1,109.39,104c-.18.27-.37.52-.57.77L88,129.45c7.49,15.22,23.41,31,38.83,38.51l24.34-20.71a8.12,8.12,0,0,1,.75-.56,16,16,0,0,1,15.17-1.4l.13.06,47.11,21.11A16,16,0,0,1,223.88,183.08Zm-15.88-2s-.07,0-.11,0h0l-47-21.05-24.35,20.71a8.44,8.44,0,0,1-.74.56,16,16,0,0,1-15.75,1.14c-18.73-9.05-37.4-27.58-46.46-46.11a16,16,0,0,1,1-15.7,6.13,6.13,0,0,1,.57-.77L96,95.15l-21-47a.61.61,0,0,1,0-.12A40.2,40.2,0,0,0,40,88,128.14,128.14,0,0,0,168,216,40.21,40.21,0,0,0,208,181.07Z"/></svg><span class="fx-sr-only">IP-telefoniya</span></span></li>
    <li class="fx-orbit__item"><span class="fx-orbit__icon" data-color="yellow" title="Tölov tizimi"><svg viewBox="0 0 256 256" aria-hidden="true"><path d="M224,48H32A16,16,0,0,0,16,64V192a16,16,0,0,0,16,16H224a16,16,0,0,0,16-16V64A16,16,0,0,0,224,48Zm0,16V88H32V64Zm0,128H32V104H224v88Zm-16-24a8,8,0,0,1-8,8H168a8,8,0,0,1,0-16h32A8,8,0,0,1,208,168Zm-64,0a8,8,0,0,1-8,8H120a8,8,0,0,1,0-16h16A8,8,0,0,1,144,168Z"/></svg><span class="fx-sr-only">Tölov tizimi</span></span></li>
    <li class="fx-orbit__item"><span class="fx-orbit__icon" title="Dökon"><svg viewBox="0 0 256 256" aria-hidden="true"><path d="M232,96a7.89,7.89,0,0,0-.3-2.2L217.35,43.6A16.07,16.07,0,0,0,202,32H54A16.07,16.07,0,0,0,38.65,43.6L24.31,93.8A7.89,7.89,0,0,0,24,96h0v16a40,40,0,0,0,16,32v72a8,8,0,0,0,8,8H208a8,8,0,0,0,8-8V144a40,40,0,0,0,16-32V96ZM54,48H202l11.42,40H42.61Zm50,56h48v8a24,24,0,0,1-48,0Zm-16,0v8a24,24,0,0,1-35.12,21.26,7.88,7.88,0,0,0-1.82-1.06A24,24,0,0,1,40,112v-8ZM200,208H56V151.2a40.57,40.57,0,0,0,8,.8,40,40,0,0,0,32-16,40,40,0,0,0,64,0,40,40,0,0,0,32,16,40.57,40.57,0,0,0,8-.8Zm4.93-75.8a8.08,8.08,0,0,0-1.8,1.05A24,24,0,0,1,168,112v-8h48v8A24,24,0,0,1,204.93,132.2Z"/></svg><span class="fx-sr-only">Dökon</span></span></li>
    <li class="fx-orbit__item"><span class="fx-orbit__icon" data-color="purple" title="Hisobotlar"><svg viewBox="0 0 256 256" aria-hidden="true"><path d="M224,200h-8V40a8,8,0,0,0-8-8H152a8,8,0,0,0-8,8V80H96a8,8,0,0,0-8,8v40H48a8,8,0,0,0-8,8v64H32a8,8,0,0,0,0,16H224a8,8,0,0,0,0-16ZM160,48h40V200H160ZM104,96h40V200H104ZM56,144H88v56H56Z"/></svg><span class="fx-sr-only">Hisobotlar</span></span></li>
  </ul>
  <ul class="fx-orbit__ring" data-ring="inner" aria-label="Modullar">
    <li class="fx-orbit__item"><span class="fx-orbit__icon" title="Mijozlar"><svg viewBox="0 0 256 256" aria-hidden="true"><path d="M244.8,150.4a8,8,0,0,1-11.2-1.6A51.6,51.6,0,0,0,192,128a8,8,0,0,1-7.37-4.89,8,8,0,0,1,0-6.22A8,8,0,0,1,192,112a24,24,0,1,0-23.24-30,8,8,0,1,1-15.5-4A40,40,0,1,1,219,117.51a67.94,67.94,0,0,1,27.43,21.68A8,8,0,0,1,244.8,150.4ZM190.92,212a8,8,0,1,1-13.84,8,57,57,0,0,0-98.16,0,8,8,0,1,1-13.84-8,72.06,72.06,0,0,1,33.74-29.92,48,48,0,1,1,58.36,0A72.06,72.06,0,0,1,190.92,212ZM128,176a32,32,0,1,0-32-32A32,32,0,0,0,128,176ZM72,120a8,8,0,0,0-8-8A24,24,0,1,1,87.24,82a8,8,0,1,0,15.5-4A40,40,0,1,0,37,117.51,67.94,67.94,0,0,0,9.6,139.19a8,8,0,1,0,12.8,9.61A51.6,51.6,0,0,1,64,128,8,8,0,0,0,72,120Z"/></svg><span class="fx-sr-only">Mijozlar</span></span></li>
    <li class="fx-orbit__item"><span class="fx-orbit__icon" data-color="pink" title="Kalendar"><svg viewBox="0 0 256 256" aria-hidden="true"><path d="M208,32H184V24a8,8,0,0,0-16,0v8H88V24a8,8,0,0,0-16,0v8H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM72,48v8a8,8,0,0,0,16,0V48h80v8a8,8,0,0,0,16,0V48h24V80H48V48ZM208,208H48V96H208V208Z"/></svg><span class="fx-sr-only">Kalendar</span></span></li>
    <li class="fx-orbit__item"><span class="fx-orbit__icon" title="Bitimlar"><svg viewBox="0 0 256 256" aria-hidden="true"><path d="M216,48H40a8,8,0,0,0-8,8V208a16,16,0,0,0,16,16H88a16,16,0,0,0,16-16V160h48v16a16,16,0,0,0,16,16h40a16,16,0,0,0,16-16V56A8,8,0,0,0,216,48ZM88,208H48V128H88Zm0-96H48V64H88Zm64,32H104V64h48Zm56,32H168V128h40Zm0-64H168V64h40Z"/></svg><span class="fx-sr-only">Bitimlar</span></span></li>
  </ul>
</div>
```

- Qilmang: Halqada 8 tadan köp ikon qöymang — ikki halqaga böling yoki röyxat işlating.
- Qilmang: Orbitadagi ikonlarni bosiladigan asosiy amal qilmang — ular aylanadi; havola kerak bölsa, ostida röyxat bering.
- Qilmang: Bitta sahifada bittadan ortiq orbita işlatmang.

## Taşkiliy tuzilma (`orgchart`, beta, 0.29.0 dan)

Taşkiliy tuzilma (4.139): rahbar → bölimlar → xodimlar daraxti, tepadan pastga, boğlovçi çiziqlar bilan. Tugunlar yiğiladi (kartoçka ostidagi «−» / «+N» — yaşirin odamlar soni), kenglik siğmasa gorizontal aylanadi; data-layout="list" — tor ekran uçun çekinişli röyxat. Kartoçka: avatar, ism, lavozim; bölim uçun data-kind="unit" (avatarsiz). APG treeview klaviaturasi.

- Qaçon: HR / kadrlar bölimi: kim kimga böysunadi. Kompaniya profili, bölimlar tuzilmasi, ruxsatlar ierarxiyasi.
- Qaçon emas: Fayl va papkalar, menyu → `tree`; Jarayon bosqiçlari (ketma-ket) → `flow`; Ierarxik jadval (ustunlar bilan) → `treegrid`
- Variantlar: data-layout=tree|list (standart tree); data-kind=person|unit (standart person)
- Klaviatura: ↓ ↑ — Keyingi / oldingi körinadigan tugun; → — Yopiq tugunni oçadi; oçiq bölsa — birinçi böysunuvçiga; ← — Oçiq tugunni yopadi; aks holda rahbarga; Home / End — Birinçi / oxirgi tugun; * — Şu darajadagi hammasini oçadi; Enter / Boʻshliq — Tugunni tanlaydi
- Tokenlar: --fx-bg-brand-solid, --fx-bg-brand-subtle, --fx-bg-muted, --fx-bg-pressed, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-focus, --fx-border-color-strong, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-ease-standard, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-semibold, --fx-motion-fast, --fx-radius-badge, --fx-radius-control, --fx-radius-pill, --fx-shadow-md, --fx-shadow-sm, --fx-size-checkbox, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-6, --fx-space-8, --fx-text-on-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<ul class="fx-orgchart" data-fx-orgchart aria-label="«Zarafşon Tekstil» taşkiliy tuzilmasi">
  <li class="fx-orgchart__node"><div class="fx-orgchart__card"><span class="fx-avatar" data-size="sm" data-color="purple" aria-hidden="true">RS</span><span class="fx-orgchart__name">Rustam Saidov</span><span class="fx-orgchart__role">Boş direktor</span></div>
    <ul class="fx-orgchart__group">
      <li class="fx-orgchart__node"><div class="fx-orgchart__card"><span class="fx-avatar" data-size="sm" data-color="green" aria-hidden="true">DY</span><span class="fx-orgchart__name">Dilnoza Yusupova</span><span class="fx-orgchart__role">Savdo bölimi rahbari</span></div>
        <ul class="fx-orgchart__group">
          <li class="fx-orgchart__node"><div class="fx-orgchart__card"><span class="fx-avatar" data-size="sm" data-color="blue" aria-hidden="true">AK</span><span class="fx-orgchart__name">Aziz Karimov</span><span class="fx-orgchart__role">Menejer, Toşkent</span></div></li>
          <li class="fx-orgchart__node"><div class="fx-orgchart__card"><span class="fx-avatar" data-size="sm" data-color="yellow" aria-hidden="true">BR</span><span class="fx-orgchart__name">Bobur Rahimov</span><span class="fx-orgchart__role">Menejer, Samarqand</span></div></li>
        </ul>
      </li>
      <li class="fx-orgchart__node" aria-expanded="false"><div class="fx-orgchart__card"><span class="fx-avatar" data-size="sm" data-color="coral" aria-hidden="true">JA</span><span class="fx-orgchart__name">Jasur Aliyev</span><span class="fx-orgchart__role">Işlab çiqariş rahbari</span></div>
        <ul class="fx-orgchart__group">
          <li class="fx-orgchart__node"><div class="fx-orgchart__card" data-kind="unit"><span class="fx-orgchart__name">Töquv sexi</span><span class="fx-orgchart__role">24 xodim</span></div></li>
          <li class="fx-orgchart__node"><div class="fx-orgchart__card" data-kind="unit"><span class="fx-orgchart__name">Böyoq sexi</span><span class="fx-orgchart__role">11 xodim</span></div></li>
          <li class="fx-orgchart__node"><div class="fx-orgchart__card" data-kind="unit"><span class="fx-orgchart__name">Sifat nazorati</span><span class="fx-orgchart__role">5 xodim</span></div></li>
        </ul>
      </li>
      <li class="fx-orgchart__node"><div class="fx-orgchart__card"><span class="fx-avatar" data-size="sm" data-color="pink" aria-hidden="true">MS</span><span class="fx-orgchart__name">Malika Saidova</span><span class="fx-orgchart__role">Boş hisobçi</span></div>
        <ul class="fx-orgchart__group">
          <li class="fx-orgchart__node"><div class="fx-orgchart__card"><span class="fx-avatar" data-size="sm" data-color="green" aria-hidden="true">FI</span><span class="fx-orgchart__name">Feruza Ismoilova</span><span class="fx-orgchart__role">Hisobçi</span></div></li>
        </ul>
      </li>
    </ul>
  </li>
</ul>
```

- Qilmang: 300 tadan köp tugunni bir ekranga oçmang — 2-darajadan pastini yiğilgan holda bering.
- Qilmang: Lavozimni faqat rang bilan bildirmang (rahbar — kök) — yozuv bilan.
- Qilmang: Fayl yoki menyu daraxti uçun işlatmang — tree.

## OTP / PIN kod (`otp`, beta, 0.22.0 dan)

Bir martalik kod yoki PIN: har belgi alohida katakda. Yozilganda keyingi katakka ötadi, Backspace böş katakda orqaga qaytaradi, qöyiş (paste) va SMS-avto-töldiriş hamma kataklarga taqsimlanadi. Raqam yoki harf-raqam, yaşirin (●), 4/6 katak, ajratgiç, xato (silkiniş) va «Qayta yuboriş» taymeri.

- Qaçon: SMS, email yoki ilova orqali kelgan qisqa kodni kiritiş; PIN.
- Qaçon emas: Uzun parol yoki token → `input`; Sana yoki raqam diapazoni → `number`
- Variantlar: data-size=lg (standart md); data-state=complete|error (standart —)
- Klaviatura: 0–9 / harf — Belgini yozadi va keyingi katakka ötadi; Backspace — Katakni tozalaydi; böş bölsa oldingisiga qaytib tozalaydi; ← →, Home, End — Kataklar orasida yuriş; Ctrl+V — Kodni kataklarga taqsimlaydi
- Tokenlar: --fx-bg-field, --fx-bg-muted, --fx-bg-surface, --fx-border-color-error, --fx-border-color-field, --fx-border-color-focus, --fx-border-color-strong, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-lg, --fx-control-h-md, --fx-ease-standard, --fx-font-size-lg, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-regular, --fx-font-weight-semibold, --fx-knob-pill, --fx-motion-fast, --fx-motion-instant, --fx-motion-slow, --fx-radius-circle, --fx-radius-control, --fx-space-1, --fx-space-2, --fx-space-3, --fx-text-brand, --fx-text-disabled, --fx-text-error, --fx-text-primary, --fx-text-tertiary

```html
<span class="fx-label" id="otp1-l">Tasdiqlaş kodi</span>
<div class="fx-otp" data-fx-otp id="otp1">
  <div class="fx-otp__cells" role="group" aria-labelledby="otp1-l" aria-describedby="otp1-m">
    <input class="fx-otp__cell"><input class="fx-otp__cell"><input class="fx-otp__cell">
    <span class="fx-otp__sep" aria-hidden="true"></span>
    <input class="fx-otp__cell"><input class="fx-otp__cell"><input class="fx-otp__cell">
  </div>
  <input type="hidden" name="kod" data-otp-value>
  <p class="fx-otp__msg" id="otp1-m" aria-live="polite">6 xonali kod SMS orqali yuborildi.</p>
  <button class="fx-otp__resend" type="button" data-resend data-seconds="30">Qayta yuboriş</button>
</div>
```

- Qilmang: Kod uçun bitta uzun input + letter-spacing qilmang — katakka mos tuşmaydi.
- Qilmang: Xatoni faqat rang bilan bildirmang — .fx-otp__msg matni ham özgarsin.
- Qilmang: PIN/parolni oçiq körsatmang — data-mask bilan yaşiring.

## Overflow «+n» (`overflow`, beta, 0.22.0 dan)

Bitta qatorga siğmagan teglar, avatarlar yoki amallar yaşiriladi, oxirida «+n» tugmasi çiqadi (aria-label «yana 3 ta»). Bosilsa hammasi qatorlarga öraladi.

- Qaçon: Kartada teglar, avatarlar guruhi, ixçam panel amallari.
- Qaçon emas: Avatarlar guruhi oddiy +N bilan → `avatar`; Tegni tanlaş → `chip`
- Klaviatura: Enter, Space — «+n» — hammasini oçadi / yiğadi
- Tokenlar: --fx-bg-muted, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-sm, --fx-font-size-xs, --fx-radius-badge, --fx-space-2, --fx-text-primary, --fx-text-secondary

```html
<div class="fx-overflow" data-fx-overflow style="max-inline-size:16rem">
  <span class="fx-chip" data-type="tag">Toşkent</span><span class="fx-chip" data-type="tag">Obuna</span><span class="fx-chip" data-type="tag">Korxona</span><span class="fx-chip" data-type="tag">VIP</span><span class="fx-chip" data-type="tag">Qaytgan</span>
  <button class="fx-overflow__more" type="button" hidden></button>
</div>
```

- Qilmang: Yaşirilgan elementlar orasida yagona muhim amalni qoldirmang.
- Qilmang: «+n» ni töğridan-töğri matn bilan almaştirmang — tugma bölib qolsin.

## Sahifa sarlavhasi (`page-header`, beta, 0.13.0 dan)

Sahifa boşi: nom + soni, bitta qator izoh, öngda neytral amallar va bitta asosiy tugma. Sarlavha şrifti va moslaşuvi tokenlardan. Örinlar (2.140): tepada orqaga havola, meta qatori (holat, sana, muallif), ostida tablar, amallarning ortiqçasi «…» menyuda. Scrollda yiğiliş (4.155): data-collapse — yopişqoq, aylantirilganda katta sarlavha kiçik qatorga aylanadi, izoh va meta yaşirinadi (faqat CSS, scroll-driven).

- Qaçon: Har ilova sahifasining boşi.
- Qaçon emas: Karta içidagi sarlavha → `card`
- Variantlar: data-collapse=true|surface
- Tokenlar: --fx-bg-page, --fx-bg-surface, --fx-border-color-default, --fx-border-color-strong, --fx-border-width-default, --fx-font-adjust-display, --fx-font-adjust-sans, --fx-font-family-display, --fx-font-family-sans, --fx-font-size-display-sm, --fx-font-size-lg, --fx-font-size-sm, --fx-font-weight-regular, --fx-font-weight-semibold, --fx-radius-circle, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-6, --fx-text-secondary, --fx-text-tertiary

```html
<header class="fx-page-header">
  <a class="fx-back-link fx-page-header__back" href="#">Arizalar</a>
  <div class="fx-page-header__main">
    <h1 class="fx-page-header__title">Ariza #248 <span class="fx-page-header__count">Yangi</span></h1>
    <ul class="fx-page-header__meta"><li>Aziz Karimov</li><li>12-oktabr, 14:30</li><li>Saytdagi forma</li></ul>
  </div>
  <div class="fx-page-header__actions">
    <button class="fx-btn" data-variant="primary">Qabul qiliş</button>
    <button class="fx-btn fx-page-header__more" data-variant="ghost" data-shape="icon" popovertarget="ph-more" aria-haspopup="menu" aria-label="Boşqa amallar"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M5 10h.01M10 10h.01M15 10h.01" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round"/></svg></button>
    <div class="fx-menu" id="ph-more" role="menu" popover data-fx-menu>
      <button class="fx-menu__item" role="menuitem">Nusxa oliş</button>
      <button class="fx-menu__item" role="menuitem">Arxivlaş</button>
    </div>
  </div>
  <div class="fx-page-header__tabs"><div class="fx-tabs" role="tablist" aria-label="Ariza" data-fx-tabs>
    <button class="fx-tabs__tab" role="tab" id="ph-t1" aria-controls="ph-p1" aria-selected="true">Umumiy</button>
    <button class="fx-tabs__tab" role="tab" id="ph-t2" aria-controls="ph-p2" aria-selected="false">Tarix</button>
  </div></div>
</header>
<div class="fx-tabs__panel" role="tabpanel" id="ph-p1" aria-labelledby="ph-t1" tabindex="0">Ism, telefon, holat.</div>
<div class="fx-tabs__panel" role="tabpanel" id="ph-p2" aria-labelledby="ph-t2" tabindex="0" hidden>Özgarişlar tarixi.</div>
<!-- Scrollda yigʻilish (4.155): aylantiriladigan hudud ichida -->
<div style="block-size: 16rem; overflow: auto; border: 1px solid var(--fx-border-color-default); border-radius: var(--fx-radius-surface); padding-inline: var(--fx-space-4)">
  <header class="fx-page-header" data-collapse>
    <div class="fx-page-header__main"><h1 class="fx-page-header__title">Bitimlar <span class="fx-page-header__count">128</span></h1><p class="fx-page-header__text">Faol bitimlar · yangilangan 10:42</p></div>
    <div class="fx-page-header__actions"><button class="fx-btn" data-variant="primary" data-size="sm">Yangi bitim</button></div>
  </header>
  <p>Röyxat… pastga aylantiring — sarlavha kiçrayadi.</p><p style="block-size: 40rem">…</p>
</div>
```

- Qilmang: Ikkita asosiy tugma qöymang.
- Qilmang: Sahifa amallarini tepa panelga köçirmang.

## Oldingi / keyingi (`pager`, beta, 0.23.0 dan)

Hujjat va maqola oxiridagi ikki katta havola (#88): oldingi (çapda) va keyingi (öngda) sahifa nomi bilan. Bittasi bölmasa ikkinçisi öz joyida qoladi. Raqamli sahifalaş uçun — pagination.

- Qaçon: Ketma-ket hujjat sahifalari, qöllanma qadamlari, maqolalar.
- Qaçon emas: Röyxat sahifalari (1, 2, 3…) → `pagination`; Faqat ota sahifaga qaytiş → `back-link`
- Klaviatura: Tab, Enter — Sahifaga ötadi
- Tokenlar: --fx-bg-subtle, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-strong, --fx-border-width-default, --fx-border-width-focus, --fx-ease-standard, --fx-font-size-md, --fx-font-size-xs, --fx-font-weight-medium, --fx-motion-fast, --fx-motion-instant, --fx-motion-press, --fx-radius-surface, --fx-space-1, --fx-space-10, --fx-space-4, --fx-text-brand, --fx-text-primary, --fx-text-tertiary

```html
<nav class="fx-pager" aria-label="Sahifalar">
  <a class="fx-pager__link" rel="prev" href="#"><span class="fx-pager__label">Oldingi</span><span class="fx-pager__title">Örnatiş</span></a>
  <a class="fx-pager__link" rel="next" href="#"><span class="fx-pager__label">Keyingi</span><span class="fx-pager__title">Mavzularni sozlaş</span></a>
</nav>
```

- Qilmang: Yorliqqa «1, 2, 3» yozmang — sahifa nomi; raqamlar uçun pagination.
- Qilmang: Ikkita havolani bir-biriga öxşatmang — keyingisi öngda (rel="next").

## Sahifalaş (`pagination`, beta, 0.13.0 dan)

Jadval ostida: «1–20 / 248» va oldingi/keyingi; kerak bölsa sahifa raqamlari (joriysi brend tusi), oraliq «…». Variantlar: minimal (faqat ‹ ›), sahifa hajmi tanlovi (native select), «Yana yuklaş» (cursor/çeksiz röyxat, körsatilgani çiziği bilan).

- Qaçon: Köp sahifali jadval yoki röyxat.
- Qaçon emas: Çeksiz lenta → `list`
- Variantlar: data-variant=numbered|minimal|more (standart numbered)
- Klaviatura: Tab, Enter — Sahifaga ötadi
- Tokenlar: --fx-bg-brand-subtle, --fx-bg-muted, --fx-bg-pressed, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-sm, --fx-font-size-sm, --fx-font-weight-semibold, --fx-knob-pill, --fx-popover-width, --fx-radius-control, --fx-size-icon-sm, --fx-space-1, --fx-space-2, --fx-space-3, --fx-text-brand, --fx-text-disabled, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<nav class="fx-pagination" aria-label="Sahifalar">
  <span class="fx-pagination__info">1–20 / 248</span>
  <a class="fx-pagination__page" aria-disabled="true" aria-label="Oldingi">‹</a>
  <a class="fx-pagination__page" href="#" aria-current="page">1</a>
  <a class="fx-pagination__page" href="#">2</a>
  <span class="fx-pagination__gap">…</span>
  <a class="fx-pagination__page" href="#">13</a>
  <a class="fx-pagination__page" href="#" aria-label="Keyingi">›</a>
</nav>

<!-- Minimal + sahifa hajmi -->
<nav class="fx-pagination" data-variant="minimal" aria-label="Sahifalar (minimal)">
  <span class="fx-pagination__info" aria-live="polite">1–20 / 248</span>
  <label class="fx-pagination__size">Sahifada <select class="fx-select" data-size="sm" aria-label="Sahifadagi qatorlar soni"><option>20</option><option>50</option><option>100</option></select></label>
  <a class="fx-pagination__page" aria-disabled="true" aria-label="Oldingi"><svg viewBox="0 0 16 16" aria-hidden="true"><path d="M10 3.5 5.5 8 10 12.5" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></a>
  <a class="fx-pagination__page" href="#" aria-label="Keyingi"><svg viewBox="0 0 16 16" aria-hidden="true"><path d="M6 3.5 10.5 8 6 12.5" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></a>
</nav>

<!-- Yana yuklash -->
<nav class="fx-pagination" data-variant="more" aria-label="Yana yuklaş">
  <div class="fx-pagination__more">
    <span class="fx-pagination__info" aria-live="polite">248 tadan 40 tasi körsatildi</span>
    <div class="fx-progress" data-size="xs" role="progressbar" aria-label="Körsatilgan uluş" aria-valuenow="16" aria-valuemin="0" aria-valuemax="100" style="--fx-progress-value: 16%"></div>
    <button class="fx-btn" type="button">Yana 20 tasini yuklaş</button>
  </div>
</nav>
```

- Qilmang: 10 tadan köp sahifa raqamini qatorga yozmang — «…».
- Qilmang: «Yana yuklaş» bilan sahifa raqamini aralaştirmang — yoki cursor, yoki raqam.
- Qilmang: Sahifa hajmi tanlovini 3–4 qiymatdan oşirmang (20 · 50 · 100).

## Parallaks qatlamlar (`parallax`, beta, 0.29.0 dan)

Sahifa aylantirilganda qatlamlar turli tezlikda siljiydi (Aceternity Parallax Scroll va Hero Parallax): har [data-fx-parallax] element öz tezligida — slow, standart, fast yoki reverse (teskari). data-axis="x" — gorizontal qatorlar (qöşni qatorlar teskari yönalişda sirpanadi). JS'siz: scroll-driven animatsiya (animation-timeline: view()), şuning uçun asosiy oqimni band qilmaydi. Siljiş masofasi --fx-motion-shift-lg tokenidan; harakat kamaytirilsa, data-fx-motion="none" yoki brauzer qöllamasa — qatlamlar joyida turadi. .fx-parallax — çetidan çiqqanini kesuvçi konteyner.

- Qaçon: Landing hero ostidagi loyihalar lentasi (Hero Parallax). Rasm galereyasi ustunlari turli tezlikda — çuqurlik hissi.
- Qaçon emas: Blok körinişga kirganda bir marta paydo bölişi → `motion`; Logotiplar uzluksiz aylanişi → `marquee`
- Variantlar: data-fx-parallax=slow|fast|reverse (standart normal); data-axis=y|x (standart y)
- Tokenlar: --fx-motion-shift-lg, --fx-space-4

```html
<section class="fx-parallax" aria-label="Loyihalar lentasi" style="display:grid;gap:var(--fx-space-4);padding-block:var(--fx-space-8)">
  <div class="fx-parallax__row" data-fx-parallax data-axis="x"><div class="fx-card" style="inline-size:15rem;block-size:10rem;padding:var(--fx-space-4);display:flex;align-items:end;background:linear-gradient(150deg, var(--fx-bg-category-blue-subtle), var(--fx-bg-category-purple))"><strong>Samarqand Grand</strong></div><div class="fx-card" style="inline-size:15rem;block-size:10rem;padding:var(--fx-space-4);display:flex;align-items:end;background:linear-gradient(150deg, var(--fx-bg-category-green-subtle), var(--fx-bg-category-blue))"><strong>Tong maktabi</strong></div><div class="fx-card" style="inline-size:15rem;block-size:10rem;padding:var(--fx-space-4);display:flex;align-items:end;background:linear-gradient(150deg, var(--fx-bg-category-coral-subtle), var(--fx-bg-category-yellow))"><strong>Zarafşon Tekstil</strong></div><div class="fx-card" style="inline-size:15rem;block-size:10rem;padding:var(--fx-space-4);display:flex;align-items:end;background:linear-gradient(150deg, var(--fx-bg-category-pink-subtle), var(--fx-bg-category-purple))"><strong>Mehr klinikasi</strong></div><div class="fx-card" style="inline-size:15rem;block-size:10rem;padding:var(--fx-space-4);display:flex;align-items:end;background:linear-gradient(150deg, var(--fx-bg-category-yellow-subtle), var(--fx-bg-category-green))"><strong>Boğ kafe</strong></div><div class="fx-card" style="inline-size:15rem;block-size:10rem;padding:var(--fx-space-4);display:flex;align-items:end;background:linear-gradient(150deg, var(--fx-bg-category-purple-subtle), var(--fx-bg-category-pink))"><strong>Navoiy kitob</strong></div></div>
  <div class="fx-parallax__row" data-fx-parallax="reverse" data-axis="x"><div class="fx-card" style="inline-size:15rem;block-size:10rem;padding:var(--fx-space-4);display:flex;align-items:end;background:linear-gradient(150deg, var(--fx-bg-category-pink-subtle), var(--fx-bg-category-purple))"><strong>Mehr klinikasi</strong></div><div class="fx-card" style="inline-size:15rem;block-size:10rem;padding:var(--fx-space-4);display:flex;align-items:end;background:linear-gradient(150deg, var(--fx-bg-category-yellow-subtle), var(--fx-bg-category-green))"><strong>Boğ kafe</strong></div><div class="fx-card" style="inline-size:15rem;block-size:10rem;padding:var(--fx-space-4);display:flex;align-items:end;background:linear-gradient(150deg, var(--fx-bg-category-purple-subtle), var(--fx-bg-category-pink))"><strong>Navoiy kitob</strong></div><div class="fx-card" style="inline-size:15rem;block-size:10rem;padding:var(--fx-space-4);display:flex;align-items:end;background:linear-gradient(150deg, var(--fx-bg-category-blue-subtle), var(--fx-bg-category-purple))"><strong>Samarqand Grand</strong></div><div class="fx-card" style="inline-size:15rem;block-size:10rem;padding:var(--fx-space-4);display:flex;align-items:end;background:linear-gradient(150deg, var(--fx-bg-category-green-subtle), var(--fx-bg-category-blue))"><strong>Tong maktabi</strong></div><div class="fx-card" style="inline-size:15rem;block-size:10rem;padding:var(--fx-space-4);display:flex;align-items:end;background:linear-gradient(150deg, var(--fx-bg-category-coral-subtle), var(--fx-bg-category-yellow))"><strong>Zarafşon Tekstil</strong></div></div>
</section>
<section class="fx-parallax" aria-label="Galereya" style="display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--fx-space-4);padding-block:var(--fx-space-12);margin-block-start:var(--fx-space-6)">
  <div data-fx-parallax="slow" style="display:grid;gap:var(--fx-space-4)"><div class="fx-card" style="block-size:12rem;padding:var(--fx-space-4);display:flex;align-items:end;background:linear-gradient(150deg, var(--fx-bg-category-blue-subtle), var(--fx-bg-category-purple))"><strong>Samarqand Grand</strong></div><div class="fx-card" style="block-size:12rem;padding:var(--fx-space-4);display:flex;align-items:end;background:linear-gradient(150deg, var(--fx-bg-category-green-subtle), var(--fx-bg-category-blue))"><strong>Tong maktabi</strong></div><div class="fx-card" style="block-size:12rem;padding:var(--fx-space-4);display:flex;align-items:end;background:linear-gradient(150deg, var(--fx-bg-category-coral-subtle), var(--fx-bg-category-yellow))"><strong>Zarafşon Tekstil</strong></div></div>
  <div data-fx-parallax="fast" style="display:grid;gap:var(--fx-space-4)"><div class="fx-card" style="block-size:12rem;padding:var(--fx-space-4);display:flex;align-items:end;background:linear-gradient(150deg, var(--fx-bg-category-green-subtle), var(--fx-bg-category-blue))"><strong>Tong maktabi</strong></div><div class="fx-card" style="block-size:12rem;padding:var(--fx-space-4);display:flex;align-items:end;background:linear-gradient(150deg, var(--fx-bg-category-coral-subtle), var(--fx-bg-category-yellow))"><strong>Zarafşon Tekstil</strong></div><div class="fx-card" style="block-size:12rem;padding:var(--fx-space-4);display:flex;align-items:end;background:linear-gradient(150deg, var(--fx-bg-category-pink-subtle), var(--fx-bg-category-purple))"><strong>Mehr klinikasi</strong></div></div>
  <div data-fx-parallax="reverse" style="display:grid;gap:var(--fx-space-4)"><div class="fx-card" style="block-size:12rem;padding:var(--fx-space-4);display:flex;align-items:end;background:linear-gradient(150deg, var(--fx-bg-category-coral-subtle), var(--fx-bg-category-yellow))"><strong>Zarafşon Tekstil</strong></div><div class="fx-card" style="block-size:12rem;padding:var(--fx-space-4);display:flex;align-items:end;background:linear-gradient(150deg, var(--fx-bg-category-pink-subtle), var(--fx-bg-category-purple))"><strong>Mehr klinikasi</strong></div><div class="fx-card" style="block-size:12rem;padding:var(--fx-space-4);display:flex;align-items:end;background:linear-gradient(150deg, var(--fx-bg-category-yellow-subtle), var(--fx-bg-category-green))"><strong>Boğ kafe</strong></div></div>
</section>
```

- Qilmang: Matn abzatslarini parallaks qilmang — öqiş qiyinlaşadi; faqat rasm, karta va bezak qatlamlari.
- Qilmang: Bitta ekranda uçtadan ortiq tezlik işlatmang — tartibsiz körinadi.
- Qilmang: Muhim tugma yoki formani siljiydigan qatlamga qöymang.

## Zarraçalar (`particles`, beta, 0.29.0 dan)

Hero yoki CTA bloki ortidagi canvas qatlam (4.66): sekin suzuvçi nuqtalar, kursor yaqinida itariladi; data-links bilan yaqin nuqtalar ingiçka çiziq bilan boğlanadi («tarmoq», integratsiya mavzusi). Ota blok position: relative boʻlsa, butun maydonni egallaydi, bosilmaydi va matn ostida qoladi. Rang mavzudan (matn yoki brend rangi) — yorugʻ va qorongʻida oʻzi moslashadi. Koʻrinmasa chizmaydi; harakat kamaytirilganda statik kadr.

- Qaçon: Landing hero, «integratsiyalar» yoki CTA bloki ortida jonli, lekin tinç fon. Brend rangli banner içida (data-on="brand").
- Qaçon emas: Harakatsiz naqş yoki don → `bg`; Ikki tizim orasidagi aniq boğlaniş → `beam`
- Variantlar: data-tone=brand|strong (standart subtle); data-on=brand (standart surface); data-links=on (standart off); data-fade=on (standart off); data-count=N (standart auto)
- Tokenlar: --fx-bg-brand-solid, --fx-text-on-brand, --fx-text-primary

```html
<section style="position:relative;isolation:isolate;overflow:hidden;display:grid;place-items:center;align-content:center;gap:var(--fx-space-3);min-block-size:20rem;padding:var(--fx-space-8);border:var(--fx-border-width-default) solid var(--fx-border-color-default);border-radius:var(--fx-radius-surface);text-align:center">
  <div class="fx-particles" data-fx-particles data-links data-fade aria-hidden="true"></div>
  <span class="fx-badge" data-color="blue">Integratsiyalar</span>
  <h2 style="margin:0;font-size:var(--fx-font-size-2xl)">CRM, Telegram va 1C — bitta oqimda</h2>
  <p style="margin:0;color:var(--fx-text-secondary)">Arizalar sayt, bot va dökondan avtomatik tuşadi.</p>
  <a class="fx-btn" data-variant="primary" href="#">Ulaşni boşlaş</a>
</section>
<section style="position:relative;isolation:isolate;overflow:hidden;display:grid;place-items:center;min-block-size:12rem;margin-block-start:var(--fx-space-4);border-radius:var(--fx-radius-surface);background:var(--fx-bg-brand-solid);color:var(--fx-text-on-brand)">
  <div class="fx-particles" data-fx-particles data-on="brand" data-count="60" aria-hidden="true"></div>
  <strong style="font-size:var(--fx-font-size-xl)">Obuna — 1-noyabrdan</strong>
</section>
```

- Qilmang: Zarraçani ma'lumot, jadval yoki forma ortiga qöymang — faqat bezak blokida.
- Qilmang: Bitta sahifada bittadan ortiq harakatli fon işlatmang.
- Qilmang: Nuqtalar sonini oşirib yubormang (≤ 120) — telefonda batareya sarflaydi.

## Bosqiç yöli (`path`, beta, 0.28.0 dan)

CRM bitimi yoki ariza bosqiçlari chevronlar qatorida (4.140, SLDS «Path»): ötilgan — ✓ belgisi, joriy — töldirilgan va qalin, keyingilari — xira, yöqotilgan — ✕. Bosqiçni bosib köriş (tafsilot, körsatma) va öngdagi tugma bilan «Bosqiçni yakunlaş» yoki boşqa bosqiçni joriy qiliş. Telefonda faqat joriy bosqiç nomi yoziladi.

- Qaçon: CRM bitimi, ariza, buyurtma — bitta yozuvning çiziqli bosqiçlari va keyingi qadamga ötkaziş.
- Qaçon emas: Köp sahifali forma qadamlari → `wizard`; Faqat körsatiş uçun qadamlar → `steps`; Hodisalar tarixi → `timeline`
- Variantlar: data-state=done|lost
- Klaviatura: ← →, Home, End — Bosqiçlar orasida fokus; Enter / Boʻsh joy — Bosqiçni köriş (tanlaş); Tab — Amal tugmasiga ötadi
- Tokenlar: --fx-bg-brand-solid, --fx-bg-brand-solid-hover, --fx-bg-brand-subtle, --fx-bg-error-solid, --fx-bg-muted, --fx-bg-subtle, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-sm, --fx-ease-standard, --fx-font-size-sm, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-motion-fast, --fx-motion-press, --fx-radius-control, --fx-size-icon-sm, --fx-space-1, --fx-space-2, --fx-space-3, --fx-text-brand, --fx-text-on-brand, --fx-text-on-error, --fx-text-primary, --fx-text-secondary

```html
<div class="fx-path" data-fx-path>
  <div class="fx-path__stages" role="tablist" aria-label="Bitim bosqiçlari">
    <button class="fx-path__stage" type="button"><span class="fx-path__label">Yangi</span></button>
    <button class="fx-path__stage" type="button"><span class="fx-path__label">Aloqa örnatildi</span></button>
    <button class="fx-path__stage" type="button" aria-current="step"><span class="fx-path__label">Taklif yuborildi</span></button>
    <button class="fx-path__stage" type="button"><span class="fx-path__label">Muzokara</span></button>
    <button class="fx-path__stage" type="button"><span class="fx-path__label">Yopildi</span></button>
  </div>
  <button class="fx-btn fx-path__action" data-variant="primary" data-size="sm" type="button">Bosqiçni yakunlaş</button>
</div>
<div class="fx-path" data-fx-path>
  <div class="fx-path__stages" role="tablist" aria-label="Ariza bosqiçlari">
    <button class="fx-path__stage" type="button" data-state="done"><span class="fx-path__label">Qabul qilindi</span></button>
    <button class="fx-path__stage" type="button" data-state="done"><span class="fx-path__label">Körib çiqildi</span></button>
    <button class="fx-path__stage" type="button" aria-current="step" data-state="lost"><span class="fx-path__label">Rad etildi</span></button>
  </div>
</div>
```

- Qilmang: 7 dan köp bosqiç bermang — chevronlar öqilmaydi; uzun jarayon uçun steps yoki timeline.
- Qilmang: Bosqiç holatini faqat rang bilan bermang — ✓ / ✕ belgisi va aria-description bor.
- Qilmang: Ommaviy navigatsiya (sahifalar) uçun işlatmang — bu bitta yozuvning holati.

## Içkaridan köriş paneli (`peek`, beta, 0.23.0 dan)

Röyxat qatori bosilsa tafsilot paneli röyxat ustidan öng çetdan çiqadi — röyxat joyida qoladi, kontekst yöqolmaydi. Tepada oldingi/keyingi (J/K), hisoblagiç va yopiş (Esc). Modal emas.

- Qaçon: Jadval yoki röyxatdagi yozuvni tez köriş va navbatdagisiga ötiş (CRM, kiruvçilar, vazifalar).
- Qaçon emas: Modal tafsilot yoki forma → `sheet`; Röyxat va tafsilot doimiy yonma-yon → `split`
- Klaviatura: Enter, Space — Qator: panelni oçadi; J / K — Keyingi / oldingi yozuv; Esc — Yopadi, fokus qatorga
- Tokenlar: --fx-bg-brand-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-dialog-width, --fx-ease-exit, --fx-ease-sheet, --fx-font-size-lg, --fx-font-size-xs, --fx-font-weight-semibold, --fx-motion-exit-slow, --fx-motion-instant, --fx-motion-slower, --fx-shadow-lg, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-5, --fx-text-tertiary

```html
<div class="fx-peek" data-fx-peek style="block-size: 16rem">
  <ul class="fx-list" style="padding-inline: var(--fx-space-4)">
    <li class="fx-list__item"><button class="fx-list__link" type="button" data-peek-open="a1" style="border:0;background:none;font:inherit;text-align:start;cursor:pointer"><div class="fx-list__body"><span class="fx-list__title">Aziz Karimov</span><span class="fx-list__meta">Sayt buyurtmasi · yangi</span></div></button></li>
    <li class="fx-list__item"><button class="fx-list__link" type="button" data-peek-open="a2" style="border:0;background:none;font:inherit;text-align:start;cursor:pointer"><div class="fx-list__body"><span class="fx-list__title">Madina Yusupova</span><span class="fx-list__meta">Mobil ilova · muzokarada</span></div></button></li>
    <li class="fx-list__item"><button class="fx-list__link" type="button" data-peek-open="a3" style="border:0;background:none;font:inherit;text-align:start;cursor:pointer"><div class="fx-list__body"><span class="fx-list__title">Bobur Toş</span><span class="fx-list__meta">Dizayn tizimi · kutilmoqda</span></div></button></li>
  </ul>
  <aside class="fx-peek__panel" aria-label="Ariza tafsiloti">
    <div class="fx-peek__head">
      <button class="fx-btn" data-variant="ghost" data-size="sm" data-shape="icon" data-peek="prev" aria-label="Oldingi (K)"><svg viewBox="0 0 16 16" aria-hidden="true"><path d="M4 10l4-4 4 4" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
      <button class="fx-btn" data-variant="ghost" data-size="sm" data-shape="icon" data-peek="next" aria-label="Keyingi (J)"><svg viewBox="0 0 16 16" aria-hidden="true"><path d="M4 6l4 4 4-4" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
      <span class="fx-peek__count" aria-live="polite"></span>
      <button class="fx-btn" data-variant="ghost" data-size="sm" data-shape="icon" data-peek="close" aria-label="Yopiş (Esc)"><svg viewBox="0 0 16 16" aria-hidden="true"><path d="M4 4l8 8M12 4l-8 8" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
    </div>
    <div class="fx-peek__body">
      <div class="fx-peek__item" data-id="a1" hidden><h3 class="fx-peek__title" tabindex="-1">Aziz Karimov</h3><p>Korporativ sayt kerak: 8 ta sahifa, ariza formasi, CRM bilan ulaniş. Byudjet muhokamada.</p></div>
      <div class="fx-peek__item" data-id="a2" hidden><h3 class="fx-peek__title" tabindex="-1">Madina Yusupova</h3><p>iOS va Android ilova, buyurtmalarni kuzatiş. Texnik topşiriq tayyorlanmoqda.</p></div>
      <div class="fx-peek__item" data-id="a3" hidden><h3 class="fx-peek__title" tabindex="-1">Bobur Toş</h3><p>Içki dizayn tizimi: tokenlar, 30 komponent, hujjat sayti.</p></div>
    </div>
  </aside>
</div>
```

- Qilmang: Panelni modal qilmang — maqsad röyxat bilan birga işlaş (modal kerak bölsa sheet).
- Qilmang: Uzoq forma yoki köp bosqiçli jarayonni panelga solmang — alohida sahifa.

## Odam qatori (`persona`, beta, 0.22.0 dan)

Avatar + ism + ikkinçi qator (rol, poçta, holat) + ixtiyoriy öng tomonda amal. Jadval, röyxat, izoh, faoliyat lentasida takrorlanadi. Ism — haqiqiy matn.

- Qaçon: Odamni avatar bilan nomlaş: egasi, ijroçi, muallif, mijoz.
- Qaçon emas: Faqat avatar, matnsiz → `avatar`; Köp odam, ustunlar bilan → `table`
- Variantlar: data-size=sm|lg (standart md)
- Klaviatura: Tab, Enter — Havola bölsa (a.fx-persona) profilga ötadi
- Tokenlar: --fx-border-color-focus, --fx-border-width-focus, --fx-font-size-lg, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-radius-nav, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-text-primary, --fx-text-tertiary

```html
<div class="fx-persona">
  <span class="fx-avatar" data-color="yellow" data-status="active" role="img" aria-label="Aziz Karimov">AK</span>
  <span class="fx-persona__text"><span class="fx-persona__name">Aziz Karimov</span><span class="fx-persona__meta">Savdo menejeri · onlayn</span></span>
  <span class="fx-persona__end"><button class="fx-btn" type="button">Yoziş</button></span>
</div>
<div class="fx-persona" data-size="sm"><span class="fx-persona__text"><span class="fx-persona__name">Bobur Toshmatov</span><span class="fx-persona__meta">bobur@namuna.uz</span></span></div>
```

- Qilmang: Ismni faqat avatar alt matniga qöymang — körinadigan matn bölsin.
- Qilmang: Ikkinçi qatorga uzun matn yozmang — bitta qator, «…» bilan qisqaradi.

## Bosqiç banneri (Alfa / Beta) (`phase`, beta, 0.28.0 dan)

Sayt yoki xizmat tepasidagi ingiçka qator (4.164, GOV.UK Phase banner): «BETA — Bu sayt oçiq quriladi, fikringizni yozing». Mahsulot hali rivojlanayotganini halol aytadi va fikr bildiriş havolasini doim köz oldida tutadi («build in public»). data-phase: alpha, beta (standart), preview; ixtiyoriy öng tomonda versiya yoki sana. data-variant="pill" — hero ustida markazdagi ixçam tabletka.

- Qaçon: Yangi xizmat, oçiq qurilayotgan mahsulot yoki beta funksiya — foydalanuvçi bosqiçni bilsin. Hero ustida «Yangi: …» tabletkasi (pill).
- Qaçon emas: Vaqtinçalik e'lon (aksiya, texnik işlar) → `banner`; Holat yoki yangilik belgisi → `badge`
- Variantlar: data-phase=alpha|preview (standart beta); data-variant=pill (standart bar)
- Tokenlar: --fx-bg-brand-solid, --fx-bg-category-blue, --fx-bg-category-coral, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-semibold, --fx-radius-badge, --fx-radius-overlay, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-6, --fx-text-on-brand, --fx-text-on-category, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<div class="fx-phase" data-phase="beta" role="region" aria-label="Sayt bosqiçi">
  <strong class="fx-phase__tag">Beta</strong>
  <p class="fx-phase__text">FoxUI oçiq quriladi — har versiya qanday qurilayotgani körinib turadi. <a href="#">Fikr bildiring</a></p>
  <span class="fx-phase__meta">v0.27 · 18.10.2026</span>
</div>
<div class="fx-phase" data-phase="alpha" style="margin-block-start:var(--fx-space-3)"><strong class="fx-phase__tag">Alfa</strong><p class="fx-phase__text">Mijozlar kabineti ilk sinovda — xatolar bölişi mumkin. <a href="#">Xato haqida yozing</a></p></div>
<div style="display:grid;justify-items:center;margin-block-start:var(--fx-space-6)"><div class="fx-phase" data-phase="preview" data-variant="pill"><strong class="fx-phase__tag">Yangi</strong><p class="fx-phase__text">Effektlar qatlami çiqdi — <a href="#">nima yangi</a></p></div></div>
```

- Qilmang: Bannerni yopiladigan qilmang — bosqiç tugagunça turadi (yopiladigan e'lon — banner).
- Qilmang: Uzun matn yozmang — bir qator: bosqiç + fikr havolasi.
- Qilmang: Mahsulot barqaror bölgaç «Beta»ni qoldirmang — işonçni yöqotadi.

## Telefon raqam (`phone`, beta, 0.28.0 dan)

Telefon maydoni mamlakat tanlagiçi bilan: çapda bayroq va kod (standart — Özbekiston +998), öngda raqam mamlakat niqobi bilan («90 123-45-67»). Formaga E.164 qiymat (+998901234567) yaşirin inputda ketadi. Töliq raqam yozilsa yoki joylansa («+7 701 …») mamlakat özi aniqlanadi.

- Qaçon: Röyxatdan ötiş, buyurtma, ariza formasida telefon raqam (SMS tasdiq bilan). Mijozlar bir neçta mamlakatdan bölişi mumkin bölgan joyda.
- Qaçon emas: Karta raqami, sana kabi boşqa qat'iy formatlar → `mask`; Bir martalik SMS kodni kiritiş → `otp`
- Variantlar: data-size=sm|md|lg (standart md); data-country=UZ (standart UZ); data-countries=UZ KZ KG TJ RU (standart hammasi)
- Klaviatura: Enter / Space (tugmada) — Mamlakatlar röyxatini oçadi, fokus qidiruvga; ↑ ↓, Home, End — Faol mamlakat; Harflar / raqam — Nomi yoki kodi böyiça qidiradi; Enter — Tanlaydi, fokus raqam maydoniga qaytadi; Esc — Röyxatni yopadi
- Tokenlar: --fx-bg-field, --fx-bg-muted, --fx-border-color-default, --fx-border-color-error, --fx-border-color-field, --fx-border-color-focus, --fx-border-color-strong, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-lg, --fx-control-h-md, --fx-control-h-sm, --fx-ease-standard, --fx-fg-success, --fx-font-size-lg, --fx-font-size-md, --fx-font-size-sm, --fx-font-weight-semibold, --fx-knob-field-fill, --fx-knob-pill, --fx-motion-fast, --fx-motion-press, --fx-popover-width, --fx-radius-control, --fx-size-icon-sm, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-text-disabled, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<div class="fx-field">
  <label class="fx-label" for="ph1" data-required>Telefon raqam</label>
  <div class="fx-phone" data-fx-phone data-country="UZ">
    <button class="fx-phone__country" type="button" popovertarget="ph1-pop"></button>
    <input class="fx-phone__input" id="ph1" name="telefon" required aria-describedby="ph1-h">
    <div class="fx-popover fx-phone__pop" popover id="ph1-pop"></div>
  </div>
  <p class="fx-hint" id="ph1-h">Tasdiqlaş kodi SMS orqali şu raqamga yuboriladi.</p>
</div>
<div class="fx-field">
  <label class="fx-label" for="ph2">Qöşimça raqam</label>
  <div class="fx-phone" data-fx-phone data-size="sm" data-countries="UZ KZ KG TJ RU">
    <button class="fx-phone__country" type="button" popovertarget="ph2-pop"></button>
    <input class="fx-phone__input" id="ph2" name="telefon2" value="+7 701 555 12 34">
    <div class="fx-popover fx-phone__pop" popover id="ph2-pop"></div>
  </div>
</div>
```

- Qilmang: Mamlakat kodini maydon içiga matn sifatida yozdirmang — kod tugmada turadi, foydalanuvçi faqat milliy raqamni teradi.
- Qilmang: Raqamni «998901234567» körinişida körsatmang — niqob guruhlab körsatadi, serverga E.164 ketadi.
- Qilmang: Faqat bayroq bilan mamlakatni bildirmang — kod (+998) ham yoniga yoziladi, ekran öquvçi nomini oladi.

## Pin tugmasi (☆) (`pin`, beta, 0.1.0 dan)

Sahifa yoki körinişni çap relsga pin qiliş tugmasi (Ustoz 21.10, PDP rels naqşi): ☆ — pin qilinmagan, ★ — pin qilingan (ogohlantiriş rangida). Bosilganda holat almaşadi va «fx-pin» hodisasi çiqadi (detail: href, nom, on) — ilova saqlaydi (har a'zoning özi, serverda). Pinlar relsda ajratuvçi ostida — fx-rail .fx-rail__pins.

- Qaçon: CRM, röyxat va hisobot sahifalarida — tez-tez oçiladigan körinişni relsga mahkamlaş.
- Qaçon emas: Elementni sevimlilarga qöşiş (karta, mahsulot) → `rating`
- Klaviatura: Enter / Space — Pin qiliş yoki oliş
- Tokenlar: --fx-bg-muted, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-sm, --fx-ease-standard, --fx-fg-warning, --fx-motion-fast, --fx-motion-instant, --fx-motion-press, --fx-radius-circle, --fx-size-icon-md, --fx-text-primary, --fx-text-tertiary

```html
<h2 style="display:flex;align-items:center;gap:var(--fx-space-2);margin:0">Buyurtmalar <button class="fx-pin" type="button" data-fx-pin data-href="/crm?k=buyurtmalar&amp;v=jadval" data-nom="Buyurtmalar · Jadval" aria-pressed="false" aria-label="Relsga pin qiliş" title="Relsga pin qiliş"><svg viewBox="0 0 256 256" aria-hidden="true"><path fill="currentColor" d="M239.18,97.26A16.38,16.38,0,0,0,224.92,86l-59-4.76L143.14,26.15a16.36,16.36,0,0,0-30.27,0L90.11,81.23,31.08,86a16.46,16.46,0,0,0-9.37,28.86l45,38.83L53,211.75a16.38,16.38,0,0,0,24.5,17.82L128,198.49l50.53,31.08A16.4,16.4,0,0,0,203,211.75l-13.76-58.07,45-38.83A16.43,16.43,0,0,0,239.18,97.26Zm-15.34,5.47-48.7,42a8,8,0,0,0-2.56,7.91l14.88,62.8a.37.37,0,0,1-.17.48c-.18.14-.23.11-.38,0l-54.72-33.65a8,8,0,0,0-8.38,0L69.09,215.94c-.15.09-.19.12-.38,0a.37.37,0,0,1-.17-.48l14.88-62.8a8,8,0,0,0-2.56-7.91l-48.7-42c-.12-.1-.23-.19-.13-.5s.18-.27.33-.29l63.92-5.16A8,8,0,0,0,103,91.86l24.62-59.61c.08-.17.11-.25.35-.25s.27.08.35.25L153,91.86a8,8,0,0,0,6.75,4.92l63.92,5.16c.15,0,.24,0,.33.29S224,102.63,223.84,102.73Z"/></svg><svg viewBox="0 0 256 256" aria-hidden="true"><path fill="currentColor" d="M234.29,114.85l-45,38.83L203,211.75a16.4,16.4,0,0,1-24.5,17.82L128,198.49,77.47,229.57A16.4,16.4,0,0,1,53,211.75l13.76-58.07-45-38.83A16.46,16.46,0,0,1,31.08,86l59-4.76,22.76-55.08a16.36,16.36,0,0,1,30.27,0l22.75,55.08,59,4.76a16.46,16.46,0,0,1,9.37,28.86Z"/></svg></button></h2>
```

- Qilmang: Pinni brauzerda (localStorage) saqlamang — har a'zoniki, serverda (qurilmalar örtasida bir xil).
- Qilmang: Tugmani yozuvsiz qoldirmang — aria-label holatga qarab özgaradi.

## Reja / vazifalar navbati (`plan`, beta, 0.23.0 dan)

Agent rejasi: sarlavha, progress «3/7» va qadamlar. Holatlar: bajarildi (✓), joriy (halqa pulsatsiyasi, aria-current="step"), kutmoqda (böş halqa), ötkazib yuborildi (çiziq). <details> bölsa yiğiladi.

- Qaçon: Agent rejasi, bajarilayotgan vazifalar va navbat.
- Qaçon emas: Foydalanuvçi boradigan köp bosqiçli jarayon → `steps`; Vaqt öqidagi hodisalar → `timeline`; Agent bajargan qadamlar izi → `trace`
- Variantlar: data-state=active|done|skipped (standart pending)
- Klaviatura: Enter, Space — Rejani yiğadi/oçadi (<details> bölsa)
- Tokenlar: --fx-bg-brand-solid, --fx-bg-muted, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-duration-pulse, --fx-ease-standard, --fx-fg-success, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-motion-base, --fx-motion-slow, --fx-radius-circle, --fx-radius-overlay, --fx-size-icon-md, --fx-size-icon-sm, --fx-space-1, --fx-space-3, --fx-space-4, --fx-text-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<details class="fx-plan" open>
  <summary class="fx-plan__head"><span class="fx-plan__title">Oktabr hisoboti rejasi</span><span class="fx-plan__count">3/6 <svg data-fx-icon="chev" class="fx-plan__chev" viewBox="0 0 24 24" aria-hidden="true"><path d="M9 6l6 6-6 6"/></svg></span><progress class="fx-plan__bar" max="6" value="3" aria-label="Reja bajarilişi"></progress></summary>
  <ol class="fx-plan__list">
    <li class="fx-plan__item" data-state="done"><span><span class="fx-sr-only">Bajarildi: </span>Mijozlar jadvalini öqiş</span></li>
    <li class="fx-plan__item" data-state="done"><span><span class="fx-sr-only">Bajarildi: </span>Nofaol yozuvlarni topiş</span></li>
    <li class="fx-plan__item" data-state="done"><span><span class="fx-sr-only">Bajarildi: </span>Ruxsat söraş</span></li>
    <li class="fx-plan__item" data-state="active" aria-current="step"><span><span class="fx-sr-only">Hozir bajarilmoqda: </span>Arxivga köçiriş</span></li>
    <li class="fx-plan__item" data-state="pending"><span><span class="fx-sr-only">Kutmoqda: </span>Hisobotni qayta hisoblaş</span></li>
    <li class="fx-plan__item" data-state="skipped"><span><span class="fx-sr-only">Ötkazib yuborildi: </span>Telegramga xabar yuboriş</span></li>
  </ol>
</details>
```

- Qilmang: Holatni faqat rang/ikon bilan bermang — yaşirin söz (fx-sr-only) qöying.
- Qilmang: Bir vaqtda bittadan köp “joriy” qadam belgilamang.
- Qilmang: 7–8 dan köp qadamni yiğilmagan holda körsatmang.

## Popover (`popover`, beta, 0.3.0 dan)

Tugma yonida oçiladigan qatlam: qisqa ma'lumot, kiçik forma, amallar röyxati. Native popover atributi + anchor positioning (qöllanmasa — ekran markazida). Eni köpi bilan 320; ixtiyoriy strelka (data-arrow), ölçam sm/lg, amallar qatori (popconfirm). Kod bilan oçilsa langarni bering: el.showPopover({ source: tugma }). Kengaytma: .fx-popover__head / .fx-popover__foot (çiziqli sarlavha va pastki qism). Moslaşuvçi (4.26): data-fx-adaptive — telefonda (< 640 px) pastki varaqqa aylanadi.

- Qaçon: Tugma yonida qisqa ma'lumot yoki kiçik amal.
- Qaçon emas: Muhim tasdiq → `dialog`
- Variantlar: data-arrow=on; data-size=sm|lg (standart md); data-fx-adaptive=true
- Klaviatura: Esc — Yopadi, fokus tugmaga qaytadi
- Tokenlar: --fx-bg-overlay, --fx-bg-surface, --fx-border-color-default, --fx-border-color-strong, --fx-border-color-surface, --fx-border-width-default, --fx-ease-enter, --fx-ease-exit, --fx-ease-sheet, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-semibold, --fx-motion-base, --fx-motion-exit-fast, --fx-motion-scale-enter, --fx-motion-shift-sm, --fx-motion-slow, --fx-popover-width, --fx-radius-circle, --fx-radius-overlay, --fx-shadow-lg, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-6, --fx-space-8, --fx-text-primary, --fx-text-secondary

```html
<button class="fx-btn" popovertarget="p1">Tafsilot</button>
<div class="fx-popover" id="p1" popover>
  <h3 class="fx-popover__title">Mister Fox</h3>
  <p>Hozir: FoxUI 0.3.0 relizi ustida işlayapti.</p>
</div>
<button class="fx-btn" popovertarget="p2">Izoh bilan</button>
<div class="fx-popover" id="p2" popover data-arrow>
  <h3 class="fx-popover__title">Strelkali qatlam</h3>
  <p class="fx-popover__text">Strelka tugmaga qaraydi — qaysi tugmaniki ekani aniq.</p>
</div>
<button class="fx-btn" data-variant="danger" popovertarget="p3">Öçiriş</button>
<div class="fx-popover" id="p3" popover data-size="sm">
  <p class="fx-popover__text">Mijoz öçirilsinmi?</p>
  <div class="fx-popover__actions">
    <button class="fx-btn" data-size="sm" popovertarget="p3" popovertargetaction="hide">Yöq</button>
    <button class="fx-btn" data-size="sm" data-variant="danger" popovertarget="p3" popovertargetaction="hide">Ha</button>
  </div>
</div>
<div class="fx-popover" popover id="po-b2"><div class="fx-popover__head"><h3 class="fx-popover__title">Bildirişnomalar</h3></div><p class="fx-popover__text">Yangi xabar yöq.</p><div class="fx-popover__foot">Oxirgi tekşiruv: hozir</div></div>
<!-- Moslashuvchi (4.26): telefonda pastki varaq -->
<button class="fx-btn" popovertarget="pop-adapt">Filtr: holat</button>
<div class="fx-popover" id="pop-adapt" popover data-fx-adaptive>
  <p class="fx-popover__title">Holat böyiça</p>
  <p class="fx-popover__text">Telefonda bu oyna pastdan çiqadi, kompyuterda — tugma ostida.</p>
  <div class="fx-popover__actions"><button class="fx-btn" data-size="sm" popovertarget="pop-adapt" popovertargetaction="hide">Yopiş</button></div>
</div>
```

- Qilmang: Popconfirm: tugma yonida qisqa tasdiq (.fx-popover__actions içida «Bekor» + «Ha»); xavfli, qaytmas amal uçun dialog.
- Qilmang: Popover içiga uzun forma yoki jadval qöymang — buning uçun dialog yoki varaq.
- Qilmang: Faqat hover bilan oçilmasin — tugma bosilganda (va klaviaturada) oçilişi şart.

## Hozir kim bor (`presence`, beta, 0.24.0 dan)

Hamkorlik belgilari: sahifada hozir kimlar borligini körsatuvçi ustma-ust avatarlar (hover/fokusda ism va holat), “yozmoqda” indikatori va jonli kursor yorliği. Faqat köriniş — ma'lumotni (kim, qayerda, nima qilyapti) ilova real vaqtda yangilaydi.

- Qaçon: Birgalikda tahrirlaş, jonli hujjat, çat: kim bor va kim yozmoqda.
- Qaçon emas: Oddiy avatarlar guruhi → `avatar`
- Variantlar: data-color=yellow|pink|coral|green|purple (standart blue)
- Klaviatura: Tab — Iştirokçiga fokus — şarh çiqadi
- Tokenlar: --fx-bg-category-blue, --fx-bg-category-coral, --fx-bg-category-green, --fx-bg-category-pink, --fx-bg-category-purple, --fx-bg-category-yellow, --fx-bg-surface, --fx-border-color-focus, --fx-border-width-focus, --fx-duration-pulse, --fx-ease-enter, --fx-ease-exit, --fx-ease-standard, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-semibold, --fx-motion-base, --fx-motion-fast, --fx-motion-shift-sm, --fx-popover-width, --fx-radius-circle, --fx-radius-control, --fx-radius-nav, --fx-size-icon-md, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-text-on-category, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<div class="fx-presence" role="group" aria-label="Hozir şu hujjatda">
  <ul class="fx-presence__list">
    <li class="fx-presence__user" tabindex="0" aria-label="Guli, tahrirlayapti">
      <span class="fx-avatar" data-color="yellow" data-status="active" aria-hidden="true">GU</span>
      <span class="fx-presence__tip" aria-hidden="true"><b>Guli</b> tahrirlayapti</span>
    </li>
    <li class="fx-presence__user" tabindex="0" aria-label="Mister Fox, köryapti">
      <span class="fx-avatar" data-color="purple" aria-hidden="true">MF</span>
      <span class="fx-presence__tip" aria-hidden="true"><b>Mister Fox</b> köryapti</span>
    </li>
    <li class="fx-presence__user" tabindex="0" aria-label="Tadqiqotçi, köryapti">
      <span class="fx-avatar" data-color="green" aria-hidden="true">TQ</span>
      <span class="fx-presence__tip" aria-hidden="true"><b>Tadqiqotçi</b> köryapti</span>
    </li>
  </ul>
  <span class="fx-presence__label">3 kişi bor</span>
</div>
<p class="fx-presence__typing" role="status"><span class="fx-presence__dots" aria-hidden="true"><i></i><i></i><i></i></span>Guli yozmoqda…</p>
<div style="position: relative; block-size: 5rem;">
  <span class="fx-presence__cursor" data-color="pink" style="--x: 30%; --y: 20%"><span class="fx-presence__flag">Mister Fox</span></span>
</div>
```

- Qilmang: Odamlarning joylaşuvini rang bilan yolğiz bildirmang — ism va holat matni (aria-label, şarh) şart.
- Qilmang: 10 dan köp avatarni qatorga qöymang — oxirgisini `data-more` “+N” avatariga aylantiring.
- Qilmang: Kursorni 60 marta/soniya DOM'da yangilamang — ilova tomonda throttle (~30 ms) qiling.

## Narx jadvali (`pricing`, beta, 0.28.0 dan)

Obuna narxlari bölimi (4.169, #56) — FoxUI obunasining özi uçun ham: sarlavha, oylik/yillik almaştirgiç (radio guruh, JS'siz — narxlar [data-period] böyiça almaşadi, plita prujina bilan sirpanadi), tarif kartalari (nom, izoh, narx, CTA, ✓/— imkoniyatlar), tavsiya tarif (data-featured: brend çegarasi, «Eng ommabop» belgisi, data-fx="beam" bilan çegara nuri), şartlar qatori (1 litsenziya = 1 kişi, 3 qurilma; lifetime yöq) va taqqoslaş jadvali (fx-table). Narx hali belgilanmagan bölsa — .fx-pricing__amount[data-soon] («Narx — tez kunda»).

- Qaçon: Obuna yoki tarifli mahsulotning narx sahifasi va landing bölimi. Tariflar orasidagi farqni jadval bilan körsatiş.
- Qaçon emas: Kabinetdagi joriy tarif va hisob-fakturalar → `plan`; Bitta mahsulot narxi → `stat`
- Variantlar: data-period=month|year (standart month); data-featured=on (standart off)
- Klaviatura: ← → — Oylik va yillik orasida; Tab — Davr tanlagiçidan tarif tugmalariga
- Tokenlar: --fx-bg-brand-solid, --fx-bg-muted, --fx-bg-success-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-strong, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-sm, --fx-dialog-width, --fx-ease-spring, --fx-ease-standard, --fx-fg-success, --fx-font-adjust-display, --fx-font-family-display, --fx-font-size-display-sm, --fx-font-size-lg, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xl, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-motion-fast, --fx-motion-slow, --fx-popover-width, --fx-radius-badge, --fx-radius-circle, --fx-radius-control, --fx-radius-overlay, --fx-shadow-lg, --fx-shadow-sm, --fx-size-icon-md, --fx-space-1, --fx-space-10, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-space-6, --fx-text-brand, --fx-text-disabled, --fx-text-on-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<section class="fx-pricing" aria-labelledby="pr-t" data-fx-effects>
  <header class="fx-pricing__head">
    <p class="fx-pricing__eyebrow">Narxlar</p>
    <h2 class="fx-pricing__title" id="pr-t">Bitta obuna — hamma loyihangizga</h2>
    <p class="fx-pricing__text">Oylik yoki yillik tölaysiz. Obuna tugasa ham yuklab olingan versiyalar sizda qoladi.</p>
    <fieldset class="fx-pricing__toggle"><legend class="fx-sr-only">Tölov davri</legend><label class="fx-pricing__period"><input type="radio" name="pr-davr" value="month" checked>Oylik</label><label class="fx-pricing__period"><input type="radio" name="pr-davr" value="year">Yillik <span class="fx-pricing__save">tejamkor</span></label></fieldset>
  </header>
  <ul class="fx-pricing__plans">
    <li class="fx-pricing__plan">
      <div class="fx-pricing__top"><h3 class="fx-pricing__name">Oçiq yadro</h3><p class="fx-pricing__desc">Boşlaş va sinab köriş uçun — npm'dagi bepul paket.</p></div>
      <p class="fx-pricing__price"><span data-period="month"><strong class="fx-pricing__amount">0 söm</strong><span class="fx-pricing__per">doim bepul</span></span><span data-period="year"><strong class="fx-pricing__amount">0 söm</strong><span class="fx-pricing__per">doim bepul</span></span></p>
      <a class="fx-btn fx-pricing__cta" href="#">npm'dan örnatiş</a>
      <ul class="fx-pricing__features"><li>Tokenlar va asosiy komponentlar</li><li>CLI: init, add, check</li><li>Kontrast va ʻ qöriqçisi</li><li data-off>MCP orqali AI agent</li><li data-off>Yangilaniş taklifi va yangi bloklar</li></ul>
    </li>
    <li class="fx-pricing__plan" data-featured data-fx="beam">
      <div class="fx-pricing__top"><h3 class="fx-pricing__name">Pro<span class="fx-pricing__badge">Eng ommabop</span></h3><p class="fx-pricing__desc">Bitta mutaxassis uçun — hamma komponent, naqş va AI agent.</p></div>
      <p class="fx-pricing__price"><span data-period="month"><strong class="fx-pricing__amount" data-soon>Narx — tez kunda</strong><span class="fx-pricing__per">/ oy</span></span><span data-period="year"><strong class="fx-pricing__amount" data-soon>Narx — tez kunda</strong><span class="fx-pricing__per">/ yil</span><span class="fx-pricing__sub">Yillik tölovda oylikdan arzonroq</span></span></p>
      <a class="fx-btn fx-pricing__cta" data-variant="primary" href="#">Röyxatga yoziliş</a>
      <ul class="fx-pricing__features"><li>Oçiq yadrodagi hammasi</li><li>Hamma komponent va marketing naqşlari</li><li>MCP orqali AI agent</li><li>npx foxui update — yangilaniş taklifi</li><li>Komponent sörovi — 1 haftada</li></ul>
    </li>
    <li class="fx-pricing__plan">
      <div class="fx-pricing__top"><h3 class="fx-pricing__name">Jamoa</h3><p class="fx-pricing__desc">Studiya va jamoalar uçun — bir neçta litsenziya, bitta hisob.</p></div>
      <p class="fx-pricing__price"><span data-period="month"><strong class="fx-pricing__amount" data-soon>Narx — tez kunda</strong><span class="fx-pricing__per">/ oy, har kişi</span></span><span data-period="year"><strong class="fx-pricing__amount" data-soon>Narx — tez kunda</strong><span class="fx-pricing__per">/ yil, har kişi</span></span></p>
      <a class="fx-btn fx-pricing__cta" href="#">Biz bilan boğlaning</a>
      <ul class="fx-pricing__features"><li>Pro tarifidagi hammasi</li><li>Litsenziyalarni boşqariş</li><li>Umumiy hisob-kitob</li><li>Ustuvor yordam</li></ul>
    </li>
  </ul>
  <ul class="fx-pricing__note"><li>1 litsenziya = 1 kişi, 3 qurilma</li><li>Umrbod (lifetime) litsenziya yöq</li><li>Obuna tugasa ham yuklab olinganlar sizda qoladi</li></ul>
  <table class="fx-table fx-pricing__compare"><caption class="fx-sr-only">Tariflarni taqqoslaş</caption><thead><tr><th scope="col">Imkoniyat</th><th scope="col">Oçiq yadro</th><th scope="col">Pro</th><th scope="col">Jamoa</th></tr></thead><tbody><tr><th scope="row">Komponentlar</th><td>asosiy</td><td>hammasi</td><td>hammasi</td></tr><tr><th scope="row">MCP orqali AI agent</th><td><span class="fx-pricing__no" aria-hidden="true">—</span><span class="fx-sr-only">yöq</span></td><td><span class="fx-pricing__yes" aria-hidden="true">✓</span><span class="fx-sr-only">bor</span></td><td><span class="fx-pricing__yes" aria-hidden="true">✓</span><span class="fx-sr-only">bor</span></td></tr><tr><th scope="row">Yangilaniş taklifi</th><td><span class="fx-pricing__no" aria-hidden="true">—</span><span class="fx-sr-only">yöq</span></td><td><span class="fx-pricing__yes" aria-hidden="true">✓</span><span class="fx-sr-only">bor</span></td><td><span class="fx-pricing__yes" aria-hidden="true">✓</span><span class="fx-sr-only">bor</span></td></tr><tr><th scope="row">Komponent sörovi</th><td><span class="fx-pricing__no" aria-hidden="true">—</span><span class="fx-sr-only">yöq</span></td><td>1 hafta</td><td>1 hafta, ustuvor</td></tr><tr><th scope="row">Qurilmalar</th><td>çeksiz</td><td>3</td><td>har kişiga 3</td></tr></tbody></table>
</section>
```

- Qilmang: Uçtadan ortiq tarif körsatmang — tanlaş qiyinlaşadi.
- Qilmang: Yillik narxni oylikka bölib, «/ oy» deb aldamang — davr aniq yozilsin.
- Qilmang: Tavsiya tarifni faqat rang bilan ajratmang — «Eng ommabop» sözi ham bölsin.
- Qilmang: Narx belgilanmagan bölsa, öylab topilgan raqam qöymang — «Narx — tez kunda».

## Bosma qatlami (`print`, beta, 0.29.0 dan)

Çop etiş (Ctrl+P) uçun global qatlam (4.14): navigatsiya, tugmalar, toast va suzuvçi oynalar yaşirinadi, ilova karkasi bitta ustunga yoyiladi, soyalar öçadi, jadval sarlavhasi har betda takrorlanadi, qator va kartalar betda bölinmaydi. data-print bilan boşqariladi: hide · only (faqat bosmada) · break-before / break-after (yangi bet) · avoid · urls (taşqi havola manzili qavsda). .fx-print — bosmaga tayyor hujjat örami (hisob-faktura, dalolatnoma, hisobot): sarlavha, rekvizitlar, amallar (bosmada yaşirin) va yakun.

- Qaçon: Hisob-faktura, dalolatnoma, hisobot, buyurtma varaqasi — foydalanuvçi çop etadi yoki PDF saqlaydi. Har qanday ilova sahifasi: global qatlam navigatsiyani özi yaşiradi, qöşimça iş şart emas.
- Qaçon emas: Ekranda çiroyli hujjat matni (maqola) → `prose`; Faylni serverda PDF qilib yuboriş → `share`
- Variantlar: data-print=none|hide|only|show|break-before|break-after|avoid|urls (standart none)
- Tokenlar: --fx-bg-surface, --fx-border-color-default, --fx-border-color-surface, --fx-border-width-default, --fx-font-size-sm, --fx-font-size-xl, --fx-font-size-xs, --fx-font-weight-bold, --fx-popover-width, --fx-radius-surface, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-space-8, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<article class="fx-print" aria-labelledby="hf-t">
  <header class="fx-print__head">
    <div>
      <h1 class="fx-print__title" id="hf-t">Hisob-faktura № 2026-0412</h1>
      <p class="fx-print__meta">18 oktyabr 2026 · Tölov muddati: 25 oktyabr 2026</p>
    </div>
    <div class="fx-print__actions">
      <button class="fx-btn" data-variant="outline" type="button">PDF yuklab oliş</button>
      <button class="fx-btn" data-variant="primary" type="button" onclick="print()">Çop etiş</button>
    </div>
  </header>
  <dl class="fx-dl" data-print="avoid">
    <dt>Sotuvçi</dt><dd>«Çorsu Savdo» MChJ, STIR 305 112 448</dd>
    <dt>Xaridor</dt><dd>«Ğallaorol Agro» fermer xöjaligi</dd>
  </dl>
  <table class="fx-table">
    <thead><tr><th>Xizmat</th><th>Soni</th><th>Narxi</th><th>Jami</th></tr></thead>
    <tbody>
      <tr><td>CRM obunasi (oylik)</td><td>5 kişi</td><td>120 000 söm</td><td>600 000 söm</td></tr>
      <tr><td>Ma'lumot köçiriş</td><td>1 marta</td><td>450 000 söm</td><td>450 000 söm</td></tr>
    </tbody>
    <tfoot><tr><th colspan="3">Jami</th><th>1 050 000 söm</th></tr></tfoot>
  </table>
  <p data-print="urls">Tölov tartibi: <a href="https://misol.uz/tolov">tölov sahifasi</a>.</p>
  <p data-print="only">Rahbar: ____________ Dilnoza Rahimova  ·  M.Ö.</p>
  <footer class="fx-print__foot"><span>Savollar: +998 90 123 45 67</span><span>1 / 1</span></footer>
</article>
```

- Qilmang: Bosmada muhim ma'lumotni tugma içida qoldirmang — tugmalar yaşirinadi (zarur bölsa data-print="show").
- Qilmang: Har bloka break-before qöymang — faqat mantiqiy yangi bölim (yangi hujjat, ilova) uçun.
- Qilmang: Rangga tayanadigan holatni bosmaga çiqarmang — oq-qora printerda yöqoladi; yonida matn bölsin.

## Ustuvorlik (`prio`, beta, 0.22.0 dan)

Işning ustuvorligi: 3 ta ösib boruvçi ustunça — past, örta, yuqori; şoşilinç — xavf rangida; yöq — xira. Doim söz bilan (aria-label yoki yonida matn). Belgi varianti data-variant="mark" (Ustoz Figma maketi, 21.10): Jira kabi 10 daraja — trivial, lowest/lower/low (moviy chevronlar pastga), minor, high/higher/highest (qizil yuqoriga), critical, blocker. Yorliq .fx-prio-tag: pastel kapsula, oq doirada belgi — urgent ★, high ✦, normal ▲, low ○.

- Qaçon: Vazifa, murojaat, xato röyxatlarida ustuvorlik.
- Qaçon emas: Umumiy holat (tölangan, kutilmoqda) → `status`
- Variantlar: data-level=0|1|2|3|urgent|trivial|lowest|lower|low|minor|high|higher|highest|critical|blocker (standart 0); data-size=md|lg (standart md); data-variant=bars|mark (standart bars)
- Tokenlar: --fx-bg-error-subtle, --fx-bg-info-subtle, --fx-bg-muted, --fx-bg-surface, --fx-bg-warning-subtle, --fx-border-width-default, --fx-control-h-sm, --fx-fg-error, --fx-fg-info, --fx-fg-warning, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-radius-badge, --fx-radius-circle, --fx-radius-pill, --fx-size-icon-md, --fx-size-icon-sm, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-6, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<span class="fx-prio" data-level="0" role="img" aria-label="Ustuvorlik yöq"><i></i></span>
<span class="fx-prio" data-level="1" role="img" aria-label="Past"><i></i></span>
<span class="fx-prio" data-level="2" role="img" aria-label="Örta"><i></i></span>
<span class="fx-prio" data-level="3" role="img" aria-label="Yuqori"><i></i></span>
<span class="fx-prio" data-level="urgent" role="img" aria-label="Şoşilinç"><i></i></span>
<div style="inline-size:100%;display:grid;grid-template-columns:repeat(auto-fill,minmax(9rem,1fr));gap:var(--fx-space-3) var(--fx-space-5);align-items:center"><span style="display:inline-flex;align-items:center;gap:var(--fx-space-2)"><span class="fx-prio" data-variant="mark" data-level="trivial" aria-hidden="true"></span>Ahamiyatsiz</span><span style="display:inline-flex;align-items:center;gap:var(--fx-space-2)"><span class="fx-prio" data-variant="mark" data-level="lowest" aria-hidden="true"></span>Eng past</span><span style="display:inline-flex;align-items:center;gap:var(--fx-space-2)"><span class="fx-prio" data-variant="mark" data-level="lower" aria-hidden="true"></span>Pastroq</span><span style="display:inline-flex;align-items:center;gap:var(--fx-space-2)"><span class="fx-prio" data-variant="mark" data-level="low" aria-hidden="true"></span>Past</span><span style="display:inline-flex;align-items:center;gap:var(--fx-space-2)"><span class="fx-prio" data-variant="mark" data-level="minor" aria-hidden="true"></span>Kiçik</span><span style="display:inline-flex;align-items:center;gap:var(--fx-space-2)"><span class="fx-prio" data-variant="mark" data-level="high" aria-hidden="true"></span>Yuqori</span><span style="display:inline-flex;align-items:center;gap:var(--fx-space-2)"><span class="fx-prio" data-variant="mark" data-level="higher" aria-hidden="true"></span>Yuqoriroq</span><span style="display:inline-flex;align-items:center;gap:var(--fx-space-2)"><span class="fx-prio" data-variant="mark" data-level="highest" aria-hidden="true"></span>Eng yuqori</span><span style="display:inline-flex;align-items:center;gap:var(--fx-space-2)"><span class="fx-prio" data-variant="mark" data-level="critical" aria-hidden="true"></span>Jiddiy</span><span style="display:inline-flex;align-items:center;gap:var(--fx-space-2)"><span class="fx-prio" data-variant="mark" data-level="blocker" aria-hidden="true"></span>Tösiq</span></div>
<div style="inline-size:100%;display:flex;flex-wrap:wrap;gap:var(--fx-space-2)"><span class="fx-prio-tag" data-level="urgent">1 · Şoşilinç</span><span class="fx-prio-tag" data-level="high">2 · Yuqori</span><span class="fx-prio-tag" data-level="normal">3 · Oddiy</span><span class="fx-prio-tag" data-level="low">4 · Past</span></div>
```

- Qilmang: Ustuvorlikni faqat rang bilan bildirmang — ustunça soni ham özgaradi.

## Progress (`progress`, beta, 0.2.0 dan)

Çiziqli ölçagiç, balandligi 8. Qiymat CSS özgaruvçisida: style="--fx-progress-value: 40%". Rang: standart (brend), data-tone success/warning/error yoki data-color (toifa rangi). Qiymat noma'lum bölsa (aria-valuenow yöq) — bölak trekda sirpanadi. Ölçamlar xs/sm/lg; yorliq + qiymat qatori (.fx-progress-row); köp bölakli (data-variant="stacked", .fx-progress__seg — rol bilan). Aylana (data-shape="circle"): halqa, markazda foiz yoki ikon; aniq va noaniq holat; uç ölçam. Tölqinli variant (4.42, M3 Expressive): data-variant="wavy" — tölgan qism tölqinsimon çiziq, qolgan yöl tekis trek (oraliğida böşliq); 100 %da tölqin tinçlanadi. Aylana bilan (data-shape="circle") — halqaning özi tölqinsimon. Aniq qiymatda tölqin statik, noaniq holatda bölak sirpanadi. Aniq qiymatda trek tölgan qismdan kiçik böşliq bilan boşlanadi va öng uçida tugaş nuqtasi turadi (M3 stop indicator) — iş qayerda tugaşi körinadi; 100 % da yöqoladi.

- Qaçon: Jarayon yoki uluş foizini körsatiş.
- Qaçon emas: Foiz halqasi (donut) → `progress`
- Variantlar: data-tone=brand|success|warning|error (standart brand); data-color=yellow|pink|blue|coral|green|purple; data-size=xs|sm|md|lg (standart md); data-variant=single|stacked|wavy (standart single); data-role=brand|ink|accent|risk|context (standart brand); data-shape=line|circle (standart line)
- Tokenlar: --fx-bg-brand-solid, --fx-bg-category-blue, --fx-bg-category-coral, --fx-bg-category-green, --fx-bg-category-pink, --fx-bg-category-purple, --fx-bg-category-yellow, --fx-bg-muted, --fx-bg-surface, --fx-border-width-focus, --fx-control-h-lg, --fx-control-h-sm, --fx-duration-indeterminate, --fx-duration-pulse, --fx-duration-spin, --fx-ease-standard, --fx-fg-error, --fx-fg-success, --fx-fg-warning, --fx-font-size-lg, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-knob-motion-loop, --fx-motion-base, --fx-radius-circle, --fx-radius-pill, --fx-size-icon-md, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary, --fx-viz-accent, --fx-viz-brand, --fx-viz-context, --fx-viz-ink, --fx-viz-risk

```html
<div class="fx-progress" role="progressbar" aria-label="Kredit sarfi" aria-valuenow="42" aria-valuemin="0" aria-valuemax="100" style="--fx-progress-value: 42%"></div>
<div class="fx-progress" data-tone="warning" role="progressbar" aria-label="Disk" aria-valuenow="81" aria-valuemin="0" aria-valuemax="100" style="--fx-progress-value: 81%"></div>
<div class="fx-progress" data-color="purple" role="progressbar" aria-label="Vazifa" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="--fx-progress-value: 60%"></div>
<div class="fx-progress" role="progressbar" aria-label="Yuklanmoqda"></div>

<!-- Yorliq + qiymat -->
<div class="fx-progress-row">
  <div class="fx-progress-row__head"><span class="fx-progress-row__label" id="pr1">Oylik reja</span><span class="fx-progress-row__value">64 %</span></div>
  <div class="fx-progress" data-size="sm" role="progressbar" aria-labelledby="pr1" aria-valuenow="64" aria-valuemin="0" aria-valuemax="100" style="--fx-progress-value: 64%"></div>
  <span class="fx-progress-row__hint">128 mln / 200 mln söm</span>
</div>

<!-- Koʻp boʻlakli: disk -->
<div class="fx-progress" data-variant="stacked" data-size="lg" role="img" aria-label="Disk 100 GB dan 72 GB band: rasmlar 40, video 24, boşqa 8">
  <span class="fx-progress__seg" data-role="ink" style="--fx-progress-value: 40%"></span>
  <span class="fx-progress__seg" data-role="accent" style="--fx-progress-value: 24%"></span>
  <span class="fx-progress__seg" data-role="context" style="--fx-progress-value: 8%"></span>
</div>

<!-- Aylana (4.114) -->
<div class="fx-progress" data-shape="circle" role="progressbar" aria-label="Profil töldirilgan" aria-valuenow="72" aria-valuemin="0" aria-valuemax="100" style="--fx-progress-value: 72%"><span class="fx-progress__label">72%</span></div>
<div class="fx-progress" data-shape="circle" data-size="lg" data-tone="success" role="progressbar" aria-label="Oylik reja bajarildi" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100" style="--fx-progress-value: 100%"><span class="fx-progress__label">100%</span></div>
<div class="fx-progress" data-shape="circle" data-size="sm" data-tone="warning" role="progressbar" aria-label="Disk" aria-valuenow="88" aria-valuemin="0" aria-valuemax="100" style="--fx-progress-value: 88%"></div>
<div class="fx-progress" data-shape="circle" role="progressbar" aria-label="Fayl yuklanmoqda"><span class="fx-progress__label"><svg viewBox="0 0 256 256" aria-hidden="true"><path d="M128 40v120m-48-72 48-48 48 48M48 200h160" fill="none" stroke="currentColor" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/></svg></span></div>
<div class="fx-progress-row" style="max-inline-size:24rem;margin-block-start:var(--fx-space-4)"><div class="fx-progress-row__head"><span class="fx-progress-row__label">Mijozlar bazasi import qilinmoqda</span><span class="fx-progress-row__value">64 %</span></div><div class="fx-progress" data-variant="wavy" role="progressbar" aria-label="Import" aria-valuenow="64" aria-valuemin="0" aria-valuemax="100" style="--fx-progress-value: 64%"></div></div>
<div class="fx-progress" data-variant="wavy" data-tone="success" role="progressbar" aria-label="Zaxira nusxa tayyor" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100" style="--fx-progress-value: 100%;max-inline-size:24rem;margin-block-start:var(--fx-space-3)"></div>
<div class="fx-progress" data-variant="wavy" role="progressbar" aria-label="Hisobot tayyorlanmoqda" style="max-inline-size:24rem;margin-block-start:var(--fx-space-3)"></div>
<div class="fx-progress" data-shape="circle" data-variant="wavy" data-size="lg" role="progressbar" aria-label="Profil töldirilgan" aria-valuenow="72" aria-valuemin="0" aria-valuemax="100" style="--fx-progress-value: 72%;margin-block-start:var(--fx-space-4)"><span class="fx-progress__label">72 %</span></div>
```

- Qilmang: Dashboard grafigida foizni halqa bilan körsatmang — çiziqli ölçagiç (WDS «Grafiklar»); aylana (data-shape="circle") faqat ixçam joyda jarayon yoki bitta kvota uçun.
- Qilmang: Qiymatni faqat çiziq bilan bermang — yonida raqam bölsin.
- Qilmang: Köp bölakli çiziqda bölaklar yiğindisi 100 % dan oşmasin; har bölakni legendada (fx-legend) nomlang.
- Qilmang: Ikki bölakdan köp rolga tayanib, rang yolğiz belgi bölmasin — yonida son yoki legenda.

## Uzun matn (prose) (`prose`, beta, 0.22.0 dan)

CMS yoki Markdown'dan kelgan HTML'ga oraliq va uslub beradi: sarlavhalar, abzaslar, röyxatlar, iqtibos, kod, jadval, rasm, çiziq. Öqiş eni ~65 belgi; sm/md/lg.

- Qaçon: Maqola, hujjat, yangiliklar, CMS'dan kelgan matn. Matn içida FoxUI komponenti (karta, changelog, jadval) — matn uslubi unga yetmaydi, öz oraliği va ölçamini saqlaydi. Oddiy teglardan iborat blokni ham matn uslubidan çiqariş — .fx-not-prose.
- Qaçon emas: Interfeys matni, yorliq, izoh → `text`; Sahifa bölimi sarlavhasi → `heading`
- Variantlar: data-size=sm|md|lg (standart md); data-width=measure|full (standart measure)
- Tokenlar: --fx-bg-muted, --fx-bg-subtle, --fx-bg-warning-subtle, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-strong, --fx-border-width-default, --fx-border-width-focus, --fx-font-adjust-display, --fx-font-adjust-mono, --fx-font-family-display, --fx-font-family-mono, --fx-font-size-display-sm, --fx-font-size-lg, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xl, --fx-font-weight-semibold, --fx-radius-badge, --fx-radius-control, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-space-6, --fx-text-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<article class="fx-prose">
  <h2>Obuna qanday işlaydi</h2>
  <p>FoxUI'ni <strong>bir marta örnatasiz</strong>, yangilanişlar esa <code>npx foxui update</code> bilan keladi. <a href="#">Batafsil</a>.</p>
  <ul><li>Yuklab olingan versiya abadiy qoladi</li><li>Yangilaniş va MCP — obuna davomida</li></ul>
  <blockquote>Tizim bir joyda özgarsa, hamma joyda yangilanadi.</blockquote>
  <h3>Narxlar</h3>
  <table><thead><tr><th>Reja</th><th>Narx</th></tr></thead><tbody><tr><td>Oylik</td><td>19 $</td></tr><tr><td>Yillik</td><td>190 $</td></tr></tbody></table>
  <hr>
  <p>Savol bölsa yozing.</p>
</article>
```

- Qilmang: Interfeys elementlarini (forma, tugma panellari) fx-prose içiga qöymang — faqat oqib boruvçi matn uçun.
- Qilmang: Enni 65 belgidan kengaytirmang, agar matn uzun bölsa (data-width="full" faqat jadval/rasm uçun).

## QR kod (`qr`, beta, 0.28.0 dan)

Boğliqliksiz QR kod (4.143): matn yoki havola SVG içida çiziladi — öz kodlovçisi (bayt rejimi, UTF-8, xato tuzatiş M, 213 baytgaça), eng yaxşi niqob avtomatik. Doim yoruğ fonda qoronği modullar; markazda ixtiyoriy logo; holatlar: eskirgan (xira + «Yangilaş»), yuklanmoqda, xato. Tölov havolasi, Telegram bot, ilovaga kiriş uçun.

- Qaçon: Telefon bilan skanerlanadigan havola: tölov, Telegram bot, ilovaga kiriş, Wi-Fi.
- Qaçon emas: Kompyuterda bosiladigan havola → `link`; Nusxa olinadigan kod yoki kalit → `copy`
- Variantlar: data-size=sm|md|lg (standart md); data-state=expired|loading|error
- Klaviatura: Tab, Enter — Eskirgan holatda «Yangilaş» tugmasi
- Tokenlar: --fx-bg-muted, --fx-bg-static-light, --fx-border-color-surface, --fx-border-width-default, --fx-control-h-lg, --fx-duration-pulse, --fx-ease-standard, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-motion-base, --fx-radius-badge, --fx-radius-surface, --fx-space-1, --fx-space-2, --fx-space-3, --fx-text-on-static-light, --fx-text-secondary

```html
<figure class="fx-qr" data-fx-qr data-value="https://foxui.dev/tolov/214" data-label="Tölov havolasi QR kodi: buyurtma №214">
  <div class="fx-qr__code"><span class="fx-qr__logo" aria-hidden="true"><svg viewBox="0 0 24 24"><rect x="3" y="3" width="18" height="18" rx="6" fill="currentColor"/></svg></span></div>
  <figcaption class="fx-qr__caption">Buyurtma №214 · 1 200 000 söm</figcaption>
</figure>
<figure class="fx-qr" data-fx-qr data-size="sm" data-state="expired" data-value="https://t.me/foxui_bot?start=kirish-8841">
  <div class="fx-qr__code"><div class="fx-qr__overlay"><span>QR eskirdi</span><button class="fx-btn" data-size="sm" type="button" data-qr-refresh>Yangilaş</button></div></div>
  <figcaption class="fx-qr__caption">Telegram orqali kiriş</figcaption>
</figure>
```

- Qilmang: Kodni qoronği fonda yoruğ modullar bilan bermang — skanerlar yomon öqiydi; komponent fonni özi yoruğ qiladi.
- Qilmang: Logoni 20 % endan katta qilmang — xato tuzatiş (M) kötara olmaydi.
- Qilmang: 213 baytdan uzun matn bermang — qisqa havola işlating.
- Qilmang: QRni yagona yöl qilmang — yonida havola yoki kodni matn bilan bering.

## AI savolnoma (`questionnaire`, beta, 0.28.0 dan)

AI agent vazifani aniqlaştiriş uçun variantli savollarni bittadan söraydi: raqamli variantlar (klaviaturada 1–9), köp tanlovli savol, «Boşqa» bilan erkin javob, «Ötkazib yuboriş», jarayon çiziği va «2 / 3». Oxirida javoblar xulosasi çiqadi va agentga hodisa ketadi.

- Qaçon: AI yordamçi vazifani bajarişdan oldin 2–5 ta aniqlaştiruvçi savol bersa. Çat içidagi qisqa sörovnoma yoki onboarding savollari.
- Qaçon emas: Köp maydonli, ma'lumot kiritiladigan forma → `wizard`; Agentning bitta amalini tasdiqlaş → `approval`
- Variantlar: data-state=done (standart —)
- Klaviatura: 1–9 — Şu raqamli variantni tanlaydi (köp tanlovda — almaştiradi); ← → ↑ ↓ — Variantlar orasida (native radio); Space — Fokusdagi variantni belgilaydi; Enter — Keyingi savol / yuboriş
- Tokenlar: --fx-bg-brand-solid, --fx-bg-brand-subtle, --fx-bg-muted, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-strong, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-sm, --fx-dialog-width, --fx-ease-enter, --fx-ease-standard, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-regular, --fx-font-weight-semibold, --fx-motion-base, --fx-motion-fast, --fx-motion-instant, --fx-motion-press, --fx-radius-circle, --fx-radius-control, --fx-radius-surface, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-text-on-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<div class="fx-questionnaire" data-fx-questionnaire aria-label="Hisobot uçun savollar">
  <div class="fx-questionnaire__head"><span class="fx-questionnaire__agent"><span class="fx-avatar" data-size="sm" data-color="purple" aria-hidden="true">AI</span>Yordamçi hisobot tayyorlaşdan oldin söraydi</span><span class="fx-questionnaire__progress" aria-live="polite"></span></div>
  <form class="fx-questionnaire__form">
    <fieldset class="fx-questionnaire__step"><legend class="fx-questionnaire__q">Hisobot qaysi davr uçun kerak?</legend><p class="fx-questionnaire__hint">Bittasini tanlang</p><div class="fx-questionnaire__options"><label class="fx-questionnaire__option"><input type="radio" name="davr" value="oy"><span class="fx-questionnaire__key" aria-hidden="true">1</span><span class="fx-questionnaire__label">Şu oy</span><span class="fx-questionnaire__desc">1–18 oktabr</span></label><label class="fx-questionnaire__option"><input type="radio" name="davr" value="chorak"><span class="fx-questionnaire__key" aria-hidden="true">2</span><span class="fx-questionnaire__label">Joriy çorak</span><span class="fx-questionnaire__desc">Iyul – sentabr</span></label><label class="fx-questionnaire__option"><input type="radio" name="davr" value="yil"><span class="fx-questionnaire__key" aria-hidden="true">3</span><span class="fx-questionnaire__label">2026 yil boşidan</span></label><label class="fx-questionnaire__option" data-other><input type="radio" name="davr" value="boshqa"><span class="fx-questionnaire__key" aria-hidden="true">4</span><span class="fx-questionnaire__label">Boşqa davr</span><input class="fx-input fx-questionnaire__other" data-size="sm" aria-label="Boşqa javob" placeholder="Özingiz yozing"></label></div></fieldset>
    <fieldset class="fx-questionnaire__step" hidden><legend class="fx-questionnaire__q">Qaysi kesimlarda körsatay?</legend><p class="fx-questionnaire__hint">Bir neçtasini tanlaş mumkin</p><div class="fx-questionnaire__options"><label class="fx-questionnaire__option"><input type="checkbox" name="kesim" value="menejer"><span class="fx-questionnaire__key" aria-hidden="true">1</span><span class="fx-questionnaire__label">Menejerlar böyiça</span></label><label class="fx-questionnaire__option"><input type="checkbox" name="kesim" value="manba"><span class="fx-questionnaire__key" aria-hidden="true">2</span><span class="fx-questionnaire__label">Mijoz manbai</span><span class="fx-questionnaire__desc">Sayt, Telegram, Instagram, tavsiya</span></label><label class="fx-questionnaire__option"><input type="checkbox" name="kesim" value="filial"><span class="fx-questionnaire__key" aria-hidden="true">3</span><span class="fx-questionnaire__label">Filiallar böyiça</span></label><label class="fx-questionnaire__option"><input type="checkbox" name="kesim" value="mahsulot"><span class="fx-questionnaire__key" aria-hidden="true">4</span><span class="fx-questionnaire__label">Mahsulot turlari</span></label></div></fieldset>
    <fieldset class="fx-questionnaire__step" data-optional hidden><legend class="fx-questionnaire__q">Natijani qanday körinişda beray?</legend><p class="fx-questionnaire__hint">Ixtiyoriy — tanlamasangiz, qisqa xulosa</p><div class="fx-questionnaire__options"><label class="fx-questionnaire__option"><input type="radio" name="format" value="jadval"><span class="fx-questionnaire__key" aria-hidden="true">1</span><span class="fx-questionnaire__label">Jadval (Excel)</span></label><label class="fx-questionnaire__option"><input type="radio" name="format" value="grafik"><span class="fx-questionnaire__key" aria-hidden="true">2</span><span class="fx-questionnaire__label">Grafiklar bilan PDF</span></label><label class="fx-questionnaire__option"><input type="radio" name="format" value="chat"><span class="fx-questionnaire__key" aria-hidden="true">3</span><span class="fx-questionnaire__label">Şu yerda qisqa xulosa</span></label></div></fieldset>
    <div class="fx-questionnaire__actions"><button class="fx-btn" type="button" data-variant="ghost" data-size="sm" data-q="skip">Ötkazib yuboriş</button><span class="fx-questionnaire__kbd">1–4 tugmalari bilan tanlang</span><button class="fx-btn" type="button" data-size="sm" data-q="back">Orqaga</button><button class="fx-btn" type="submit" data-variant="primary" data-size="sm" data-q="next">Keyingi</button></div>
  </form>
  <dl class="fx-questionnaire__summary" hidden></dl>
</div>
```

- Qilmang: Hamma savolni birdaniga uzun forma qilib bermang — agent bittadan söraydi, foydalanuvçi suhbatdan çiqmaydi.
- Qilmang: «Boşqa» variantisiz yopiq röyxat bermang — AI taxmini notöğri bölişi mumkin.
- Qilmang: Majburiy bölmagan savolda «Keyingi»ni öçirib qöymang — data-optional qöying.

## Tez çiqiş (`quickexit`, beta, 0.29.0 dan)

Xavfli vaziyatdagi foydalanuvçi uçun «Saytdan tez çiqiş» tugmasi (4.165, GOV.UK «Exit this page»): bir bosiş yoki Shift'ni 3 marta bosiş bilan sahifa darhol neytral saytga almaşadi (location.replace — «Orqaga» bu sahifaga qaytarmaydi), ötiş paytida mazmun parda bilan yopiladi. Shift hisobi nuqtalarda va ekran öquvçiga aytiladi; orada boşqa tugma bosilsa hisob yangidan boşlanadi (katta harf yoziş çiqarib yubormaydi). Joylaşuv: sticky (standart sahifa tepasida yopişqoq) · fixed · inline.

- Qaçon: Zöravonlik, işonç telefoni, tibbiy yoki psixologik yordam sahifalari — foydalanuvçini kimdir kuzatayotgan bölişi mumkin.
- Qaçon emas: Oddiy «çiqiş» (hisobdan) → `button`; Sahifani tark etişdan oldin ogohlantiriş → `dialog`
- Variantlar: data-placement=sticky|fixed|inline (standart sticky)
- Klaviatura: Enter — Darhol neytral saytga ötadi; Shift × 3 (5 soniya ichida) — Sahifaning istalgan joyidan çiqiş
- Tokenlar: --fx-bg-error-solid, --fx-bg-page, --fx-border-color-focus, --fx-border-color-strong, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-md, --fx-ease-standard, --fx-elevation-2, --fx-elevation-3, --fx-fg-error, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-semibold, --fx-motion-fast, --fx-motion-instant, --fx-motion-press, --fx-radius-circle, --fx-radius-control, --fx-size-icon-sm, --fx-size-status-dot-sm, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-text-on-error, --fx-text-secondary, --fx-z-sticky, --fx-z-tip, --fx-z-toast

```html
<div class="fx-quickexit" data-fx-quickexit data-placement="sticky">
  <a class="fx-quickexit__btn" href="https://www.google.com/search?q=ob-havo" rel="nofollow noreferrer"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M8 4H4v12h4M12 6l4 4-4 4M16 10H8" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg>Saytdan tez çiqiş</a>
  <p class="fx-quickexit__hint">yoki <kbd>Shift</kbd> tugmasini 3 marta bosing</p>
</div>
<section class="fx-callout" aria-labelledby="yordam-t" style="margin-block-start: var(--fx-space-4)">
  <h2 class="fx-callout__title" id="yordam-t">Işonç telefoni — keça-kunduz</h2>
  <p>Oiladagi zöravonlik böyiça maslahat — bepul va maxfiy. Kimdir yoningizga kelsa — «Saytdan tez çiqiş» tugmasini bosing.</p>
</section>
```

- Qilmang: Oddiy saytga qöymang — faqat zöravonlik, işonç telefoni, tibbiy/psixologik yordam, huquqiy maslahat sahifalari.
- Qilmang: Neytral manzil sifatida «yordam» mavzusidagi saytni bermang — ob-havo, yangiliklar, qidiruv.
- Qilmang: Tugmani menyu içiga yaşirmang — har sahifada bir joyda, körinib tursin.
- Qilmang: Bu tugma tarixni öçiradi deb va'da bermang — sahifada «brauzer tarixini qanday tozalaş» yöriqnomasi ham bölsin.

## Iqtibos (`quote`, beta, 0.22.0 dan)

Iqtibos va muallifi: çap çiziqli (standart) yoki katta fikr-mulohaza körinişi. <figure> içida <blockquote> va <figcaption> (<cite> bilan).

- Qaçon: Boşqa manbadan olingan gap yoki mijoz fikri.
- Qaçon emas: Eslatma yoki ogohlantiriş → `alert`
- Variantlar: data-size=md|lg (standart md)
- Tokenlar: --fx-border-color-strong, --fx-border-width-focus, --fx-font-adjust-display, --fx-font-family-display, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xl, --fx-font-weight-medium, --fx-space-2, --fx-space-3, --fx-space-4, --fx-text-primary, --fx-text-secondary

```html
<figure class="fx-quote">
  <blockquote><p>Dizayn tizimi bir joyda özgardi — hamma sahifada yangilandi.</p></blockquote>
  <figcaption><cite>Dilnoza Karimova</cite> · NomLab dizayneri</figcaption>
</figure>
<figure class="fx-quote" data-size="lg">
  <blockquote><p>Yangilanişni bir buyruq bilan oldik, sayt buzilmadi.</p></blockquote>
  <figcaption><cite>Jasur Aliyev</cite> · dasturçi</figcaption>
</figure>
```

- Qilmang: Iqtibosni muallifsiz qoldirmang — kim aytganini körsating.
- Qilmang: Eslatma yoki ogohlantiriş uçun işlatmang.

## Rels (`rail`, beta, 0.17.0 dan)

Ilovaning eng yuqori bölimlari: çap çetdagi qoronği ustun (80), yuqorida belgi, papkalar — ikonka pill'da va yorliq (≤ 2 qator), tanlangani mavzu rangidagi pill va töldirilgan ikonka; pastda dumaloq tugmalar ustma-ust. Telefonda pastki panel. Karkas bilan: data-variant="rail" (S3). Kengaytma: data-tip (hover/fokusda izoh), [data-dot] (bildirişnoma nuqtasi). Telefonda bandlar köp bölsa (Fox OS 21.10): data-fx-rail data-max="5" — tor ekranda köpi bilan 5 band körinadi, data-pin bandlar (masalan oxirgi CRM) doim öz joyida, qolgani «Yana» varağida; joriy sahifa varaqda bölsa «Yana» tanlangan. Material va iOS qoidasi: pastki panelda 5 tadan köp band qöymang.

- Qaçon: 3–6 ta katta bölimli ilova (Home, Atom, CRM…), har bölimning öz yon menyusi.
- Qaçon emas: Bitta bölimli ilova → `nav`
- Klaviatura: Tab, Enter — Papkaga ötadi
- Tokenlar: --fx-bg-error-solid, --fx-bg-muted, --fx-bg-rail, --fx-bg-rail-selected, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-sm, --fx-duration-delay-tip, --fx-ease-emphasized, --fx-ease-standard, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-motion-fast, --fx-motion-slow, --fx-radius-badge, --fx-radius-circle, --fx-radius-control, --fx-radius-overlay, --fx-radius-surface, --fx-shadow-lg, --fx-shadow-sm, --fx-size-avatar-lg, --fx-size-icon-lg, --fx-size-icon-md, --fx-size-icon-sm, --fx-size-rail, --fx-size-status-dot-sm, --fx-space-1, --fx-space-10, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-6, --fx-space-8, --fx-text-brand, --fx-text-on-rail, --fx-text-on-rail-current, --fx-text-on-rail-selected, --fx-text-on-rail-strong, --fx-text-primary, --fx-text-tertiary

```html
<nav class="fx-rail" aria-label="Bölimlar">
  <a class="fx-rail__mark" href="#" aria-label="Boş sahifa"><svg viewBox="0 0 24 24" aria-hidden="true"><rect x="3" y="3" width="18" height="18" rx="6" fill="currentColor"/></svg></a>
  <a class="fx-rail__item" href="#"><span class="fx-rail__icon"><svg viewBox="0 0 256 256" aria-hidden="true"><use href="#fx-i-house"/></svg><svg viewBox="0 0 256 256" aria-hidden="true"><use href="#fx-i-house-fill"/></svg></span><span class="fx-rail__label">Home</span></a>
  <a class="fx-rail__item" href="#" aria-current="page"><span class="fx-rail__icon"><svg viewBox="0 0 256 256" aria-hidden="true"><use href="#fx-i-atom"/></svg><svg viewBox="0 0 256 256" aria-hidden="true"><use href="#fx-i-atom-fill"/></svg></span><span class="fx-rail__label">Atom</span></a>
  <a class="fx-rail__item" href="#"><span class="fx-rail__icon"><svg viewBox="0 0 256 256" aria-hidden="true"><use href="#fx-i-address-book"/></svg><svg viewBox="0 0 256 256" aria-hidden="true"><use href="#fx-i-address-book-fill"/></svg><span class="fx-rail__count">3</span></span><span class="fx-rail__label">CRM</span></a>
  <div class="fx-rail__foot"><button class="fx-rail__btn" type="button" aria-label="Rejim"><svg viewBox="0 0 256 256" aria-hidden="true"><use href="#fx-i-moon"/></svg></button></div>
</nav>
<!-- Telefonda 7 band: data-fx-rail — 5 tasi koʻrinadi (CRM data-pin bilan oxirida), qolgani «Yana» varagʻida -->
<nav class="fx-rail" data-fx-rail data-max="5" aria-label="Iş maydoni">
  <a class="fx-rail__item" href="#" aria-current="page"><span class="fx-rail__icon"><svg viewBox="0 0 256 256" aria-hidden="true"><use href="#fx-i-house"/></svg><svg viewBox="0 0 256 256" aria-hidden="true"><use href="#fx-i-house-fill"/></svg></span><span class="fx-rail__label">Bugun</span></a>
  <a class="fx-rail__item" href="#"><span class="fx-rail__icon"><svg viewBox="0 0 256 256" aria-hidden="true"><use href="#fx-i-check-square"/></svg><svg viewBox="0 0 256 256" aria-hidden="true"><use href="#fx-i-check-square-fill"/></svg></span><span class="fx-rail__label">Vazifa</span></a>
  <a class="fx-rail__item" href="#"><span class="fx-rail__icon"><svg viewBox="0 0 256 256" aria-hidden="true"><use href="#fx-i-robot"/></svg><svg viewBox="0 0 256 256" aria-hidden="true"><use href="#fx-i-robot-fill"/></svg></span><span class="fx-rail__label">Agentlar</span></a>
  <a class="fx-rail__item" href="#"><span class="fx-rail__icon"><svg viewBox="0 0 256 256" aria-hidden="true"><use href="#fx-i-check-circle"/></svg><svg viewBox="0 0 256 256" aria-hidden="true"><use href="#fx-i-check-circle-fill"/></svg></span><span class="fx-rail__label">Qarorlar</span></a>
  <a class="fx-rail__item" href="#"><span class="fx-rail__icon"><svg viewBox="0 0 256 256" aria-hidden="true"><use href="#fx-i-flag"/></svg><svg viewBox="0 0 256 256" aria-hidden="true"><use href="#fx-i-flag-fill"/></svg></span><span class="fx-rail__label">Reja</span></a>
  <a class="fx-rail__item" href="#"><span class="fx-rail__icon"><svg viewBox="0 0 256 256" aria-hidden="true"><use href="#fx-i-book-open"/></svg><svg viewBox="0 0 256 256" aria-hidden="true"><use href="#fx-i-book-open-fill"/></svg></span><span class="fx-rail__label">Bilim</span></a>
  <a class="fx-rail__item" href="#" data-pin><span class="fx-rail__icon"><svg viewBox="0 0 256 256" aria-hidden="true"><use href="#fx-i-address-book"/></svg><svg viewBox="0 0 256 256" aria-hidden="true"><use href="#fx-i-address-book-fill"/></svg></span><span class="fx-rail__label">CRM</span></a>
</nav>
<!-- Pinlar: ajratuvchi ostida (data-fx-railpins) — sudrab tartiblash, Alt + ↑/↓ -->
<nav class="fx-rail" aria-label="Pinlar bilan"><a class="fx-rail__item" href="#" aria-current="page"><span class="fx-rail__icon"><svg viewBox="0 0 256 256" aria-hidden="true"><use href="#fx-i-address-book"/></svg><svg viewBox="0 0 256 256" aria-hidden="true"><use href="#fx-i-address-book-fill"/></svg></span><span class="fx-rail__label">CRM</span></a><span class="fx-rail__sep" role="separator"></span><div class="fx-rail__pins" data-fx-railpins aria-label="Pinlar"><a class="fx-rail__item" href="#jadval" title="Buyurtmalar · Jadval"><span class="fx-rail__icon"><b class="fx-rail__ltr">B</b></span><span class="fx-rail__label">Buyurtmalar</span></a><a class="fx-rail__item" href="#qarz" title="Qarzlar"><span class="fx-rail__icon"><b class="fx-rail__ltr">Q</b></span><span class="fx-rail__label">Qarzlar</span></a></div></nav>
```

- Qilmang: Relsga 6 tadan köp papka qöymang — panelda guruhlang.
- Qilmang: Bir xil boşqaruvni relsda va tepa panelda takrorlamang (WDS r190).

## Reyting (`rating`, beta, 0.23.0 dan)

Yulduzli baho: bosiş yoki klaviatura (← → Home End), ixtiyoriy yarim qadam (data-step="0.5"). Faqat öqiş variantida (data-readonly) rasm va matnli baho. Yulduz — maska, rang tokendan. Yurak va emoji (4.108): data-shape="heart" — yulduz örniga yurak; data-shape="emoji" — kayfiyat bahosi 5 ta yuz bilan (jahldor → xursand): töldirilmaydi, bittasi tanlanadi (kattaroq va rangli, qolganlari xira); aria-valuetext «4 / 5 — Yaxşi», yonidagi [data-fx-rating-word] da söz.

- Qaçon: Mahsulot yoki xizmatga qisqa baho. Şarhlar röyxatida örtaça baho (faqat öqiş).
- Qaçon emas: Aniq diapazon qiymati → `slider`; Ha/yöq qoniqiş → `segment`
- Variantlar: data-size=sm|md|lg (standart md); data-shape=star|heart|emoji (standart star)
- Klaviatura: ← → ↑ ↓ — Qadam (1 yoki 0,5); Home, End — 0 / maksimum
- Tokenlar: --fx-bg-muted, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-ease-spring, --fx-ease-standard, --fx-fg-error, --fx-fg-success, --fx-fg-warning, --fx-font-size-sm, --fx-motion-fast, --fx-radius-badge, --fx-size-icon-lg, --fx-size-icon-md, --fx-space-1, --fx-space-2, --fx-text-secondary, --fx-text-tertiary

```html
<div class="fx-field"><span class="fx-label" id="rt-l">Xizmatni baholang</span>
<div class="fx-rating" data-fx-rating data-value="3" aria-labelledby="rt-l"><span class="fx-rating__stars"></span><span class="fx-rating__fill"></span></div></div>
<div><div class="fx-rating" data-fx-rating data-readonly data-step="0.5" data-value="4.5" data-size="sm" aria-label="Örtaça baho"><span class="fx-rating__stars"></span><span class="fx-rating__fill"></span></div><span class="fx-rating-text">4,5 · 128 ta şarh</span></div>
<div class="fx-rating" data-fx-rating data-step="0.5" data-value="2.5" aria-label="Yarim qadamli baho"><span class="fx-rating__stars"></span><span class="fx-rating__fill"></span></div>
<!-- Yurak va emoji (4.108) -->
<div class="fx-field"><span class="fx-label" id="rt-m">Qabul sizga qanday yoqdi?</span>
<div style="display:flex;align-items:center;gap:var(--fx-space-3)"><div class="fx-rating" id="rt-mood" data-fx-rating data-shape="emoji" data-value="4" aria-labelledby="rt-m"></div><span class="fx-rating-text fx-rating__word" data-fx-rating-word="rt-mood" aria-hidden="true"></span></div></div>
<div><div class="fx-rating" data-fx-rating data-shape="heart" data-value="3" data-size="sm" aria-label="Mahsulotga muhabbat"><span class="fx-rating__stars"></span><span class="fx-rating__fill"></span></div></div>
```

- Qilmang: Bahoni yolğiz yulduzga taşlab qöymang — yonida «4,5 / 5» matni yoki aria-label.
- Qilmang: 10 dan köp bahoda reyting emas — slider yoki son.
- Qilmang: Emoji bahoni rang bilan yolğiz bildirmang — yuz şakli (oğiz) va «Yaxşi» sözi bor.

## Reaksiyalar paneli (`reactbar`, beta, 0.24.0 dan)

Emoji + son tugmalari: bosilsa aria-pressed almaşadi va son ±1; bosilgani brend tusi, qalin yozuv va çegara bilan. Post, izoh, hujjat uçun. Xabarlardagi .fx-reaction körinişi, lekin mustaqil.

- Qaçon: Kontentga tez, matnsiz munosabat bildiriş va umumiy sonni körsatiş kerak bölganda.
- Qaçon emas: Baho beriş (1–5) → `rating`; Xabar ostidagi reaksiya → `message`
- Variantlar: data-size=md|lg (standart md)
- Klaviatura: Tab — Reaksiyalar orasida; Enter/Space — Qöyadi/olib taşlaydi
- Tokenlar: --fx-bg-brand-subtle, --fx-bg-muted, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-sm, --fx-ease-standard, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-semibold, --fx-motion-fast, --fx-motion-instant, --fx-motion-press, --fx-radius-circle, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-6, --fx-text-brand, --fx-text-secondary

```html
<div class="fx-reactbar" role="group" aria-label="Reaksiyalar" data-fx-reactbar>
  <button class="fx-reactbar__item" type="button" aria-pressed="true" data-label="Yoqdi"><span class="fx-reactbar__emoji" aria-hidden="true">👍</span><span class="fx-reactbar__count">12</span></button>
  <button class="fx-reactbar__item" type="button" aria-pressed="false" data-label="Tabriklayman"><span class="fx-reactbar__emoji" aria-hidden="true">🎉</span><span class="fx-reactbar__count">4</span></button>
  <button class="fx-reactbar__item" type="button" aria-pressed="false" data-label="Körib çiqaman"><span class="fx-reactbar__emoji" aria-hidden="true">👀</span><span class="fx-reactbar__count">2</span></button>
</div>
```

- Qilmang: Emoji yolğiz ma'no taşimasin: data-label (aria-label) beriladi.
- Qilmang: Reaksiyani javob örniga işlatmang — qaror kerak bölsa izoh yozing.

## Fikrlaş (chain of thought) (`reasoning`, beta, 0.23.0 dan)

Yiğiladigan fikrlaş bloki: «12 soniya öyladi ▸» — oçilsa mulohaza matni. Öylaş paytida (data-state="thinking") oçiq va sarlavha yaltiraydi; tugagaç özi yopiladi (foydalanuvçi oçgan bölsa — tegilmaydi).

- Qaçon: AI mulohazasini ixtiyoriy körsatiş.
- Qaçon emas: Bajarilgan qadamlar va vosita çaqiruvlari → `trace`; Oddiy yiğiladigan bölim → `accordion`
- Variantlar: data-state=thinking (standart done)
- Klaviatura: Enter, Space — Oçadi / yopadi
- Tokenlar: --fx-bg-muted, --fx-bg-pressed, --fx-border-color-default, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-duration-pulse, --fx-ease-enter, --fx-ease-standard, --fx-font-size-sm, --fx-font-weight-medium, --fx-motion-base, --fx-motion-fast, --fx-radius-control, --fx-size-icon-sm, --fx-space-1, --fx-space-2, --fx-space-4, --fx-text-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<details class="fx-reasoning" id="rs1" data-fx-reasoning data-state="thinking" open>
  <summary><svg data-fx-icon="spark" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 3l1.8 5.2L19 10l-5.2 1.8L12 17l-1.8-5.2L5 10l5.2-1.8z"/></svg><span class="fx-reasoning__label">Öylayapti…</span><svg data-fx-icon="chev" class="fx-reasoning__chev" viewBox="0 0 24 24" aria-hidden="true"><path d="M9 6l6 6-6 6"/></svg></summary>
  <div class="fx-reasoning__body"><p>Mijozlar jadvalida 12 ta yozuv 2 yildan beri özgarmagan. Avval ularni arxivga köçiriş, keyin hisobotni qayta hisoblaş kerak. Öçirişdan oldin ruxsat sörayman.</p></div>
</details>
<details class="fx-reasoning" data-fx-reasoning data-state="done">
  <summary><svg data-fx-icon="spark" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 3l1.8 5.2L19 10l-5.2 1.8L12 17l-1.8-5.2L5 10l5.2-1.8z"/></svg><span class="fx-reasoning__label">12 soniya öyladi</span><svg data-fx-icon="chev" class="fx-reasoning__chev" viewBox="0 0 24 24" aria-hidden="true"><path d="M9 6l6 6-6 6"/></svg></summary>
  <div class="fx-reasoning__body"><p>Mijozlar jadvalida 12 ta yozuv 2 yildan beri özgarmagan. Avval ularni arxivga köçiriş, keyin hisobotni qayta hisoblaş kerak. Öçirişdan oldin ruxsat sörayman.</p></div>
</details>
```

- Qilmang: Fikrlaş matnini asosiy javob bilan aralaştirmang — alohida blok.
- Qilmang: Yopilgan holatda davomiylikni yaşirmang («12 soniya öyladi»).
- Qilmang: data-state ni qölda özgartirgan bölsangiz, oçiq/yopiq holatni ham qölda boşqarmang — JS özi hal qiladi.

## Yozuv sahifasi (`recordpage`, beta, 0.28.0 dan)

Bitta yozuv sahifasi qolipi (4.184, SLDS «Record home»): tepada belgi, tur va nom, amallar; asosiy maydonlar tasmasi (4–6 ta); bosqiç yöli; pastda ikki ustun — çapda tablar (tafsilot, boğliq röyxatlar, fayllar), öngda faoliyat va izohlar (yopişqoq). Konteyner kengligiga qarab bitta ustunga tuşadi. CRM bitimi, mijoz kartasi, ariza.

- Qaçon: CRM'da bitta yozuvni köriş va boşqariş: bitim, mijoz, ariza, buyurtma.
- Qaçon emas: Köp yozuvlar röyxati → `listpage`; Körsatkiçlar sahifasi → `dashboard`
- Variantlar: data-layout=split|wide (standart split)
- Klaviatura: Tab — Amallar, bosqiç yöli, tablar, faoliyat — tartib bilan
- Tokenlar: --fx-bg-surface, --fx-border-color-default, --fx-border-color-surface, --fx-border-width-default, --fx-font-adjust-display, --fx-font-family-display, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xl, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-popover-width, --fx-radius-surface, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-text-primary, --fx-text-tertiary

```html
<article class="fx-recordpage" aria-labelledby="rp-t">
  <header class="fx-recordpage__head">
    <div class="fx-recordpage__top">
      <span class="fx-avatar fx-recordpage__icon" data-size="lg" data-color="green" role="img" aria-label="Bitim">BT</span>
      <div class="fx-recordpage__titles"><span class="fx-recordpage__type">Bitim · №214</span><h1 class="fx-recordpage__title" id="rp-t">Örikzor savdo — 40 ta kassa apparati</h1></div>
      <div class="fx-recordpage__actions"><button class="fx-btn" data-size="sm" type="button">Tahrirlaş</button><button class="fx-btn" data-size="sm" type="button">Şartnoma yuboriş</button></div>
    </div>
    <dl class="fx-recordpage__highlights">
      <div><dt>Summa</dt><dd>84 000 000 söm</dd></div>
      <div><dt>Mijoz</dt><dd>«Örikzor savdo» MChJ</dd></div>
      <div><dt>Mas'ul</dt><dd>Aziz Karimov</dd></div>
      <div><dt>Yopiliş sanasi</dt><dd>30-oktabr</dd></div>
      <div><dt>Ehtimollik</dt><dd>60 %</dd></div>
    </dl>
    <div class="fx-path" data-fx-path>
      <div class="fx-path__stages" role="tablist" aria-label="Bitim bosqiçlari">
        <button class="fx-path__stage" type="button"><span class="fx-path__label">Yangi</span></button>
        <button class="fx-path__stage" type="button"><span class="fx-path__label">Aloqa</span></button>
        <button class="fx-path__stage" type="button" aria-current="step"><span class="fx-path__label">Taklif</span></button>
        <button class="fx-path__stage" type="button"><span class="fx-path__label">Muzokara</span></button>
        <button class="fx-path__stage" type="button"><span class="fx-path__label">Yopildi</span></button>
      </div>
      <button class="fx-btn fx-path__action" data-variant="primary" data-size="sm" type="button">Bosqiçni yakunlaş</button>
    </div>
  </header>
  <div class="fx-recordpage__body">
    <div class="fx-recordpage__main">
      <section class="fx-recordpage__panel">
        <div class="fx-tabs" role="tablist" aria-label="Bitim" data-fx-tabs>
          <button class="fx-tabs__tab" role="tab" id="rp-t1" aria-controls="rp-p1" aria-selected="true">Tafsilot</button>
          <button class="fx-tabs__tab" role="tab" id="rp-t2" aria-controls="rp-p2" aria-selected="false">Mahsulotlar <span class="fx-badge" data-type="count">2</span></button>
          <button class="fx-tabs__tab" role="tab" id="rp-t3" aria-controls="rp-p3" aria-selected="false">Fayllar</button>
        </div>
        <div class="fx-tabs__panel" role="tabpanel" id="rp-p1" aria-labelledby="rp-t1" tabindex="0"><dl class="fx-dl" data-columns="2"><dt>Manba</dt><dd>Sayt formasi</dd><dt>Telefon</dt><dd>+998 90 123 45 67</dd><dt>Yaratilgan</dt><dd>02.10.2026</dd><dt>Izoh</dt><dd>Tölov 2 bosqiçda</dd></dl></div>
        <div class="fx-tabs__panel" role="tabpanel" id="rp-p2" aria-labelledby="rp-t2" tabindex="0" hidden>Kassa apparati — 40 dona; örnatiş xizmati.</div>
        <div class="fx-tabs__panel" role="tabpanel" id="rp-p3" aria-labelledby="rp-t3" tabindex="0" hidden>Tijoriy taklif.pdf</div>
      </section>
    </div>
    <aside class="fx-recordpage__side" aria-label="Faoliyat">
      <section class="fx-recordpage__panel">
        <h2 class="fx-recordpage__panel-title">Faoliyat</h2>
        <ol class="fx-timeline">
          <li class="fx-timeline__item" data-state="pending"><span class="fx-timeline__marker"></span><div class="fx-timeline__content"><p class="fx-timeline__title">Qönğiroq: narxni kelişiş</p><span class="fx-timeline__time">bugun, 15:00</span></div></li>
          <li class="fx-timeline__item"><span class="fx-timeline__marker"></span><div class="fx-timeline__content"><p class="fx-timeline__title">Taklif yuborildi</p><span class="fx-timeline__time">keça, 11:20</span></div></li>
        </ol>
      </section>
    </aside>
  </div>
</article>
```

- Qilmang: Tasmaga 6 dan köp maydon qöymang — eng muhimlari; qolgani «Tafsilot» tabida.
- Qilmang: Sahifada bittadan köp asosiy (primary) tugma bermang — bosqiç yöli tugmasi yoki sarlavha amali.
- Qilmang: Faoliyat ustunini içki aylantirişga majburlamang — sahifa bilan birga aylansin.

## Nisbiy vaqt (`reltime`, beta, 0.23.0 dan)

<time datetime> matni «5 daqiqa oldin», «keça», «3 soatdan keyin» körinişida özi yangilanib turadi; hoverda va fokusda töliq sana (title). Intl.RelativeTimeFormat('uz') işlatiladi, bölmasa öz zaxira matnimiz. data-format: relative, absolute, auto (7 kundan keyin sana). Vaqt zonalari kartasi (4.146): data-card — hover yoki fokusda kiçik karta: nisbiy vaqt, mahalliy (brauzer zonasi), UTC va data-zones="Europe/Moscow:Moskva, …" böyiça aniq sana-vaqt va UTC siljişi (UTC+5). Xalqaro mijozlar, server loglari, hamkor bilan uçraşuv vaqti uçun. <time> fokus oladi, karta role="tooltip" (aria-describedby), Esc yopadi.

- Qaçon: Faollik, izoh, bildirişnoma vaqti («3 daqiqa oldin»). Jadvalda «oxirgi yangilaniş».
- Qaçon emas: Aniq sana muhim (şartnoma, muddat) → `dl`
- Variantlar: data-format=relative|auto|absolute (standart relative); data-tone=default|muted (standart default); data-card=
- Klaviatura: Tab — Vaqtga fokus — karta oçiladi; Esc — Kartani yopadi
- Tokenlar: --fx-bg-surface, --fx-border-color-focus, --fx-border-color-strong, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-ease-enter, --fx-ease-exit, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-semibold, --fx-motion-exit-fast, --fx-motion-fast, --fx-radius-badge, --fx-radius-overlay, --fx-shadow-lg, --fx-space-1, --fx-space-2, --fx-space-3, --fx-text-primary, --fx-text-tertiary

```html
<p>Oxirgi kiriş: <time class="fx-reltime" data-fx-reltime datetime="2026-10-17T09:55:00+05:00">17 oktyabr, 09:55</time></p>
<p>Buyurtma yaratildi: <time class="fx-reltime" data-fx-reltime data-format="auto" datetime="2026-09-02T14:20:00+05:00">2 sentabr, 14:20</time></p>
<p>Tölov sanasi: <time class="fx-reltime" data-fx-reltime data-format="absolute" datetime="2026-10-25T10:00:00+05:00">25 oktyabr, 10:00</time></p>
<!-- Vaqt zonalari kartasi (4.146): hover / fokusda aniq vaqt -->
<p>Tölov qabul qilindi: <time class="fx-reltime" data-fx-reltime data-card data-zones="Europe/Moscow:Moskva, Europe/Istanbul:Istanbul, America/New_York:Nyu-York" datetime="2026-10-17T15:42:00+05:00">17 oktyabr, 15:42</time></p>
```

- Qilmang: datetime atributini unutmang — maşina va xulq undan öqiydi.
- Qilmang: Muhim muddatni (tölov) faqat nisbiy yozmang — absolute yoki auto bering.

## Moslaşuv qatlami (`responsive`, beta, 0.28.0 dan)

Moslaşuv poydevori. Container queries (4.11): örovçiga fx-cq yoki komponentga data-cq — karta, körsatkiç, röyxat, sozlamalar va grafik kartasi oyna eniga emas, öz joyining eniga qarab qayta tuziladi (tor ustunda, yon varaqda, dashboard plitkasida). Oyna sinflari (4.12): --fx-bp-compact · medium (600) · expanded (840) · large (1200) · xl (1600) tokenlari va data-hide-below / data-hide-above yordamçilari. 12 ustunli tör (4.18): fx-grid data-cols="12" — compact 4, medium 8, expanded 12 ustun; bola data-span / data-span-md / data-span-sm va data-offset. RTL (4.13): data-fx-flip-rtl — yönalişli ikon öngdan-çapga yozuvda közgulanadi; --fx-dir (1 / −1) — siljiş yönalişi uçun.

- Qaçon: Dashboard plitkasi, yon panel, dialog içidagi karta — joy eni oyna enidan farq qiladigan har qanday joy. Sahifa maketi 12 ustunli törda (CRM yozuv sahifasi: 8 + 4). Özbek, arab yoki fors tilidagi interfeys (RTL) — strelkalarni közgulaş.
- Qaçon emas: Oddiy teng ustunli kartalar töri → `layout`; Karkas: rels, yon menyu, tepa panel → `shell`
- Variantlar: data-cq=off|on (standart off); data-span=3|4|6|8|9|12 (standart 12); data-span-md=2|3|4|5|6|8 (standart 8); data-span-sm=1|2|3|4 (standart 4); data-offset=0|1|2|3|4|6 (standart 0); data-hide-below=none|medium|expanded|large|xl (standart none); data-hide-above=none|compact|medium|expanded|large (standart none)
- Tokenlar: --fx-control-h-sm, --fx-dir, --fx-font-size-display-md, --fx-font-size-xl, --fx-space-3, --fx-space-4, --fx-space-5, --fx-space-6

```html
<div class="fx-grid" data-cols="12">
  <div data-span="8" data-span-md="5">
    <div class="fx-cq">
      <article class="fx-card"><div class="fx-card__header"><div class="fx-card__heading"><h3 class="fx-card__title">Bitim: «Ofis mebeli»</h3><p class="fx-card__text">Mas'ul: Nodira Yusupova</p></div><div class="fx-card__actions"><button class="fx-btn" data-size="sm">Tahrirlaş</button><button class="fx-btn" data-variant="primary" data-size="sm">Yutildi</button></div></div><p class="fx-card__text">Summa: 18 400 000 söm · bosqiç: muzokara</p></article>
    </div>
  </div>
  <aside data-span="4" data-span-md="3">
    <div class="fx-cq">
      <div class="fx-stat"><div class="fx-stat__label">Bu oy tuşum</div><div class="fx-stat__value">126,4 mln</div><div class="fx-stat__hint">+12 % ötgan oyga nisbatan</div></div>
    </div>
  </aside>
  <div data-span="6" data-offset="3">
    <ul class="fx-list" data-cq>
      <li class="fx-list__item"><div class="fx-list__body"><span class="fx-list__title">Kamola Saidova</span><span class="fx-list__meta">Qönğiroq qiliş</span></div><span class="fx-list__end">bugun, 15:00</span></li>
      <li class="fx-list__item"><div class="fx-list__body"><span class="fx-list__title">Öktam Nazarov</span><span class="fx-list__meta">Taklif yuboriş</span></div><span class="fx-list__end">ertaga</span></li>
    </ul>
  </div>
</div>
<p class="fx-text" data-hide-above="compact">Telefonda: jadval kartalar körinişida.</p>
<p class="fx-text" data-hide-below="expanded">Kompyuterda: töliq jadval va filtrlar paneli.</p>
<a class="fx-link" href="#">Keyingi sahifa <svg data-fx-flip-rtl viewBox="0 0 16 16" width="16" height="16" aria-hidden="true"><path d="M6 3l5 5-5 5" fill="none" stroke="currentColor" stroke-width="1.5"/></svg></a>
```

- Qilmang: Komponent CSS'iga oyna eni (@media) böyiça tuzilma qoidasi yozmang — u panel yoki yon varaqqa tuşsa buziladi; container query işlating.
- Qilmang: data-cq'ni inline-flex yoki shrink-to-fit joydagi elementga qöymang — inline-size containment uni toraytirib yuboradi; örovçi fx-cq qöying.
- Qilmang: Breakpoint raqamini öylab topmang — faqat --fx-bp-* qiymatlari.
- Qilmang: Logotip, soat, play belgisi, raqamlarni RTL'da közgulamang — faqat yönalişli strelkalar.

## Natija sahifasi (`result`, beta, 0.22.0 dan)

Jarayon yoki sahifa natijasi: muvaffaqiyat, xato, ogohlantiriş, 404, 403, server xatosi (500), texnik işlar (503) va internet yöq (offline). Belgi şakli (yoki katta kod) + sarlavha + bitta qator izoh + keyingi qadam; 500/503/offline'da ixtiyoriy meta qator (sörov raqami, taxminiy tugaş vaqti, oxirgi saqlaş). «Böş holat»dan farqi: kattaroq, sahifaning özi. Töliq sahifa şabloni — errorpage.

- Qaçon: Forma/tölov tugagaç natija sahifasi. 404 va 403 sahifalari. Server xatosi (500), texnik işlar (503) va oflayn sahifa — nima bölganini va keyingi qadamni aytiş.
- Qaçon emas: Böş röyxat yoki topilmagan qidiruv → `empty`; Qisqa vaqtinçalik xabar → `toast`
- Variantlar: data-status=success|error|warning|404|403|500|503|offline (standart info); data-size=compact (standart default)
- Tokenlar: --fx-bg-error-subtle, --fx-bg-info-subtle, --fx-bg-muted, --fx-bg-subtle, --fx-bg-success-subtle, --fx-bg-warning-subtle, --fx-fg-error, --fx-fg-info, --fx-fg-success, --fx-fg-warning, --fx-font-adjust-mono, --fx-font-family-mono, --fx-font-size-display-md, --fx-font-size-display-sm, --fx-font-size-lg, --fx-font-size-sm, --fx-font-size-xl, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-radius-badge, --fx-radius-circle, --fx-radius-surface, --fx-size-icon-lg, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-6, --fx-space-8, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<div class="fx-result" data-status="success">
  <div class="fx-result__art" aria-hidden="true">✓</div>
  <h1 class="fx-result__title">Ariza yuborildi</h1>
  <p class="fx-result__text">Menejer 1 iş kuni içida boğlanadi.</p>
  <div class="fx-result__actions"><a class="fx-btn" data-variant="primary" href="#">Boş sahifaga</a></div>
</div>
<div class="fx-result" data-status="404">
  <p class="fx-result__code">404</p>
  <h1 class="fx-result__title">Sahifa topilmadi</h1>
  <p class="fx-result__text">Manzil özgargan yoki sahifa öçirilgan bölişi mumkin.</p>
  <div class="fx-result__actions"><a class="fx-btn" href="#">Boş sahifaga</a><a class="fx-btn" data-variant="ghost" href="#">Qidiriş</a></div>
</div>
<div class="fx-result" data-status="500">
  <div class="fx-result__art" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><path d="M12 8v5M12 16.5h.01"/><path d="M10.3 3.9 2.4 17.5A2 2 0 0 0 4.1 20.5h15.8a2 2 0 0 0 1.7-3L13.7 3.9a2 2 0 0 0-3.4 0z"/></svg></div>
  <p class="fx-result__code">XATO 500</p>
  <h1 class="fx-result__title">Serverda nosozlik yuz berdi</h1>
  <p class="fx-result__text">Kiritgan ma'lumotlaringiz saqlangan. Bir daqiqadan söng qayta urinib köring — muammo davom etsa, quyidagi raqamni yozib yuboring.</p>
  <p class="fx-result__meta">Sörov raqami: <code>req_8f2c41</code></p>
  <div class="fx-result__actions"><a class="fx-btn" data-variant="primary" href="#">Qayta uriniş</a><a class="fx-btn" data-variant="ghost" href="#">Yordam markazi</a></div>
</div>
<div class="fx-result" data-status="503" data-size="compact">
  <div class="fx-result__art" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14.7 6.3a4 4 0 0 0-5.4 5.4L3 18l3 3 6.3-6.3a4 4 0 0 0 5.4-5.4l-2.5 2.5-2.5-.5-.5-2.5z"/></svg></div>
  <p class="fx-result__code">TEXNIK IŞLAR</p>
  <h1 class="fx-result__title">Sayt yangilanmoqda</h1>
  <p class="fx-result__text">Hammasi joyida — yangi versiyani örnatyapmiz. Ma'lumotlaringizga tegilmaydi.</p>
  <p class="fx-result__meta">Taxminiy tugaş: bugun 14:30</p>
</div>
<div class="fx-result" data-status="offline" data-size="compact">
  <div class="fx-result__art" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><path d="M2 8.8a15 15 0 0 1 4.2-2.6M9.5 5.2A15 15 0 0 1 22 8.8M5 12.5a10 10 0 0 1 3.5-2M15 10.6a10 10 0 0 1 4 1.9M8.5 16a5 5 0 0 1 7 0M12 20h.01M3 3l18 18"/></svg></div>
  <h1 class="fx-result__title">Internet yöq</h1>
  <p class="fx-result__text">Ulanişni tekşiring. Oxirgi körgan sahifalaringiz oflayn ham oçiladi.</p>
  <div class="fx-result__actions"><button class="fx-btn" type="button">Qayta yuklaş</button></div>
</div>
```

- Qilmang: «Xato yuz berdi» deb töxtamang — nima qiliş kerakligini ayting.
- Qilmang: 404/403 sahifada texnik tafsilot (stack trace) körsatmang.
- Qilmang: Röyxat böş bölsa natija sahifasi emas — böş holat.
- Qilmang: 500 sahifada foydalanuvçini aybdor qilmang — «biz tomonda nosozlik» deb, ma'lumot saqlanganini ayting.

## Javoblarni tekşiring (`review`, beta, 0.28.0 dan)

Yuborişdan oldingi xulosa sahifasi (naqş, GOV.UK «Check answers»): bölimlar böyiça «savol — javob — Özgartiriş» qatorlari; töldirilmagan majburiy javob «! Kiritilmagan» va «Kiritiş» havolasi bilan ajraladi; oxirida tasdiq va «Yuboriş». Uzun formalar, arizalar, buyurtmalar uçun.

- Qaçon: Köp qadamli ariza, röyxatdan ötiş, buyurtma — yuborişdan oldingi oxirgi sahifa. Davlat xizmati, bank, ta'lim arizalari kabi xato qimmatga tuşadigan joylar.
- Qaçon emas: Qadamlar va «Keyingi/Orqaga» bilan forma (xulosa içida avtomatik) → `wizard`; Yozuvning oddiy ma'lumotlar röyxati → `dl`
- Variantlar: data-state=missing (standart —)
- Klaviatura: Tab — «Özgartiriş» havolalari, tasdiq checkbox'i va tugmalar böylab
- Tokenlar: --fx-border-color-default, --fx-border-color-error, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-dialog-width, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xl, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-radius-badge, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-8, --fx-text-brand, --fx-text-error, --fx-text-primary, --fx-text-secondary

```html
<form class="fx-review" onsubmit="event.preventDefault()">
  <h2 class="fx-review__title">Arizani yuborişdan oldin tekşiring</h2>
  <section class="fx-review__section" aria-labelledby="rv-1">
    <div class="fx-review__head"><h3 class="fx-review__heading" id="rv-1">Şaxsiy ma'lumotlar</h3></div>
    <dl class="fx-review__list">
      <div class="fx-review__row"><dt class="fx-review__key">Ism familiya</dt><dd class="fx-review__value">Jasur Abdullayev</dd><dd class="fx-review__action"><a href="#">Özgartiriş<span class="fx-sr-only"> — ism familiya</span></a></dd></div>
      <div class="fx-review__row"><dt class="fx-review__key">Tuğilgan sana</dt><dd class="fx-review__value">14.03.1994</dd><dd class="fx-review__action"><a href="#">Özgartiriş<span class="fx-sr-only"> — tuğilgan sana</span></a></dd></div>
      <div class="fx-review__row"><dt class="fx-review__key">Telefon</dt><dd class="fx-review__value">+998 90 123 45 67</dd><dd class="fx-review__action"><a href="#">Özgartiriş<span class="fx-sr-only"> — telefon</span></a></dd></div>
      <div class="fx-review__row" data-state="missing"><dt class="fx-review__key">Pasport</dt><dd class="fx-review__value">Kiritilmagan</dd><dd class="fx-review__action"><a href="#">Kiritiş<span class="fx-sr-only"> — pasport seriyasi va raqami</span></a></dd></div>
    </dl>
  </section>
  <section class="fx-review__section" aria-labelledby="rv-2">
    <div class="fx-review__head"><h3 class="fx-review__heading" id="rv-2">Kurs va tölov</h3><a href="#">Bölimni özgartiriş<span class="fx-sr-only">: kurs va tölov</span></a></div>
    <dl class="fx-review__list">
      <div class="fx-review__row"><dt class="fx-review__key">Kurs</dt><dd class="fx-review__value">Frontend dasturlaş, 6 oy</dd><dd class="fx-review__action"><a href="#">Özgartiriş<span class="fx-sr-only"> — kurs</span></a></dd></div>
      <div class="fx-review__row"><dt class="fx-review__key">Guruh</dt><dd class="fx-review__value">Keçki — duşanba, çorşanba, juma
19:00–21:00</dd><dd class="fx-review__action"><a href="#">Özgartiriş<span class="fx-sr-only"> — guruh</span></a></dd></div>
      <div class="fx-review__row"><dt class="fx-review__key">Tölov</dt><dd class="fx-review__value">12 × 1 450 000 söm (bölib tölaş)</dd><dd class="fx-review__action"><a href="#">Özgartiriş<span class="fx-sr-only"> — tölov usuli</span></a></dd></div>
      <div class="fx-review__row"><dt class="fx-review__key">Promo-kod</dt><dd class="fx-review__value">KUZ30 — −2 610 000 söm</dd><dd class="fx-review__action"><a href="#">Özgartiriş<span class="fx-sr-only"> — promo-kod</span></a></dd></div>
    </dl>
  </section>
  <section class="fx-review__confirm" aria-labelledby="rv-3">
    <h3 class="fx-review__confirm-title" id="rv-3">Tasdiqlaş</h3>
    <p class="fx-review__note">Yuborgaç, menejer 1 iş kuni içida qönğiroq qiladi. Ma'lumotlarni keyin kabinetda özgartiriş mumkin.</p>
    <label class="fx-check"><input type="checkbox" required><span class="fx-check__box"></span>Ma'lumotlar töğri va şartnoma şartlariga roziman</label>
    <div class="fx-review__actions"><button class="fx-btn" type="submit" data-variant="primary">Arizani yuboriş</button><button class="fx-btn" type="button" data-variant="ghost">Qoralama sifatida saqlaş</button></div>
  </section>
</form>
```

- Qilmang: «Özgartiriş» havolasini kontekstsiz qoldirmang — sr-only matn qaysi javob ekanini aytsin (aks holda ekran öquvçi 10 ta bir xil havolani eşitadi).
- Qilmang: Töldirilmagan majburiy javobni böş qoldirmang — «! Kiritilmagan» va «Kiritiş» havolasi.
- Qilmang: Xulosani tahrirlanadigan forma qilib yubormang — bu sahifa faqat öqiş uçun, özgartiriş öşa qadamda.

## Boy matn tahrirlagiçi (`richtext`, beta, 0.24.0 dan)

Izoh, tavsif, maqola yoziş uçun kiçik tahrirlagiç: vositalar paneli (qalin, qiya, tagiga çiziq, röyxatlar, sarlavha, havola) va contenteditable maydon. Tugma holati aria-pressed bilan, joylaştirilgan matn oddiy matnga aylanadi, HTML hodisa va yaşirin maydon orqali olinadi. Kiçik — native execCommand; murakkab hujjat tahrirlagiçi (jadval, rasm, hamkorlik) uçun taşqi kutubxona ulanadi.

- Qaçon: Formatlangan matn: izoh, tavsif, xat, maqola qoralamasi.
- Qaçon emas: Oddiy köp qatorli matn → `input`; AI çat kiritmasi → `composer`
- Klaviatura: ← → — Panel tugmalari orasida (data-fx-toolbar); Ctrl+B, Ctrl+I, Ctrl+U — Qalin, qiya, tagiga çiziq; Tab — Panel → maydon
- Tokenlar: --fx-bg-brand-subtle, --fx-bg-field, --fx-bg-subtle, --fx-border-color-default, --fx-border-color-field, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-lg, --fx-control-h-sm, --fx-font-size-lg, --fx-font-size-md, --fx-font-size-xs, --fx-font-weight-semibold, --fx-radius-surface, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-6, --fx-text-brand, --fx-text-primary, --fx-text-tertiary

```html
<div class="fx-richtext" data-fx-richtext>
  <div class="fx-toolbar fx-richtext__bar" data-variant="flat" role="toolbar" aria-label="Matn formati" data-fx-toolbar>
    <div class="fx-toolbar__group"><button type="button" class="fx-btn" data-variant="ghost" data-size="sm" data-cmd="bold" aria-pressed="false" aria-label="Qalin">B</button><button type="button" class="fx-btn" data-variant="ghost" data-size="sm" data-cmd="italic" aria-pressed="false" aria-label="Qiya">I</button><button type="button" class="fx-btn" data-variant="ghost" data-size="sm" data-cmd="underline" aria-pressed="false" aria-label="Tagiga çiziq">U</button></div>
    <span class="fx-toolbar__sep" role="separator"></span>
    <div class="fx-toolbar__group"><button type="button" class="fx-btn" data-variant="ghost" data-size="sm" data-cmd="formatBlock" aria-pressed="false" aria-label="Sarlavha" data-value="h2">H2</button><button type="button" class="fx-btn" data-variant="ghost" data-size="sm" data-cmd="insertUnorderedList" aria-pressed="false" aria-label="Belgili röyxat">•</button><button type="button" class="fx-btn" data-variant="ghost" data-size="sm" data-cmd="insertOrderedList" aria-pressed="false" aria-label="Raqamli röyxat">1.</button></div>
    <span class="fx-toolbar__sep" role="separator"></span>
    <div class="fx-toolbar__group"><button type="button" class="fx-btn" data-variant="ghost" data-size="sm" data-cmd="link" aria-pressed="false" aria-label="Havola">Havola</button></div>
  </div>
  <div class="fx-richtext__body" data-placeholder="Mijoz haqida izoh yozing…"><p>Mijoz <b>şartnomani</b> payşanbagaça imzolaşini aytdi.</p></div>
  <input type="hidden" name="izoh">
</div>
```

- Qilmang: Foydalanuvçi HTML'ini tozalamay serverga saqlamang — qabul qilgan tomonda ruxsat etilgan teglarni (b, i, u, h2, ul, ol, li, a, p) qoldirib, qolganini olib taşlang.
- Qilmang: Ikonlarni ketma-ket takrorlab inline SVG qilmang — matnli belgi yoki bitta `<symbol>`.
- Qilmang: Oddiy bir qatorli izoh uçun işlatmang — `textarea` yetadi.

## Konsentrik halqalar (`rings`, beta, 0.29.0 dan)

2–3 maqsadning bajarilişi bitta içma-iç halqada (4.116) — Apple Activity halqalari kabi: menejerning kunlik rejasi, öquvçining haftalik maqsadi. Har halqa — bitta körsatkiç (style="--fx-rings-value: 72%"), taşqisi birinçi; raqam, maqsad va foiz legendada doim matn bilan. Ranglar grafik rollaridan (brand · ink · accent). Faqat CSS, JS yöq. WDS qoidasi: bitta foiz uçun halqa emas, çiziqli ölçagiç — halqa faqat bir neçta maqsadni bir qaraşda körsatiş uçun.

- Qaçon: Kunlik yoki haftalik 2–3 maqsad: qönğiroq, uçraşuv, bitim. Profil yoki dashboard kartasida «bugungi faollik».
- Qaçon emas: Bitta jarayonning foizi (yuklaş, töldiriş) → `progress`; Bir neçta körsatkiçni maqsad bilan soliştiriş → `chart`
- Variantlar: data-role=ink|accent|risk|context (standart brand); data-size=sm|lg (standart md); data-layout=stack (standart row)
- Tokenlar: --fx-ease-emphasized, --fx-font-size-lg, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-regular, --fx-font-weight-semibold, --fx-motion-slower, --fx-radius-circle, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-6, --fx-text-secondary, --fx-text-tertiary, --fx-viz-accent, --fx-viz-brand, --fx-viz-context, --fx-viz-ink, --fx-viz-risk

```html
<figure class="fx-rings" role="group" aria-label="Bugungi reja: Aziz Karimov">
  <div class="fx-rings__plot" aria-hidden="true">
    <span class="fx-rings__ring" data-role="brand" style="--fx-rings-value: 72%"></span>
    <span class="fx-rings__ring" data-role="ink" style="--fx-rings-value: 88%"></span>
    <span class="fx-rings__ring" data-role="accent" style="--fx-rings-value: 60%"></span>
    <span class="fx-rings__center">73 %<small>örtaça</small></span>
  </div>
  <ul class="fx-rings__legend">
    <li data-role="brand"><span class="fx-rings__name">Qönğiroqlar</span><span class="fx-rings__value">36 <small>/ 50 ta · 72 %</small></span></li>
    <li data-role="ink"><span class="fx-rings__name">Uçraşuvlar</span><span class="fx-rings__value">7 <small>/ 8 ta · 88 %</small></span></li>
    <li data-role="accent"><span class="fx-rings__name">Yopilgan bitimlar</span><span class="fx-rings__value">3 <small>/ 5 ta · 60 %</small></span></li>
  </ul>
</figure>
<figure style="margin-block-start:var(--fx-space-6)" class="fx-rings" data-size="sm" role="group" aria-label="Haftalik maqsad: 9-«A» sinf">
  <div class="fx-rings__plot" aria-hidden="true">
    <span class="fx-rings__ring" data-role="brand" style="--fx-rings-value: 90%"></span>
    <span class="fx-rings__ring" data-role="ink" style="--fx-rings-value: 68%"></span>
    <span class="fx-rings__center">79 %<small>örtaça</small></span>
  </div>
  <ul class="fx-rings__legend">
    <li data-role="brand"><span class="fx-rings__name">Darslar</span><span class="fx-rings__value">18 <small>/ 20 soat · 90 %</small></span></li>
    <li data-role="ink"><span class="fx-rings__name">Uy vazifalari</span><span class="fx-rings__value">41 <small>/ 60 ta · 68 %</small></span></li>
  </ul>
</figure>
```

- Qilmang: Bitta foiz uçun işlatmang — çiziqli ölçagiç (fx-progress, fx-chart gauge) aniqroq.
- Qilmang: 3 tadan köp halqa qöymang — içkilari juda kiçrayadi.
- Qilmang: Legendani olib taşlamang: raqam va nom faqat rangdan bilinmaydi.
- Qilmang: Aksent rolini içki ingiçka halqaga emas, taşqi yoki örtadagisiga bering.

## Ripple (tölqin) (`ripple`, beta, 0.29.0 dan)

Bosilgan nuqtadan tarqaluvçi yumşoq tölqin (M3, HeroUI Ripple). Bezak harakati, şuning uçun faqat expressive rejimda işlaydi (data-fx-motion="expressive" ota yoki tugmaning özida); data-fx-ripple="always" — standart rejimda ham. Klaviaturada (Enter/Space) tölqin markazdan çiqadi. Rang — matn rangi: asosiy tugmada oq, ikkilamçi tugmada qora — har mavzuda özi töğri. data-fx-ripple="soft" — xiraroq. Harakat kamaytirilsa, calm yoki none rejimda tölqin yöq.

- Qaçon: Landing va onboarding CTA tugmalari — bosiliş «tirik» sezilsin. Bosiladigan katta kartalar (tarif tanlaş).
- Qaçon emas: Oddiy ilova tugmasi (bosiliş şkalasi yetarli) → `button`; Holat qatlami kerak bölsa (hover/fokus/bosiş foni) → `focus`
- Variantlar: data-fx-ripple=expressive|always|soft (standart expressive)
- Klaviatura: Enter / Space — Tugma amali + markazdan tölqin
- Tokenlar: --fx-ease-enter, --fx-ease-exit, --fx-motion-slow, --fx-motion-slower, --fx-radius-circle

```html
<div data-fx-motion="expressive" style="display:flex;flex-wrap:wrap;gap:var(--fx-space-3)">
  <button type="button" class="fx-btn" data-variant="primary" data-size="lg" data-fx-ripple>Bepul boşlaş</button>
  <button type="button" class="fx-btn" data-size="lg" data-fx-ripple>Demo köriş</button>
  <button type="button" class="fx-btn" data-variant="ghost" data-size="lg" data-fx-ripple="soft">Narxlar</button>
</div>
<article class="fx-card" data-fx-ripple="always" tabindex="0" style="margin-block-start:var(--fx-space-4);max-inline-size:22rem;cursor:pointer">
  <h3 class="fx-card__title">Tarif: Jamoa</h3>
  <p class="fx-card__text">5 kişigaça, çeksiz loyiha. Kartani bosing — tölqin standart rejimda ham çiqadi.</p>
</article>
```

- Qilmang: Ilova içidagi ziç tugmalarga (jadval, vositalar paneli) qöymang — bu ifodali ekranlar uçun.
- Qilmang: Tölqinni bosiş natijasi örniga işlatmang — amal natijasi alohida körsatilsin (toast, holat).
- Qilmang: Havola matniga qöymang — faqat tugma va bosiladigan kartaga.

## Iş qatori (`row`, beta, 0.22.0 dan)

Vazifa yoki murojaat qatori: boşida ustuvorlik — hover yoki fokusda örnida checkbox çiqadi (bitta katak, ikki rol); bittasi tanlansa — hamma qatorda checkbox. ID (mono), holat, sarlavha, oxirida yorliq, muddat (keçikkan — qizil), bajaruvçi. Guruhlar yiğiladi.

- Qaçon: Vazifalar, murojaatlar, xatolar röyxati — tez skanerlaş va ommaviy tanlaş.
- Qaçon emas: Köp ustunli, saralanadigan ma'lumot → `table`
- Variantlar: data-state=open|done|cancelled (standart open); data-tone=normal|soon|late (standart normal)
- Klaviatura: Tab — Sarlavha va checkbox böylab; Space — Belgilaydi
- Tokenlar: --fx-bg-brand-subtle, --fx-bg-muted, --fx-bg-subtle, --fx-border-color-default, --fx-border-width-default, --fx-control-h-md, --fx-control-h-sm, --fx-ease-standard, --fx-fg-error, --fx-font-adjust-mono, --fx-font-family-mono, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-regular, --fx-font-weight-semibold, --fx-motion-fast, --fx-size-icon-md, --fx-size-icon-sm, --fx-space-1, --fx-space-2, --fx-space-3, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<details class="fx-rows__group" open><summary><span class="fx-flow" data-state="progress" aria-hidden="true"></span>Jarayonda <span class="fx-rows__count">2</span></summary>
<ul class="fx-rows" id="vazifalar">
  <li class="fx-row"><span class="fx-row__lead"><span class="fx-prio" data-level="urgent" role="img" aria-label="Şoşilinç"><i></i></span><label class="fx-check fx-row__sel"><input type="checkbox" aria-label="Tanlaş: FX-214"><span class="fx-check__box"></span></label></span><span class="fx-row__id">FX-214</span><span class="fx-flow" data-state="progress" role="img" aria-label="Jarayonda"></span><a class="fx-row__title" href="#">Grafik tooltipi klaviaturada</a><span class="fx-row__end"><span class="fx-badge" data-color="blue">Komponent</span><span class="fx-row__due" data-tone="late">Keça</span><span class="fx-avatar" data-size="sm" data-color="purple" role="img" aria-label="Mister Fox">MF</span></span></li>
  <li class="fx-row"><span class="fx-row__lead"><span class="fx-prio" data-level="2" role="img" aria-label="Örta"><i></i></span><label class="fx-check fx-row__sel"><input type="checkbox" aria-label="Tanlaş: FX-219"><span class="fx-check__box"></span></label></span><span class="fx-row__id">FX-219</span><span class="fx-flow" data-state="review" role="img" aria-label="Tekşiruvda"></span><a class="fx-row__title" href="#">Doska: klaviatura bilan sudraş</a><span class="fx-row__end"><span class="fx-row__due" data-tone="soon">Bugun</span><span class="fx-avatar" data-size="sm" data-color="yellow" role="img" aria-label="Guli">GU</span></span></li>
</ul></details>
```

- Qilmang: Qatorga köp amal tugmasi qöymang — hover amallar yoki menyu.
- Qilmang: Sarlavhani ikki qatorga ötkazmang — bitta qator, töliq nom tafsilot panelida.

## Saqlaş paneli (`savebar`, beta, 0.28.0 dan)

Saqlanmagan özgarişlar qöriqçisi: forma özgarsa pastda «Saqlanmagan özgarişlar · 2 ta — Bekor qiliş / Saqlaş» paneli çiqadi, özgargan maydon yorliği oldida nuqta paydo böladi, qiymat qaytsa belgi yöqoladi. Sahifadan ketişda brauzer ogohlantiradi, Ctrl+S saqlaydi. Sozlamalar, mijoz kartasi, profil sahifalari uçun.

- Qaçon: Köp maydonli sozlamalar, mijoz yoki mahsulot kartasi — qölda saqlanadigan forma. Foydalanuvçi özgarişni unutib sahifadan çiqib ketişi qimmatga tuşadigan joy.
- Qaçon emas: Bitta maydonni joyida tahrirlaş → `inline-edit`; Bir neça qadamli yangi yozuv yaratiş → `wizard`
- Variantlar: data-position=sticky|fixed|top (standart sticky); data-state=saved (standart —)
- Klaviatura: Ctrl/⌘ + S — Özgariş bölsa formani saqlaydi; Tab — Panel oçiq bölsa «Bekor qiliş» va «Saqlaş» tugmalariga
- Tokenlar: --fx-bg-page, --fx-dialog-width, --fx-ease-emphasized, --fx-ease-exit, --fx-fg-success, --fx-fg-warning, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-regular, --fx-motion-base, --fx-motion-exit-base, --fx-motion-shift-lg, --fx-radius-overlay, --fx-shadow-lg, --fx-size-status-dot, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-text-brand, --fx-text-primary

```html
<form class="fx-card" data-fx-savebar onsubmit="event.preventDefault(); this.fxSaved()" style="display:grid;gap:var(--fx-space-4);max-inline-size:32rem">
  <h3 class="fx-card__title">Mijoz: Dilnoza Rahimova</h3>
  <label class="fx-field"><span class="fx-label" data-required>Ism familiya</span><input class="fx-input" name="ism" value="Dilnoza Rahimova" required></label>
  <label class="fx-field"><span class="fx-label">Telefon</span><input class="fx-input" name="tel" value="+998 93 512 40 18"></label>
  <label class="fx-field"><span class="fx-label">Bosqiç</span><span class="fx-select-wrap"><select class="fx-select" name="bosqich"><option>Yangi ariza</option><option selected>Muzokara</option><option>Şartnoma</option><option>Yopildi</option></select></span></label>
  <label class="fx-check" data-type="switch"><input type="checkbox" role="switch" name="telegram" checked><span class="fx-check__box"></span>Telegram orqali xabarnoma</label>
  <div class="fx-savebar" role="region" aria-label="Saqlanmagan özgarişlar">
    <span class="fx-savebar__text">Saqlanmagan özgarişlar <span class="fx-savebar__count" data-savebar-count></span></span>
    <div class="fx-savebar__actions"><button class="fx-btn" type="reset" data-variant="ghost" data-size="sm">Bekor qiliş</button><button class="fx-btn" type="submit" data-variant="primary" data-size="sm">Saqlaş</button></div>
  </div>
</form>
```

- Qilmang: Panelni har doim körsatib qöymang — faqat haqiqiy özgariş bölganda çiqsin, qiymat qaytsa yöqolsin.
- Qilmang: «Bekor qiliş»ni tasdiqsiz sahifani yopadigan amal qilmang — u faqat qiymatlarni boşlanğiçiga qaytaradi.
- Qilmang: Avto-saqlanadigan formada işlatmang — u yerda «Saqlandi» holati (status) yetarli.

## Kalendar körinişi (`schedule`, beta, 0.24.0 dan)

Hodisalarni vaqt öqida körsatadi: Oy (kun katagida hodisa chiplari va «+N» — bosilsa hammasi oçiladi), Hafta va Kun (soatlar töri, kun böyi qatori, bugungi ustunda «hozir» çiziği vaqt yozuvi bilan, bir-biriga tuşgan hodisalar yonma-yon). Hodisa — tugma: nomi va vaqti matnda, rang faqat toifa çiziği. Sana tanlaş uçun .fx-calendar işlating — bu komponent hodisalarni körsatadi. Xulq foxui.js'da (data-fx-schedule). Tahrirlaş (data-editable, 20.10 — heroui.pro Agenda'dan): siçqonça bilan suriş (data-step daqiqa qadam, boşqa kunga ham), pastki çetidan çöziş, böş joyda sudrab yangi hodisa (data-draft); klaviatura — Alt+strelkalar; har amal fx-schedule-move/-resize/-create hodisasi {id, day, start, end}, ekran öquvçiga aytiladi. data-readonly — surilmaydi; data-status="unconfirmed" — uzuq çegara (taxminiy); data-weekend — dam oliş kuni foni. Barmoq bilan sudraş yöq (aylantiriş buzilmasin).

- Qaçon: Uçraşuv, vazifa va muddatlarni haftalik/oylik köriş (reja, band qiliş, jamoa taqvimi).
- Qaçon emas: Faqat sana tanlaş → `calendar`; Loyiha bosqiçlari va boğliqliklar → `gantt`; Faoliyat yoki voqealar lentasi → `timeline`
- Variantlar: data-view=week|day|month (standart week); data-tone=brand|blue|green|coral|purple|yellow|pink (standart brand); data-editable=true; data-status=unconfirmed (standart confirmed)
- Klaviatura: Tab — Keyingi hodisa yoki «+N» tugmasi; Enter, Boʻsh joy — Hodisani oçadi (sahifa xulqi); «+N» — qolganini körsatadi / yiğadi; Alt + ↑ / ↓ — Tahrirlanadigan kalendarda hodisani qadam (data-step, 15 daqiqa) bilan suradi; Alt + ← / → — Hodisani oldingi / keyingi kunga köçiradi; Alt + Shift + ↑ / ↓ — Hodisani qisqartiradi / çözadi
- Tokenlar: --fx-bg-brand-solid, --fx-bg-brand-subtle, --fx-bg-category-blue, --fx-bg-category-blue-subtle, --fx-bg-category-coral, --fx-bg-category-coral-subtle, --fx-bg-category-green, --fx-bg-category-green-subtle, --fx-bg-category-pink, --fx-bg-category-pink-subtle, --fx-bg-category-purple, --fx-bg-category-purple-subtle, --fx-bg-category-yellow, --fx-bg-category-yellow-subtle, --fx-bg-error-solid, --fx-bg-muted, --fx-bg-pressed, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-ease-standard, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-motion-fast, --fx-motion-instant, --fx-motion-press, --fx-radius-badge, --fx-radius-circle, --fx-radius-pill, --fx-radius-surface, --fx-schedule-days, --fx-schedule-hours, --fx-schedule-start, --fx-shadow-lg, --fx-size-icon-lg, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-4, --fx-text-disabled, --fx-text-on-brand, --fx-text-on-error, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<section class="fx-schedule" data-view="week" data-fx-schedule data-editable data-now="14:20" aria-label="12–18 oktyabr haftasi">
  <div class="fx-schedule__head" role="row">
    <span class="fx-schedule__corner"></span>
    <div class="fx-schedule__dh"><span>Du</span><span class="fx-schedule__dnum">12</span></div>
    <div class="fx-schedule__dh"><span>Se</span><span class="fx-schedule__dnum">13</span></div>
    <div class="fx-schedule__dh"><span>Çor</span><span class="fx-schedule__dnum">14</span></div>
    <div class="fx-schedule__dh"><span>Pay</span><span class="fx-schedule__dnum">15</span></div>
    <div class="fx-schedule__dh"><span>Ju</span><span class="fx-schedule__dnum">16</span></div>
    <div class="fx-schedule__dh" data-today aria-current="date"><span>Sha</span><span class="fx-schedule__dnum">17</span></div>
    <div class="fx-schedule__dh" data-weekend><span>Yak</span><span class="fx-schedule__dnum">18</span></div>
  </div>
  <div class="fx-schedule__allday">
    <span class="fx-schedule__label">Kun böyi</span>
    <div class="fx-schedule__cell"></div><div class="fx-schedule__cell"></div><div class="fx-schedule__cell"></div>
    <div class="fx-schedule__cell"><button type="button" class="fx-schedule__chip" data-tone="coral">Hisobot topşiriş muddati</button></div>
    <div class="fx-schedule__cell"></div>
    <div class="fx-schedule__cell"><button type="button" class="fx-schedule__chip" data-tone="green">Ustozlar kuni</button></div>
    <div class="fx-schedule__cell"></div>
  </div>
  <div class="fx-schedule__body">
    <div class="fx-schedule__hours" aria-hidden="true"><span>08:00</span><span>09:00</span><span>10:00</span><span>11:00</span><span>12:00</span><span>13:00</span><span>14:00</span><span>15:00</span><span>16:00</span><span>17:00</span></div>
    <div class="fx-schedule__col"><button type="button" class="fx-schedule__ev" data-tone="blue" style="--from: 9; --span: 1"><span class="fx-schedule__time">09:00–10:00</span><span class="fx-schedule__title">Haftalik yiğiliş</span></button><button type="button" class="fx-schedule__ev" data-tone="green" style="--from: 14; --span: 2"><span class="fx-schedule__time">14:00–16:00</span><span class="fx-schedule__title">Mijoz bilan qönğiroq</span></button></div>
    <div class="fx-schedule__col"><button type="button" class="fx-schedule__ev" data-tone="brand" style="--from: 10; --span: 1.5"><span class="fx-schedule__time">10:00–11:30</span><span class="fx-schedule__title">Dizayn tekşiruvi</span></button><button type="button" class="fx-schedule__ev" data-tone="purple" style="--from: 10.5; --span: 1"><span class="fx-schedule__time">10:30–11:30</span><span class="fx-schedule__title">Tezkor savol-javob</span></button></div>
    <div class="fx-schedule__col"><button type="button" class="fx-schedule__ev" data-tone="coral" style="--from: 11; --span: 2"><span class="fx-schedule__time">11:00–13:00</span><span class="fx-schedule__title">Taqdimot tayyorlaş</span></button></div>
    <div class="fx-schedule__col"><button type="button" class="fx-schedule__ev" data-tone="blue" style="--from: 9; --span: 1"><span class="fx-schedule__time">09:00–10:00</span><span class="fx-schedule__title">Kunlik yiğiliş</span></button><button type="button" class="fx-schedule__ev" data-tone="yellow" style="--from: 15; --span: 1.5"><span class="fx-schedule__time">15:00–16:30</span><span class="fx-schedule__title">Şartnoma muhokamasi</span></button></div>
    <div class="fx-schedule__col"><button type="button" class="fx-schedule__ev" data-tone="pink" style="--from: 13; --span: 3"><span class="fx-schedule__time">13:00–16:00</span><span class="fx-schedule__title">Mahsulot sinovi</span></button></div>
    <div class="fx-schedule__col" data-today><button type="button" class="fx-schedule__ev" data-tone="green" style="--from: 10; --span: 2"><span class="fx-schedule__time">10:00–12:00</span><span class="fx-schedule__title">Jamoaviy nonuşta</span></button></div>
    <div class="fx-schedule__col" data-weekend><button type="button" class="fx-schedule__ev" data-tone="purple" data-status="unconfirmed" style="--from: 11; --span: 1.5"><span class="fx-schedule__time">11:00–12:30</span><span class="fx-schedule__title">Oilaviy sayr (taxminiy)</span></button><button type="button" class="fx-schedule__ev" data-tone="coral" data-readonly style="--from: 15; --span: 1"><span class="fx-schedule__time">15:00–16:00</span><span class="fx-schedule__title">Bayram (özgarmaydi)</span></button></div>
  </div>
</section>

<!-- Oy koʻrinishi: bir kunda 3 tadan koʻp hodisa — «+N» -->
<section class="fx-schedule" data-view="month" data-max="3" data-fx-schedule aria-label="Oktyabr 2026">
  <div class="fx-schedule__head"><span class="fx-schedule__dow">Du</span><span class="fx-schedule__dow">Se</span><span class="fx-schedule__dow">Çor</span><span class="fx-schedule__dow">Pay</span><span class="fx-schedule__dow">Ju</span><span class="fx-schedule__dow">Sha</span><span class="fx-schedule__dow">Yak</span></div>
  <div class="fx-schedule__month">
    <div class="fx-schedule__day" data-outside role="group" aria-label="28-sentyabr"><span class="fx-schedule__num">28</span></div>
    <div class="fx-schedule__day" data-outside role="group" aria-label="29-sentyabr"><span class="fx-schedule__num">29</span></div>
    <div class="fx-schedule__day" data-outside role="group" aria-label="30-sentyabr"><span class="fx-schedule__num">30</span></div>
    <div class="fx-schedule__day" role="group" aria-label="1-oktyabr"><span class="fx-schedule__num">1</span></div>
    <div class="fx-schedule__day" role="group" aria-label="2-oktyabr"><span class="fx-schedule__num">2</span></div>
    <div class="fx-schedule__day" role="group" aria-label="3-oktyabr"><span class="fx-schedule__num">3</span></div>
    <div class="fx-schedule__day" role="group" aria-label="4-oktyabr"><span class="fx-schedule__num">4</span></div>
    <div class="fx-schedule__day" role="group" aria-label="5-oktyabr"><span class="fx-schedule__num">5</span><button type="button" class="fx-schedule__chip" data-tone="blue">Yiğiliş</button></div>
    <div class="fx-schedule__day" role="group" aria-label="6-oktyabr"><span class="fx-schedule__num">6</span></div>
    <div class="fx-schedule__day" role="group" aria-label="7-oktyabr"><span class="fx-schedule__num">7</span></div>
    <div class="fx-schedule__day" role="group" aria-label="8-oktyabr"><span class="fx-schedule__num">8</span><button type="button" class="fx-schedule__chip" data-tone="brand">Rejalaştiriş</button><button type="button" class="fx-schedule__chip" data-tone="green">Mijoz tuşligi</button></div>
    <div class="fx-schedule__day" role="group" aria-label="9-oktyabr"><span class="fx-schedule__num">9</span></div>
    <div class="fx-schedule__day" role="group" aria-label="10-oktyabr"><span class="fx-schedule__num">10</span></div>
    <div class="fx-schedule__day" role="group" aria-label="11-oktyabr"><span class="fx-schedule__num">11</span></div>
    <div class="fx-schedule__day" role="group" aria-label="12-oktyabr"><span class="fx-schedule__num">12</span></div>
    <div class="fx-schedule__day" role="group" aria-label="13-oktyabr"><span class="fx-schedule__num">13</span></div>
    <div class="fx-schedule__day" role="group" aria-label="14-oktyabr"><span class="fx-schedule__num">14</span><button type="button" class="fx-schedule__chip" data-tone="coral">Dizayn tekşiruvi</button><button type="button" class="fx-schedule__chip" data-tone="purple">Sprint boşi</button><button type="button" class="fx-schedule__chip" data-tone="blue">Intervyu</button><button type="button" class="fx-schedule__chip" data-tone="yellow">Hisob-kitob</button><button type="button" class="fx-schedule__chip" data-tone="pink">Sörovnoma</button></div>
    <div class="fx-schedule__day" role="group" aria-label="15-oktyabr"><span class="fx-schedule__num">15</span></div>
    <div class="fx-schedule__day" role="group" aria-label="16-oktyabr"><span class="fx-schedule__num">16</span></div>
    <div class="fx-schedule__day" data-today role="group" aria-label="17-oktyabr"><span class="fx-schedule__num">17</span><button type="button" class="fx-schedule__chip" data-tone="green">Ustozlar kuni</button></div>
    <div class="fx-schedule__day" role="group" aria-label="18-oktyabr"><span class="fx-schedule__num">18</span></div>
    <div class="fx-schedule__day" role="group" aria-label="19-oktyabr"><span class="fx-schedule__num">19</span></div>
    <div class="fx-schedule__day" role="group" aria-label="20-oktyabr"><span class="fx-schedule__num">20</span></div>
    <div class="fx-schedule__day" role="group" aria-label="21-oktyabr"><span class="fx-schedule__num">21</span><button type="button" class="fx-schedule__chip" data-tone="brand">Taqdimot</button><button type="button" class="fx-schedule__chip" data-tone="coral">Şartnoma</button></div>
    <div class="fx-schedule__day" role="group" aria-label="22-oktyabr"><span class="fx-schedule__num">22</span></div>
    <div class="fx-schedule__day" role="group" aria-label="23-oktyabr"><span class="fx-schedule__num">23</span></div>
    <div class="fx-schedule__day" role="group" aria-label="24-oktyabr"><span class="fx-schedule__num">24</span></div>
    <div class="fx-schedule__day" role="group" aria-label="25-oktyabr"><span class="fx-schedule__num">25</span></div>
    <div class="fx-schedule__day" role="group" aria-label="26-oktyabr"><span class="fx-schedule__num">26</span></div>
    <div class="fx-schedule__day" role="group" aria-label="27-oktyabr"><span class="fx-schedule__num">27</span></div>
    <div class="fx-schedule__day" role="group" aria-label="28-oktyabr"><span class="fx-schedule__num">28</span></div>
    <div class="fx-schedule__day" role="group" aria-label="29-oktyabr"><span class="fx-schedule__num">29</span><button type="button" class="fx-schedule__chip" data-tone="purple">Reliz</button></div>
    <div class="fx-schedule__day" role="group" aria-label="30-oktyabr"><span class="fx-schedule__num">30</span></div>
    <div class="fx-schedule__day" role="group" aria-label="31-oktyabr"><span class="fx-schedule__num">31</span></div>
    <div class="fx-schedule__day" data-outside role="group" aria-label="1-noyabr"><span class="fx-schedule__num">1</span></div>
  </div>
</section>
```

- Qilmang: Hodisa toifasini faqat rang bilan bermang — har doim nom va vaqt matnda bölsin.
- Qilmang: Oy katagiga 3–4 tadan köp chip siğdirmang — data-max va «+N» işlating.
- Qilmang: Soatlar törini 24 soatga çözmang — --fx-schedule-start va --fx-schedule-hours bilan iş vaqtini körsating.
- Qilmang: Mobil ekranda 7 kunlik soatlar törini majburlamang — kun körinişi yoki agenda röyxatiga öting.

## Aylanuvçi maydon (`scrollarea`, beta, 0.24.0 dan)

Çegaralangan aylanuvçi maydon: kontent davom etayotgan çetda yumşoq söniş (data-fade-start/end xulq tomonidan qöyiladi) — «yana bor» işorasi. Vertikal (standart) yoki gorizontal (data-axis="x"). Ingiçka çiziq; siğsa — söniş çiqmaydi. Progressiv xiralik (data-edge="blur"): çetda söniş örniga kontent xiralaşib ostidan ötadi — vertikal maydonda; qöllanmasa oddiy söniş. Uşlab suriş (data-drag, 20.10 — Manbaa'dan): siçqonça bilan sudrab suriladi (5 px çegara, surilgandan keyingi bosiş bekor), çiziq yaşirin, çetdagi söniş qoladi; barmoq va klaviatura özgarmaydi. Sönişsiz (data-fade="none", 21.10 — Manbaa/Ustoz): çetda kesilgan karta özi «davomi bor» deydi; uşlab suriladigan javon (data-drag) uçun standart. Içki çekinişli (padding) gorizontal qatorda scroll-padding-inline'ni şu padding qiymatiga teng bering — aks holda scroll-snap birinçi elementni surib qöyadi.

- Qaçon: Çeklangan balandlikdagi röyxat, panel yoki jadval uzun bölib, qolgani borligini bildiriş kerak bölganda.
- Qaçon emas: Butun sahifa aylantiriş → `layout`; Köp sahifali ma'lumot → `pagination`
- Variantlar: data-axis=y|x (standart y); data-edge=fade|blur (standart fade); data-drag=true; data-fade=auto|none (standart auto)
- Klaviatura: ↑ ↓ / PageUp PageDown — Aylantiradi (fokus maydonda); ← → — Gorizontal maydonda aylantiradi
- Tokenlar: --fx-border-color-focus, --fx-border-width-focus, --fx-ease-standard, --fx-motion-fast, --fx-space-1, --fx-space-2, --fx-space-8, --fx-z-raised

```html
<div class="fx-scrollarea" data-fx-scrollarea aria-label="Oxirgi buyurtmalar" role="region" style="max-block-size: 9rem; max-inline-size: 22rem">
  <p>Buyurtma #1040 — yetkazib berilmoqda.</p>
  <p>Buyurtma #1041 — tayyorlanmoqda.</p>
  <p>Buyurtma #1042 — tölov kutilmoqda.</p>
  <p>Buyurtma #1043 — yakunlandi.</p>
  <p>Buyurtma #1044 — yetkazib berilmoqda.</p>
  <p>Buyurtma #1045 — tayyorlanmoqda.</p>
  <p>Buyurtma #1046 — tölov kutilmoqda.</p>
  <p>Buyurtma #1047 — yakunlandi.</p>
  <p>Buyurtma #1048 — yetkazib berilmoqda.</p>
  <p>Buyurtma #1049 — tayyorlanmoqda.</p>
</div>
<div class="fx-scrollarea" data-fx-scrollarea data-edge="blur" aria-label="Bugungi vazifalar" role="region" style="max-block-size: 9rem; max-inline-size: 22rem; margin-block-start: var(--fx-space-4)">
  <p>09:00 — Jasur Qodirovga qönğiroq.</p>
  <p>10:30 — «Baraka» MChJ bilan uçraşuv.</p>
  <p>12:00 — Hisob-faktura yuboriş.</p>
  <p>14:00 — Yangi mijozlar röyxatini tekşiriş.</p>
  <p>15:30 — Ğolib Ergashevga taklif.</p>
  <p>17:00 — Kunlik hisobot.</p>
</div>
```

- Qilmang: Maydonga balandlik/kenglik çegarasini bermasdan işlatmang — aylantiriş bölmaydi.
- Qilmang: Sönişni yagona işora qilib qöymang: uzun röyxatda hisoblagiç ham yozing.
- Qilmang: Içki çekinişli (padding) gorizontal qatorda scroll-padding-inline'siz scroll-snap — birinçi element 1–2 px surilib, çap çet notöğri sönadi; scroll-padding-inline = padding bering.

## Yopişqoq scroll hikoyasi (`scrollstory`, beta, 0.29.0 dan)

Mahsulot qanday işlaşini bosqiçma-bosqiç körsatadi (Aceternity Sticky Scroll Reveal): çapda matn qadamlari oddiy oqimda, öngda media yopişib turadi va köriniş markazidagi qadamga mos panel blur-fade bilan almaşadi. Faol qadam töq, çap çiziqda brend bölagi ösadi; qolganlari xira. Qadamlar va panellar tartib böyiça juftlanadi (yoki step[data-panel] = panel id). Tor joyda (telefon) media tepada yopişadi, qadamlar uning ostidan ötadi. data-media="start" — media çapda. Hodisa: fx-scrollstory-change. JS bölmasa — birinçi panel va töliq matn.

- Qaçon: Landing: «Qanday işlaydi» — 3–5 qadam, har biriga skrinşot yoki namuna. Hujjat yoki onboarding sahifasida jarayonni tuşuntiriş.
- Qaçon emas: Foydalanuvçi bosib ötadigan qadamlar (forma) → `wizard`; Xususiyatlar röyxati (hikoyasiz) → `features`
- Variantlar: data-media=end|start (standart end)
- Klaviatura: Tab — Qadam içidagi havolaga ötsa — qadam faollaşadi
- Tokenlar: --fx-bg-brand-solid, --fx-bg-subtle, --fx-border-color-default, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-ease-emphasized, --fx-ease-standard, --fx-font-size-xl, --fx-font-size-xs, --fx-font-weight-semibold, --fx-knob-motion, --fx-line-height-tight, --fx-motion-base, --fx-motion-scale-enter, --fx-motion-slow, --fx-radius-surface, --fx-shadow-md, --fx-space-10, --fx-space-12, --fx-space-2, --fx-space-4, --fx-space-6, --fx-text-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<section class="fx-scrollstory" data-fx-scrollstory aria-label="FoxUI qanday işlaydi">
  <ol class="fx-scrollstory__steps">
    <li class="fx-scrollstory__step"><p class="fx-scrollstory__kicker">1-qadam</p><h3 class="fx-scrollstory__title">Örnating</h3><p class="fx-scrollstory__text">Bitta buyruq loyihangizga tokenlar, komponentlar va qoidalarni qöşadi. Heç qanday Figma fayli kerak emas.</p></li>
    <li class="fx-scrollstory__step"><p class="fx-scrollstory__kicker">2-qadam</p><h3 class="fx-scrollstory__title">Mavzuni tanlang</h3><p class="fx-scrollstory__text">Sakkiz rang kutubxonasidan brendingizga eng yaqinini tanlang — qolgan hamma ranglar özi moslaşadi.</p></li>
    <li class="fx-scrollstory__step"><p class="fx-scrollstory__kicker">3-qadam</p><h3 class="fx-scrollstory__title">Komponent qöşing</h3><p class="fx-scrollstory__text">Narx jadvali, CRM kartasi yoki kalendar — har biri tayyor misol, holatlar va klaviatura bilan keladi.</p></li>
    <li class="fx-scrollstory__step"><p class="fx-scrollstory__kicker">4-qadam</p><h3 class="fx-scrollstory__title">Yangilanişni oling</h3><p class="fx-scrollstory__text">Yangi versiya taklif bölib keladi: nima özgarganini körasiz va bitta buyruq bilan olasiz.</p></li>
  </ol>
  <div class="fx-scrollstory__media" aria-hidden="true">
    <div class="fx-scrollstory__panel" style="display:grid;place-content:center;gap:var(--fx-space-3);padding:var(--fx-space-6);background:var(--fx-bg-overlay);color:var(--fx-bg-static-light);font-family:var(--fx-font-family-mono);font-size:var(--fx-font-size-sm)"><span>$ npx foxui init</span><span style="opacity:.7">✓ tokens.css · 212 komponent · AGENTS.md</span></div>
    <div class="fx-scrollstory__panel" style="display:grid;place-content:center;gap:var(--fx-space-3);padding:var(--fx-space-6);grid-template-columns:repeat(4,var(--fx-space-12))"><span style="aspect-ratio:1;border-radius:var(--fx-radius-control);background:var(--fx-bg-category-blue)"></span><span style="aspect-ratio:1;border-radius:var(--fx-radius-control);background:var(--fx-bg-category-green)"></span><span style="aspect-ratio:1;border-radius:var(--fx-radius-control);background:var(--fx-bg-category-coral)"></span><span style="aspect-ratio:1;border-radius:var(--fx-radius-control);background:var(--fx-bg-category-purple)"></span></div>
    <div class="fx-scrollstory__panel" style="display:grid;place-content:center;gap:var(--fx-space-3);padding:var(--fx-space-6)"><div class="fx-card" style="min-inline-size:16rem"><span class="fx-badge" data-tone="brand" style="justify-self:start">Ommabop</span><h4 class="fx-card__title">Jamoa</h4><p class="fx-card__text">490 000 söm / oy</p></div></div>
    <div class="fx-scrollstory__panel" style="display:grid;place-content:center;gap:var(--fx-space-3);padding:var(--fx-space-6);font-family:var(--fx-font-family-mono);font-size:var(--fx-font-size-sm)"><strong style="font-size:var(--fx-font-size-xl)">0.28.0 → 0.29.0</strong><span>+ 20 effekt · 3 tuzatiş</span><span style="color:var(--fx-text-secondary)">npx foxui update</span></div>
  </div>
</section>
```

- Qilmang: Muhim ma'lumotni faqat panelga qöymang — matn qadamda ham bölsin (panel bezak yoki tasvir).
- Qilmang: 6 tadan ortiq qadam qilmang — öquvçi çarçaydi; uzun hikoya — alohida sahifa.
- Qilmang: Ilova içida işlatmang — bu landing va hujjat sahifasi uçun.

## Qidiruv (`search`, beta, 0.9.0 dan)

Qidiruv maydoni: ikon, input type="search" va ixtiyoriy tugmalar maslahati (⌘K). Fokusda maslahat yaşiriladi. Kengaytma: aria-busy (yuklaniş spinneri), .fx-search__scope (qamrov select). Doira tanlagiçi va mobil töliq ekran (4.111): maydon ostida «Hammasi · Mijozlar · Bitimlar» (son bilan); data-mode="fullscreen" — telefonda fokusda qidiruv tepaga yopişib, natijalar paneli butun ekranni egallaydi, «←» va Esc yopadi. Tepa panel uçun tugma varianti (data-variant="trigger", 21.10): maydon emas, tugma — bosilsa buyruqlar oynasi oçiladi; kengda ~288 px, qisqaradi, tor ekranda özi ikon-tugmaga aylanadi.

- Qaçon: Röyxat, jadval yoki butun ilova böyiça qidiriş.
- Qaçon emas: Bir neçta maydonli filtr → `input`
- Variantlar: data-size=sm|md|lg (standart md); data-mode=inline|fullscreen (standart inline); data-variant=field|trigger|hero (standart field)
- Klaviatura: Enter — Qidiradi; Esc — Tozalaydi (brauzer); ← → (doirada) — Qidiruv doirasini almaştiradi (native radio); Esc (toʻliq ekran) — Matn bölsa tozalaydi, böş bölsa panelni yopadi
- Tokenlar: --fx-bg-brand-solid, --fx-bg-field, --fx-bg-muted, --fx-bg-page, --fx-bg-surface, --fx-border-color-default, --fx-border-color-field, --fx-border-color-focus, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-lg, --fx-control-h-md, --fx-control-h-sm, --fx-duration-pulse, --fx-duration-spin, --fx-ease-enter, --fx-ease-standard, --fx-font-size-lg, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-knob-field-fill, --fx-knob-pill, --fx-motion-base, --fx-motion-fast, --fx-motion-instant, --fx-motion-press, --fx-radius-badge, --fx-radius-circle, --fx-radius-control, --fx-radius-surface, --fx-size-icon-lg, --fx-size-icon-md, --fx-size-icon-sm, --fx-size-topbar, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-space-6, --fx-text-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<form role="search" class="fx-search">
  <svg viewBox="0 0 20 20" aria-hidden="true"><circle cx="9" cy="9" r="5.5" fill="none" stroke="currentColor" stroke-width="1.6"/><path d="m13 13 4 4" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/></svg>
  <input class="fx-search__input" type="search" placeholder="Qidiriş" aria-label="Qidiriş">
  <kbd class="fx-search__kbd">⌘K</kbd>
</form>
<div class="fx-search" role="search" aria-busy="true"><select class="fx-search__scope" aria-label="Qamrov"><option>Hammasi</option><option>Loyihalar</option></select><input class="fx-search__input" type="search" placeholder="Qidiriş" aria-label="Qidiriş"></div>
<form role="search" class="fx-search" data-mode="fullscreen" data-fx-search>
  <button class="fx-search__back" type="button" aria-label="Qidiruvni yopiş"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M12 5l-5 5 5 5" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
  <svg viewBox="0 0 20 20" aria-hidden="true"><circle cx="9" cy="9" r="5.5" fill="none" stroke="currentColor" stroke-width="1.6"/><path d="m13 13 4 4" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/></svg>
  <input class="fx-search__input" type="search" placeholder="Mijoz, bitim yoki telefon" aria-label="CRM böyiça qidiriş" aria-controls="sr-panel">
</form>
<fieldset class="fx-search__scopes" aria-label="Qidiruv doirasi">
  <label class="fx-search__scopes-item"><input type="radio" name="doira" value="hammasi" checked>Hammasi <span class="fx-search__scopes-count">1 284</span></label>
  <label class="fx-search__scopes-item"><input type="radio" name="doira" value="mijozlar">Mijozlar <span class="fx-search__scopes-count">846</span></label>
  <label class="fx-search__scopes-item"><input type="radio" name="doira" value="bitimlar">Bitimlar <span class="fx-search__scopes-count">392</span></label>
  <label class="fx-search__scopes-item"><input type="radio" name="doira" value="vazifalar">Vazifalar <span class="fx-search__scopes-count">46</span></label>
</fieldset>
<div class="fx-search__panel" id="sr-panel" hidden>
  <p class="fx-search__panel-title">Oxirgi qidiruvlar</p>
  <a class="fx-option" href="#">Dilnoza Rahimova</a>
  <a class="fx-option" href="#">+998 93 512 40 18</a>
  <a class="fx-option" href="#">Çilonzor filiali — yillik şartnoma</a>
</div>
<button class="fx-search" data-variant="trigger" type="button" data-fx-command-open="cmd" aria-label="Qidiriş (Ctrl K)">
  <svg viewBox="0 0 20 20" aria-hidden="true"><circle cx="9" cy="9" r="5.5" fill="none" stroke="currentColor" stroke-width="1.6"/><path d="m13 13 4 4" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/></svg>
  <span class="fx-search__label">Qidiriş</span>
  <kbd class="fx-search__kbd">Ctrl K</kbd>
</button>
<form class="fx-search" data-variant="hero" role="search" action="/qidiruv" method="get"><svg viewBox="0 0 256 256" aria-hidden="true"><path fill="currentColor" d="M229.66,218.34l-50.07-50.06a88.11,88.11,0,1,0-11.31,11.31l50.06,50.07a8,8,0,0,0,11.32-11.32ZM40,112a72,72,0,1,1,72,72A72.08,72.08,0,0,1,40,112Z"/></svg><input class="fx-search__input" type="search" name="q" placeholder="Şaxs, asar yoki joy — masalan, Alişer Navoiy" aria-label="Qidiriş"><kbd class="fx-search__kbd">Ctrl K</kbd><button class="fx-btn fx-search__go" data-variant="primary" type="submit"><span>Qidiriş</span><svg viewBox="0 0 256 256" aria-hidden="true"><path fill="currentColor" d="M221.66,133.66l-72,72a8,8,0,0,1-11.32-11.32L196.69,136H40a8,8,0,0,1,0-16H196.69L138.34,61.66a8,8,0,0,1,11.32-11.32l72,72A8,8,0,0,1,221.66,133.66Z"/></svg></button></form>
<div class="fx-search__hints" data-fx-searchhint><span>Masalan:</span><button class="fx-chip" type="button" data-value="Alisher Navoiy">Alişer Navoiy</button><button class="fx-chip" type="button" data-value="1441">1441</button><button class="fx-chip" type="button" data-value="Samarqand">Samarqand</button></div>
```

- Qilmang: Qidiruv tugmasini alohida qöymang — Enter yetadi.
- Qilmang: Doira tanlagiçida 5 tadan köp bandni qöymang — köpi filtr paneliga (filterbar) ötsin.

## Qidiruv natijalari sahifasi (`searchresults`, beta, 0.29.0 dan)

Sayt yoki ilova böyiça qidiruv natijalari sahifasi (4.196): katta qidiruv maydoni (sörov saqlangan), xulosa («narx» böyiça 48 ta natija), imlo taklifi («Balki … demoqçimisiz?»), qamrov yorliqlari (soni bilan, aria-current) va saralaş; çapda fx-facets, öngda natijalar. Har natija: joylaşuv yöli, sarlavha havolasi (körilgan havola biroz sönadi), parça — mos sözlar <mark> bilan (fon + qalin). Eng mos natija data-type="best" bilan kartada. Natija yöq bölsa — .fx-searchresults__none: tekşiriş maslahatlari va maşhur sahifalar havolalari. Pastda fx-pagination. Qidiruv mexanizmi ilovada; naqş tuzilma va holatlarni beradi.

- Qaçon: Sayt yoki hujjat böyiça töliq qidiruv sahifasi. Katalog, bilim bazasi va yordam markazi qidiruvi.
- Qaçon emas: Tezkor buyruq va sahifaga ötiş (Ctrl+K) → `command`; Jadval ustidagi filtr qatori → `filterbar`; Faqat qidiruv maydoni → `search`
- Variantlar: data-type=best (standart default)
- Klaviatura: Enter (maydonda) — Qidiradi; Tab — Maydon → qamrov → saralaş → filtrlar → natijalar → sahifalar
- Tokenlar: --fx-bg-brand-solid, --fx-bg-surface, --fx-bg-warning-subtle, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-strong, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-dialog-width, --fx-ease-standard, --fx-font-size-lg, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-regular, --fx-font-weight-semibold, --fx-line-height-relaxed, --fx-line-height-snug, --fx-motion-fast, --fx-radius-badge, --fx-radius-control, --fx-radius-surface, --fx-shadow-sm, --fx-size-min-target, --fx-space-1, --fx-space-10, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-space-6, --fx-space-8, --fx-text-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<div class="fx-searchresults">
  <div class="fx-searchresults__top">
    <form class="fx-searchresults__form" role="search" aria-label="Sayt böyiça qidiruv"><label class="fx-search"><svg viewBox="0 0 20 20" aria-hidden="true"><circle cx="9" cy="9" r="5.5" fill="none" stroke="currentColor" stroke-width="1.5"/><path d="m13.5 13.5 3.5 3.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg><input class="fx-search__input" type="search" name="q" value="narx jadvali" aria-label="Qidiruv sörovi"></label><button class="fx-btn" data-variant="primary" type="submit">Qidiriş</button></form>
    <p class="fx-searchresults__summary" role="status">«<b>narx jadvali</b>» böyiça <b>48</b> ta natija</p>
    <p class="fx-searchresults__suggest">Balki <a href="#">narxlar jadvali</a> demoqçimisiz?</p>
  </div>
  <div class="fx-searchresults__bar">
    <ul class="fx-searchresults__scopes" aria-label="Qamrov"><li><a class="fx-searchresults__scope" href="#" aria-current="page">Hammasi <span>48</span></a></li><li><a class="fx-searchresults__scope" href="#">Komponentlar <span>12</span></a></li><li><a class="fx-searchresults__scope" href="#">Hujjatlar <span>27</span></a></li><li><a class="fx-searchresults__scope" href="#">Blog <span>9</span></a></li></ul>
    <label class="fx-searchresults__sort">Saralaş: <span class="fx-select-wrap"><select class="fx-select"><option>Eng mos</option><option>Eng yangi</option></select></span></label>
  </div>
  <aside class="fx-facets" data-fx-facets aria-label="Natijalarni filtrlaş">
    <div class="fx-facets__head"><h2 class="fx-facets__title">Filtrlar</h2><button class="fx-facets__clear" type="button" data-facets-clear hidden>Tozalaş (<span data-facets-count>0</span>)</button></div>
    <details class="fx-facets__group" open><summary class="fx-facets__legend">Turi <span class="fx-facets__badge" hidden></span></summary><div class="fx-facets__body"><ul class="fx-facets__list" aria-label="Turi"><li><label class="fx-facets__option"><span class="fx-check"><input type="checkbox" name="tur" value="naqsh"><span class="fx-check__box"></span></span><span class="fx-facets__label">Naqş</span><span class="fx-facets__count">8</span></label></li><li><label class="fx-facets__option"><span class="fx-check"><input type="checkbox" name="tur" value="komponent"><span class="fx-check__box"></span></span><span class="fx-facets__label">Komponent</span><span class="fx-facets__count">4</span></label></li><li><label class="fx-facets__option"><span class="fx-check"><input type="checkbox" name="tur" value="qollanma"><span class="fx-check__box"></span></span><span class="fx-facets__label">Qöllanma</span><span class="fx-facets__count">21</span></label></li></ul></div></details>
    <details class="fx-facets__group" open><summary class="fx-facets__legend">Versiya <span class="fx-facets__badge" hidden></span></summary><div class="fx-facets__body"><ul class="fx-facets__list" aria-label="Versiya"><li><label class="fx-facets__option"><span class="fx-check"><input type="checkbox" name="v" value="028"><span class="fx-check__box"></span></span><span class="fx-facets__label">0.28</span><span class="fx-facets__count">31</span></label></li><li><label class="fx-facets__option"><span class="fx-check"><input type="checkbox" name="v" value="027"><span class="fx-check__box"></span></span><span class="fx-facets__label">0.27</span><span class="fx-facets__count">17</span></label></li></ul></div></details>
  </aside>
  <div class="fx-searchresults__main">
    <ol class="fx-searchresults__list">
      <li class="fx-searchresults__item" data-type="best"><ol class="fx-searchresults__path" aria-label="Joylaşuv"><li>foxui.dev</li><li>Atom</li><li>Naqşlar</li></ol><h3 class="fx-searchresults__title"><a class="fx-searchresults__link" href="#">Narx jadvali — <mark>fx-pricing</mark></a></h3><p class="fx-searchresults__snippet">Oylik/yillik almaştirgiç, «eng ommabop» belgisi va xususiyatlarni taqqoslaş <mark>jadvali</mark>. <mark>Narx</mark> sömda, yillikda tejov foizi bilan.</p><div class="fx-searchresults__meta"><span class="fx-badge" data-size="sm">Naqş</span><span>0.28 dan beri</span></div></li>
      <li class="fx-searchresults__item"><ol class="fx-searchresults__path" aria-label="Joylaşuv"><li>foxui.dev</li><li>Blog</li></ol><h3 class="fx-searchresults__title"><a class="fx-searchresults__link" href="#">0.28: 100 ta yangi naqş va «Işxona»</a></h3><p class="fx-searchresults__snippet">…xato sahifalari, <mark>narx jadvali</mark>, FAQ va CTA bölimlari — marketing saytini bir kunda yiğiş uçun…</p><div class="fx-searchresults__meta"><span class="fx-badge" data-size="sm">Blog</span><time datetime="2026-10-14">14-oktabr 2026</time></div></li>
      <li class="fx-searchresults__item"><ol class="fx-searchresults__path" aria-label="Joylaşuv"><li>foxui.dev</li><li>Hujjat</li><li>Tokenlar</li></ol><h3 class="fx-searchresults__title"><a class="fx-searchresults__link" href="#">Raqamlar va valyuta: söm formatlaş</a></h3><p class="fx-searchresults__snippet"><mark>Narx</mark>ni «1 200 000 söm» körinişida çiqariş, <mark>jadval</mark> ustunlarida raqamlarni öngga tekislaş va tabular-nums.</p><div class="fx-searchresults__meta"><span class="fx-badge" data-size="sm">Qöllanma</span><time datetime="2026-10-02">2-oktabr 2026</time></div></li>
    </ol>
    <div class="fx-searchresults__none" hidden><p class="fx-searchresults__none-title">«narx jadvalli» böyiça heç narsa topilmadi</p><ul><li>Imloni tekşiring yoki qisqaroq söz yozing.</li><li>Filtrlarni tozalang — natijalar toraygan bölişi mumkin.</li><li>Ö va Ğ harflarini apostrofsiz yozsangiz ham topiladi.</li></ul><ul class="fx-searchresults__popular" aria-label="Maşhur sahifalar"><li><a class="fx-chip" href="#">Tugma</a></li><li><a class="fx-chip" href="#">Jadval</a></li><li><a class="fx-chip" href="#">Örnatiş</a></li></ul></div>
    <nav class="fx-pagination" aria-label="Natija sahifalari"><a class="fx-pagination__page" aria-disabled="true" aria-label="Oldingi">‹</a><a class="fx-pagination__page" href="#" aria-current="page">1</a><a class="fx-pagination__page" href="#">2</a><a class="fx-pagination__page" href="#">3</a><a class="fx-pagination__page" href="#" aria-label="Keyingi">›</a></nav>
  </div>
</div>
```

- Qilmang: Natija yöq sahifasini böş qoldirmang — imlo taklifi, maslahat va maşhur havolalar bering.
- Qilmang: Moslikni faqat rang bilan ajratmang — <mark> fon va qalin şrift bilan.
- Qilmang: Sörovni maydondan öçirib yubormang — foydalanuvçi uni tuzatib qayta qidiradi.
- Qilmang: Natija parçasini sarlavhani takrorlab yozmang — matndan sörov atrofidagi qismni oling.

## Bölim sarlavhasi (`section-head`, beta, 0.22.0 dan)

Sahifa içidagi bölim: sarlavha, izoh, öngda amallar, ixtiyoriy pastki çiziq. Sarlavha darajasi (h2/h3) mazmunga qarab tanlanadi.

- Qaçon: Bir sahifada bir neçta bölim; har bölimning öz amali.
- Qaçon emas: Sahifa boşi (h1, breadcrumbs) → `page-header`; Kartaning içki sarlavhasi → `card`
- Variantlar: data-size=sm (standart md)
- Tokenlar: --fx-border-color-default, --fx-border-width-default, --fx-font-size-lg, --fx-font-size-md, --fx-font-size-sm, --fx-font-weight-semibold, --fx-space-1, --fx-space-2, --fx-space-4, --fx-text-primary, --fx-text-secondary

```html
<header class="fx-section-head" data-divider>
  <div class="fx-section-head__text"><h2 class="fx-section-head__title">Jamoa a'zolari</h2><p class="fx-section-head__desc">Kim nima qila olişini boşqaring.</p></div>
  <div class="fx-section-head__actions"><button class="fx-btn" type="button">Taklif qiliş</button></div>
</header>
```

- Qilmang: Sahifaning boş sarlavhasi (h1) uçun işlatmang — page-header.
- Qilmang: Sarlavha darajasini köriniş uçun tanlamang.

## Segment (`segment`, beta, 0.12.0 dan)

Bir xil ma'lumotning 2–4 körinişi orasida tanlaş (Oylik / Yillik, Röyxat / Jadval). Tugmalar guruhi: tanlangani aria-pressed="true"; filtr havolalari bölsa aria-current="page". Panelli tablar — fx-tabs. Kengaytma: data-fill (töliq en), data-icon-only, data-multi (toggle guruhi), sm ölçamda ≥24px bosiş maydoni. Forma varianti: <label class="fx-segment__item"><input type="radio"> — JS'siz yuboriladi, tanlangani :checked.

- Qaçon: 2–4 ta teng variantdan bittasini darhol tanlaş; tanlov sahifa mazmunini almaştiradi.
- Qaçon emas: Har variantning öz paneli bor → `tabs`; Sahifalar orasida ötiş → `nav`
- Variantlar: data-size=sm|md (standart md); data-fill=true; data-icon-only=true; data-multi=true
- Klaviatura: Tab, Enter/Space — Tanlaydi
- Tokenlar: --fx-bg-muted, --fx-bg-surface, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-md, --fx-control-h-sm, --fx-ease-spring, --fx-ease-standard, --fx-font-size-sm, --fx-font-weight-medium, --fx-knob-pill, --fx-motion-base, --fx-motion-fast, --fx-motion-instant, --fx-motion-press, --fx-motion-slow, --fx-radius-control, --fx-shadow-sm, --fx-size-icon-md, --fx-size-min-target, --fx-space-1, --fx-space-2, --fx-space-4, --fx-text-primary, --fx-text-secondary

```html
<div class="fx-segment" role="group" aria-label="Tölov davri">
  <button class="fx-segment__item" aria-pressed="true">Oylik</button>
  <button class="fx-segment__item" aria-pressed="false">Yillik</button>
</div>
<div class="fx-segment" data-fill data-multi role="group" aria-label="Matn uslubi"><button type="button" class="fx-segment__item" aria-pressed="true">Qalin</button><button type="button" class="fx-segment__item" aria-pressed="true">Qiya</button><button type="button" class="fx-segment__item" aria-pressed="false">Tagiga çizilgan</button></div>
<form><div class="fx-segment" role="radiogroup" aria-label="Baho"><label class="fx-segment__item"><input type="radio" name="baho" value="zor">Zör</label><label class="fx-segment__item"><input type="radio" name="baho" value="yaxshi" checked>Yaxşi</label><label class="fx-segment__item"><input type="radio" name="baho" value="yomon">Yomon</label></div></form>
```

- Qilmang: 5 tadan köp variant qöymang — select.

## Tanlov (select) (`select`, beta, 0.9.0 dan)

Röyxatdan bitta qiymat: native <select> maydon şaklida. OTA QOIDA (FX-SELECT-01): har fx-select oçilganda tizim uslubidagi röyxatni körsatadi — sirt, yoy, soya, hover'da muted, tanlangani brend tusida ✓ bilan, strelka oçilganda aylanadi (appearance: base-select; qöllamaydigan brauzerda native). Brauzerning standart (kök fonli) röyxati heç qayerda qolmaydi; fx-input bilan select yozilmaydi — qöriqçi uşlaydi. .fx-select-wrap içiga oling. Böş birinçi variant (value="") — xira matn. Kengaytma: optgroup, ikon/avatar va tavsifli boy röyxat (data-rich), telefonda pastki varaq (data-fx-adaptive). Matn içidagi tanlov (data-variant="inline", 20.10 — heroui.pro Inline Select'dan): «Narx <tanlov> böyiça saralangan» — qutisiz, brend rangida, nuqtali tagçiziq, röyxat — öşa tizim ::picker'i.

- Qaçon: 5–15 ta variantdan bittasini tanlaş.
- Qaçon emas: 2–4 variant, hammasi körinsin → `check`; Köp variant, qidiruv kerak → `combobox`
- Variantlar: data-size=sm|md (standart md); data-rich=true; data-fx-adaptive=true; data-variant=inline (standart field)
- Klaviatura: ↑ ↓, Enter — Tanlaydi (brauzer)
- Tokenlar: --fx-bg-brand-subtle, --fx-bg-field, --fx-bg-muted, --fx-bg-surface, --fx-border-color-error, --fx-border-color-field, --fx-border-color-focus, --fx-border-color-strong, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-md, --fx-control-h-sm, --fx-ease-standard, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-regular, --fx-font-weight-semibold, --fx-knob-field-fill, --fx-knob-pill, --fx-motion-fast, --fx-radius-badge, --fx-radius-control, --fx-radius-nav, --fx-radius-overlay, --fx-shadow-lg, --fx-size-icon-sm, --fx-size-touch-target, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-text-brand, --fx-text-disabled, --fx-text-primary, --fx-text-tertiary

```html
<label class="fx-field">
  <span class="fx-label">Viloyat</span>
  <span class="fx-select-wrap"><select class="fx-select">
    <option value="">Tanlang</option>
    <option>Toşkent</option>
    <option>Samarqand</option>
    <option>Farğona</option>
  </select></span>
</label>
<div class="fx-select-wrap"><select class="fx-select" aria-label="Şahar"><optgroup label="Viloyat markazlari"><option>Samarqand</option></optgroup><optgroup label="Poytaxt"><option>Toşkent</option></optgroup></select></div>
<!-- Moslashuvchi (4.26): boy roʻyxat telefonda pastki varaq -->
<label class="fx-label" for="sel-adapt">Filial</label>
<select class="fx-select" id="sel-adapt" data-rich data-fx-adaptive><option>Toşkent</option><option>Samarqand</option><option>Buxoro</option></select>
<p style="margin-block-start:var(--fx-space-6)">Mijozlar <span class="fx-select-wrap"><select class="fx-select" data-variant="inline" aria-label="Saralaş"><option>oxirgi faollik</option><option>nomi</option><option>qarz miqdori</option></select></span> böyiça, <span class="fx-select-wrap"><select class="fx-select" data-variant="inline" aria-label="Davr"><option>şu oyda</option><option>şu yilda</option><option>hamma vaqt</option></select></span> saralangan.</p>
```

- Qilmang: 5 tadan kam variant uçun select qilmang — radio yoki segment.
- Qilmang: Qidiruvli katta röyxat uçun native select yetmaydi — combobox (keyinroq).

## Sessiya tugaşi ogohlantirişi (`sessionwarn`, beta, 0.29.0 dan)

Xavfsizlik uçun sessiya muddati tugaşidan oldingi ogohlantiriş (4.197, GOV.UK/HMRC «Timeout warning»): modal alertdialog (fx-dialog ustida) data-warn soniya (standart 120) qolganda özi oçiladi — soat belgisi, katta teskari sanoq, qolgan vaqt çiziği va ikki tugma: «Davom etiş» (asosiy, autofocus, Esc ham şu) va «Çiqiş». data-timeout — sessiya muddati (soniya); ogohlantirişgaça foydalanuvçi faolligi taymerni qayta boşlaydi (data-activity="off" — faqat server muddati). 30 soniyadan kam qolganda data-state="urgent". Tugaganda .fx-sessionwarn__expired körinadi va «fx-sessionwarn-expired» hodisasi çiqadi. Hodisalar: fx-sessionwarn-extend (ilova sessiyani serverda uzaytiradi), fx-sessionwarn-signout (data-signout-url bölsa — öşa manzilga). Dasturiy: el.fxSession.reset() / .warn(soniya).

- Qaçon: Bank, davlat xizmati, CRM va admin panellarida sessiya muddati bor bölsa. Uzun forma töldirilayotgan, ma'lumot yöqolişi mumkin bölgan sahifalar.
- Qaçon emas: Aksiya yoki taklif tugaşiga sanoq → `countdown`; Oddiy tasdiq oynasi → `dialog`; Internet uzilgani haqida xabar → `offline`
- Variantlar: data-activity=off (standart on)
- Klaviatura: Enter, Space — Fokusdagi tugma (oçilganda — «Davom etiş»); Esc — Davom etiş — sessiya uzaytiriladi; Tab — Ikki tugma orasida (fokus oyna içida)
- Tokenlar: --fx-bg-muted, --fx-bg-warning-subtle, --fx-control-h-lg, --fx-ease-standard, --fx-fg-error, --fx-fg-warning, --fx-font-adjust-mono, --fx-font-family-mono, --fx-font-size-display-md, --fx-font-size-sm, --fx-font-weight-semibold, --fx-line-height-tight, --fx-motion-base, --fx-motion-slower, --fx-radius-circle, --fx-radius-pill, --fx-sessionwarn-left, --fx-size-icon-lg, --fx-space-1, --fx-space-3, --fx-text-error, --fx-text-primary, --fx-text-secondary

```html
<button class="fx-btn" type="button" data-sessionwarn-open="sw1">Ogohlantirişni körsatiş (namuna)</button>
<dialog class="fx-dialog fx-sessionwarn" id="sw1" data-fx-sessionwarn data-timeout="900" data-warn="120" data-signout-url="#chiqish" role="alertdialog" closedby="none" aria-labelledby="sw1-t" aria-describedby="sw1-d" data-size="sm">
  <div class="fx-sessionwarn__main">
    <span class="fx-sessionwarn__icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"><circle cx="12" cy="13" r="8"/><path d="M12 9v4l2.5 2M9 2h6"/></svg></span>
    <h2 class="fx-dialog__title" id="sw1-t">Sessiya tugayapti</h2>
    <p class="fx-sessionwarn__text" id="sw1-d">Xavfsizlik uçun faolsiz qolgan hisobdan avtomatik çiqasiz. Saqlanmagan özgarişlar yöqolişi mumkin.</p>
    <span class="fx-sessionwarn__time" aria-hidden="true">2:00</span>
    <span class="fx-sessionwarn__bar" aria-hidden="true"></span>
    <div class="fx-dialog__actions"><button class="fx-btn" type="button" data-sessionwarn="signout">Çiqiş</button><button class="fx-btn" type="button" data-variant="primary" data-sessionwarn="extend" autofocus>Davom etiş</button></div>
  </div>
  <div class="fx-sessionwarn__expired" hidden>
    <span class="fx-sessionwarn__icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"><rect x="5" y="11" width="14" height="10" rx="2"/><path d="M8 11V8a4 4 0 0 1 8 0v3"/></svg></span>
    <h2 class="fx-dialog__title">Sessiya tugadi</h2>
    <p class="fx-sessionwarn__text">Xavfsizlik uçun tizimdan çiqdingiz. Davom etiş uçun qayta kiring.</p>
    <div class="fx-dialog__actions"><a class="fx-btn" data-variant="primary" href="#kirish">Qayta kiriş</a></div>
  </div>
</dialog>
```

- Qilmang: Ogohlantirişsiz çiqarib yubormang — kamida 2 daqiqa oldin ayting (WCAG 2.2.1).
- Qilmang: Har soniyani ekran öquvçiga aytmang — faqat oçilganda, har daqiqada va oxirgi 20 soniyada.
- Qilmang: Taşqariga bosiş bilan yopiladigan qilmang — tanlov aniq bölsin; Esc esa «Davom etiş» deb hisoblanadi.
- Qilmang: Muddat tugagaç ma'lumotni jimgina taşlab yubormang — iloji bölsa qoralamani saqlang va buni ayting.

## Sozlamalar sahifasi (`settings`, beta, 0.23.0 dan)

Sozlamalar uçun tayyor qolip: çapda bölimlar menyusi (mobilda gorizontal), öngda bölimlar — sarlavha, izoh va karta içida «yorliq çapda, boşqaruv öngda» qatorlari; xavfli hudud varianti va yopişqoq saqlaş paneli. Faqat CSS.

- Qaçon: Hisob, loyiha yoki jamoa sozlamalari — köp mayda boşqaruv, bölimlarga bölingan.
- Qaçon emas: Bitta qadamli forma → `input`; Bosqiçma-bosqiç jarayon → `wizard`
- Variantlar: data-tone=default|danger (standart default)
- Klaviatura: Tab — Bölim havolalari, keyin boşqaruvlar
- Tokenlar: --fx-bg-brand-subtle, --fx-bg-muted, --fx-bg-pressed, --fx-bg-surface, --fx-border-color-default, --fx-border-color-error, --fx-border-color-focus, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-dialog-width, --fx-font-size-lg, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-nav-item-height, --fx-nav-width, --fx-radius-nav, --fx-radius-surface, --fx-shadow-md, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-space-6, --fx-space-8, --fx-text-brand, --fx-text-error, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<div class="fx-settings">
  <nav class="fx-settings__nav" aria-label="Sozlamalar bölimlari">
    <a class="fx-settings__link" href="#s-profil" aria-current="page">Profil</a>
    <a class="fx-settings__link" href="#s-xabar">Xabarnomalar</a>
    <a class="fx-settings__link" href="#s-xavf">Xavfli hudud</a>
  </nav>
  <form class="fx-settings__main">
    <section class="fx-settings__section" id="s-profil" aria-labelledby="s-profil-t">
      <h2 class="fx-settings__title" id="s-profil-t">Profil</h2>
      <p class="fx-settings__desc">Jamoadoşlaringiz sizni şu ma'lumotlar bilan köradi.</p>
      <div class="fx-settings__card">
        <label class="fx-settings__row"><span class="fx-settings__label"><span class="fx-settings__name">Ism</span><span class="fx-settings__hint">Töliq ismingiz.</span></span><span class="fx-settings__control"><input class="fx-input" value="Aziz Karimov"></span></label>
        <label class="fx-settings__row"><span class="fx-settings__label"><span class="fx-settings__name">Email</span><span class="fx-settings__hint">Kiriş va xabarlar uçun.</span></span><span class="fx-settings__control"><input class="fx-input" type="email" value="aziz@misol.uz"></span></label>
      </div>
    </section>
    <section class="fx-settings__section" id="s-xabar" aria-labelledby="s-xabar-t">
      <h2 class="fx-settings__title" id="s-xabar-t">Xabarnomalar</h2>
      <div class="fx-settings__card">
        <div class="fx-settings__row"><span class="fx-settings__label"><span class="fx-settings__name">Eslatmalar</span><span class="fx-settings__hint">Kimdir sizni tilga olsa.</span></span><span class="fx-settings__control"><label class="fx-check" data-type="switch"><input type="checkbox" role="switch" checked aria-label="Eslatmalar"><span class="fx-check__box"></span></label></span></div>
        <div class="fx-settings__row"><span class="fx-settings__label"><span class="fx-settings__name">Haftalik hisobot</span><span class="fx-settings__hint">Duşanba kuni emailga.</span></span><span class="fx-settings__control"><label class="fx-check" data-type="switch"><input type="checkbox" role="switch" aria-label="Haftalik hisobot"><span class="fx-check__box"></span></label></span></div>
      </div>
    </section>
    <section class="fx-settings__section" id="s-xavf" data-tone="danger" aria-labelledby="s-xavf-t">
      <h2 class="fx-settings__title" id="s-xavf-t">Xavfli hudud</h2>
      <div class="fx-settings__card"><div class="fx-settings__row"><span class="fx-settings__label"><span class="fx-settings__name">Hisobni öçiriş</span><span class="fx-settings__hint">Bu amalni qaytarib bölmaydi.</span></span><span class="fx-settings__control"><button class="fx-btn" type="button" data-variant="danger">Öçiriş</button></span></div></div>
    </section>
    <div class="fx-settings__foot"><span class="fx-settings__foot-note">Saqlanmagan özgarişlar bor</span><button class="fx-btn" type="reset">Bekor qiliş</button><button class="fx-btn" type="submit" data-variant="primary">Saqlaş</button></div>
  </form>
</div>
```

- Qilmang: Bitta sahifaga 8 dan köp bölim yiğmang — bölimlar guruhlansin yoki alohida sahifa.
- Qilmang: Har özgarişni darhol saqlab, saqlaş tugmasini ham qoldirmang — bitta usul tanlang.

## Ulaşiş (`share`, beta, 0.24.0 dan)

Ulaşiş mazmuni (odatda .fx-dialog içida): havola + «Nusxalaş» (holat aria-live bilan), ruxsat berilgan odamlar va rol tanlovi («Olib taşlaş» qatorni öçiradi), umumiy kiriş darajasi (izohi tanlovga qarab özgaradi).

- Qaçon: Hujjat, loyiha yoki fayl uçun havola oliş va kimlar oçişi mumkinligini boşqariş kerak bölganda.
- Qaçon emas: Faqat matnni nusxalaş → `copy`; Jamoa a'zolarini boşqariş sahifasi → `settings`
- Klaviatura: Tab — Havola, rollar, kiriş darajasi orasida; Enter/Space — Nusxalaydi; Esc — Dialogni yopadi (dialog içida)
- Tokenlar: --fx-border-color-default, --fx-border-width-default, --fx-fg-success, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-semibold, --fx-space-2, --fx-space-3, --fx-space-4, --fx-text-secondary, --fx-text-tertiary

```html
<button class="fx-btn" type="button" command="show-modal" commandfor="sh1">Ulaşiş</button>
<dialog class="fx-dialog" id="sh1" aria-labelledby="sh1t">
  <h2 class="fx-dialog__title" id="sh1t">Hujjatni ulaşiş</h2>
  <div class="fx-share" data-fx-share>
    <div class="fx-share__link">
      <input class="fx-input fx-share__url" readonly value="https://app.example.uz/d/narxlar-2026" aria-label="Havola">
      <button class="fx-btn fx-share__copy" type="button" data-variant="primary">Nusxalaş</button>
    </div>
    <p class="fx-share__status"></p>
    <ul class="fx-share__people">
      <li class="fx-share__person" data-who="Rahim Sadiy"><span class="fx-avatar" data-size="sm" data-color="yellow" role="img" aria-label="Rahim Sadiy">RS</span><span class="fx-share__who"><b>Rahim Sadiy</b><small>rahim@example.uz</small></span><span class="fx-share__owner">Egasi</span></li>
      <li class="fx-share__person" data-who="Dilnoza Karimova"><span class="fx-avatar" data-size="sm" data-color="coral" role="img" aria-label="Dilnoza Karimova">DK</span><span class="fx-share__who"><b>Dilnoza Karimova</b><small>dilnoza@example.uz</small></span><select class="fx-select fx-share__role" aria-label="Dilnoza Karimova roli"><option value="edit" selected>Tahrirlovçi</option><option value="comment">Izoh qoldiruvçi</option><option value="view">Köruvçi</option><option value="remove">Olib taşlaş</option></select></li>
      <li class="fx-share__person" data-who="Jasur Aliyev"><span class="fx-avatar" data-size="sm" data-color="purple" role="img" aria-label="Jasur Aliyev">JA</span><span class="fx-share__who"><b>Jasur Aliyev</b><small>jasur@example.uz</small></span><select class="fx-select fx-share__role" aria-label="Jasur Aliyev roli"><option value="edit">Tahrirlovçi</option><option value="comment">Izoh qoldiruvçi</option><option value="view" selected>Köruvçi</option><option value="remove">Olib taşlaş</option></select></li>
    </ul>
    <div class="fx-share__access">
      <label for="sh1a">Umumiy kiriş</label>
      <select class="fx-select" id="sh1a"><option value="private" data-hint="Faqat yuqoridagi odamlar oçişi mumkin." selected>Faqat taklif qilinganlar</option><option value="link-view" data-hint="Havolasi borlarning hammasi köra oladi.">Havolasi borlar körişi mumkin</option><option value="link-comment" data-hint="Havolasi borlar köradi va izoh qoldiradi.">Havolasi borlar izoh qoldirişi mumkin</option></select>
      <p class="fx-share__hint">Faqat yuqoridagi odamlar oçişi mumkin.</p>
    </div>
  </div>
  <form method="dialog" class="fx-dialog__actions"><button class="fx-btn">Tayyor</button></form>
</dialog>
```

- Qilmang: Umumiy kirişni jimgina “oçiq” qilib qöymang — standart faqat taklif qilinganlar.
- Qilmang: Rolni faqat rang bilan farqlamang: rol nomi yozuvda turadi.

## Yon varaq (`sheet`, beta, 0.11.0 dan)

Ekran çetidan çiqadigan panel: qator tafsiloti, filtrlar, telefonda menyu. Native <dialog> (showModal) — fokus tuzoği va Esc brauzerda. Öngdan (standart) yoki pastdan. Kengaytma: data-side=start, data-size=sm|lg|xl|full, RTL yönalişga moslaşadi, data-mode=push (modalsiz, .show(), kontent siqiladi), .fx-sheet__grip. Töxtaş nuqtalari (4.153): pastki varaq data-detents="half full" — yarim va töliq balandlikda töxtaydi; tutqiç (button) sudraladi, ↑ ↓ bilan almaşadi, pastga taşlansa yopiladi.

- Qaçon: Röyxatdan çiqmasdan tafsilot köriş yoki tahrirlaş; telefonda filtr va menyu.
- Qaçon emas: Qisqa tasdiq → `dialog`
- Variantlar: data-side=end|bottom|start (standart end); data-size=sm|lg|xl|full; data-mode=push; data-detents=half full; data-detent=half|full (standart half)
- Klaviatura: Esc — Yopadi; Tab — Fokus varaq içida aylanadi; ↑ ↓ (tutqichda) — Töxtaş nuqtasini özgartiradi; eng kiçigidan ↓ — yopadi
- Tokenlar: --fx-bg-overlay, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-strong, --fx-border-width-default, --fx-border-width-focus, --fx-dialog-width, --fx-ease-enter, --fx-ease-exit, --fx-ease-sheet, --fx-font-size-lg, --fx-font-weight-semibold, --fx-motion-exit-slow, --fx-motion-slower, --fx-radius-circle, --fx-radius-overlay, --fx-shadow-lg, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-space-6, --fx-space-8, --fx-text-primary, --fx-text-tertiary

```html
<button class="fx-btn" commandfor="s1" command="show-modal">Tafsilot</button>
<dialog class="fx-sheet" id="s1" aria-labelledby="s1t">
  <div class="fx-sheet__head"><h2 class="fx-sheet__title" id="s1t">Ariza №128</h2><form method="dialog"><button class="fx-btn" data-variant="ghost" data-shape="icon" aria-label="Yopiş">×</button></form></div>
  <div class="fx-sheet__body"><p>Ism, telefon, xabar va holat şu yerda.</p></div>
  <form method="dialog" class="fx-sheet__foot"><button class="fx-btn">Yopiş</button><button class="fx-btn" data-variant="primary">Saqlaş</button></form>
</dialog>
<dialog class="fx-sheet" data-side="start" data-size="sm" aria-labelledby="sh-b2"><div class="fx-sheet__head"><h2 class="fx-sheet__title" id="sh-b2">Filtrlar</h2></div><div class="fx-sheet__body">Çap tomondan çiqadi.</div></dialog>
<!-- Toʻxtash nuqtalari (4.153) -->
<button class="fx-btn" commandfor="sh-det" command="show-modal">Buyurtma tafsiloti</button>
<dialog class="fx-sheet" id="sh-det" data-side="bottom" data-detents="half full" data-fx-sheet aria-labelledby="sh-det-t">
  <button class="fx-sheet__grip" type="button" aria-label="Varaq balandligi"></button>
  <div class="fx-sheet__head"><h2 class="fx-sheet__title" id="sh-det-t">Buyurtma №214</h2><form method="dialog"><button class="fx-btn" data-variant="ghost" data-shape="icon" aria-label="Yopiş">×</button></form></div>
  <div class="fx-sheet__body"><p>Mijoz: Aziz Karimov · 3 ta mahsulot · 1 200 000 söm. Yuqoriga torting — töliq tafsilot, pastga — yopiş.</p></div>
</dialog>
```

- Qilmang: Varaq içida yana varaq oçmang.

## Ilova karkasi (`shell`, beta, 0.13.0 dan)

Ilova sahifasi qobiği: çapda yon menyu (256, yiğilganda 60), tepada panel (60) — yiğiş tugmasi, yöl satri, global amallar; iş maydoni. < 840 px: menyu çapdan çiqadigan varaq. Xulq foxui.js'da (data-fx-shell): tugma va Ctrl/⌘+B. Rels varianti (data-variant="rail", WDS S3): çapda rels (.fx-shell__rail içida .fx-rail), yonida bölim paneli — yiğilganda panel yöqoladi, rels qoladi; telefonda rels pastki panel; data-mobile="top" — telefonda faqat tepa panel (rels yaşiriladi, bölimlar butun ekran yon varaq boşida, Cursor kabi). Öng yordamçi panel (2.139): .fx-shell__aside — tafsilot/izoh/faollik, [data-fx-shell-aside-toggle] bilan oçiladi-yopiladi; torda öngdan çiqadigan varaq. Suzuvçi va içki variantlar (4.157, shadcn): data-variant="floating" — yon menyu sahifa çetidan ajralgan karta; data-variant="inset" — yon menyu fonda, tepa panel va iş maydoni bitta yumaloq yuza içida (iş maydoni özi aylanadi). Torda ikkalasi ham oddiy varaqqa qaytadi.

- Qaçon: Bir neçta bölimli ilova: CRM, kabinet, admin. Brend kabinet yoki marketing körinişidagi ilova — yon menyu karta (floating) yoki iş maydoni ajralgan yuza (inset) bölsin deyilganda.
- Qaçon emas: Marketing sayt yoki hujjat sahifasi → `page`
- Variantlar: data-variant=sidebar|rail|floating|inset (standart sidebar); data-mobile=bottom|top (standart bottom)
- Klaviatura: Ctrl/⌘ + B — Menyuni yiğadi / yoyadi (torda — varaqni oçadi); Esc — Torda varaqni yopadi; Esc — Torda öng panelni yopadi
- Tokenlar: --fx-bg-brand-subtle, --fx-bg-overlay, --fx-bg-page, --fx-bg-subtle, --fx-bg-surface, --fx-bg-surface-container, --fx-bg-surface-container-low, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-elevation-1, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-popover-width, --fx-radius-control, --fx-radius-surface, --fx-shadow-lg, --fx-size-icon-lg, --fx-size-icon-md, --fx-size-topbar, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-space-6, --fx-space-8, --fx-text-brand, --fx-text-primary, --fx-text-secondary

```html
<div class="fx-shell" data-fx-shell>
  <aside class="fx-shell__side" id="side" popover="auto">
    <div class="fx-shell__brand"><svg viewBox="0 0 24 24" aria-hidden="true"><rect x="3" y="3" width="18" height="18" rx="5" fill="currentColor"/></svg><span class="fx-shell__brand-name">FoxUI</span></div>
    <nav class="fx-nav" aria-label="Asosiy">
  <div class="fx-nav__group">
    <a class="fx-nav__item" href="#" aria-current="page"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M3 9.5 10 4l7 5.5V16a1 1 0 0 1-1 1h-3.5v-4.5h-5V17H4a1 1 0 0 1-1-1z" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg><span class="fx-nav__label">Boş sahifa</span></a>
    <a class="fx-nav__item" href="#"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M3 11h4l1 2h4l1-2h4M4 5h12l1 6v5H3v-5z" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg><span class="fx-nav__label">Arizalar</span><span class="fx-nav__count">12</span></a>
  </div>
  <div class="fx-nav__group">
    <div class="fx-nav__title">Mijozlar</div>
    <a class="fx-nav__item" href="#"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M7 9a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM2 17c0-3 2.2-5 5-5s5 2 5 5M13 4a3 3 0 0 1 0 6M15 12c1.8.5 3 2.3 3 5" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg><span class="fx-nav__label">Hammasi</span></a>
    <div class="fx-nav__subs">
      <a class="fx-nav__item" href="#"><span class="fx-nav__label">Obunaçilar</span></a>
      <a class="fx-nav__item" href="#"><span class="fx-nav__label">Juda uzun nomli bölim nomi şu yerda kesiladi</span></a>
    </div>
  </div>
  <div class="fx-nav__foot"><a class="fx-nav__item" href="#"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M10 12.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5zM10 2v2M10 16v2M2 10h2M16 10h2M4.3 4.3l1.4 1.4M14.3 14.3l1.4 1.4M4.3 15.7l1.4-1.4M14.3 5.7l1.4-1.4" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg><span class="fx-nav__label">Sozlamalar</span></a></div>
</nav>
  </aside>
  <header class="fx-shell__top">
    <button class="fx-btn" data-variant="ghost" data-shape="icon" data-fx-shell-toggle aria-label="Menyu" aria-expanded="true"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M3 5h14M3 10h14M3 15h14" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
    <ol class="fx-breadcrumbs"><li><a href="#">Mijozlar</a></li><li><span aria-current="page">Hammasi</span></li></ol>
    <span class="fx-shell__spacer"></span>
    <button class="fx-btn" data-variant="ghost" data-fx-shell-aside-toggle aria-controls="shell-aside" aria-expanded="false">Tafsilot</button>
  </header>
  <main class="fx-shell__main">Iş maydoni</main>
  <aside class="fx-shell__aside" aria-label="Tafsilot" id="shell-aside" hidden><strong>Tafsilot</strong><p>Tanlangan qator haqida izoh va faollik.</p></aside>
</div>
```

- Qilmang: Sahifa amallarini tepa panelga qöymang — sahifa sarlavhasida.
- Qilmang: Yon menyuni karta (oq blok) içiga olmang — sahifa fonida.
- Qilmang: floating / inset variantni CRM va admin'ning standarti qilmang — WDS: yon menyu sahifa fonida; bu variantlar brend sayt yoki mijoz talabi uçun.

## Klaviatura yorliqlari oynasi (`shortcuts`, beta, 0.23.0 dan)

«?» bosilganda oçiladigan yorliqlar röyxati: guruhlangan (umumiy, ötiş, röyxat), har qatorda amal va tugmalar (fx-kbd), «G keyin I» ketma-ketligi, qidiruv. Mac'da ⌘ ni ilova özi matnga yozadi.

- Qaçon: Klaviatura bilan köp işlanadigan ilovada (CRM, kiruvçilar, muharrir) yorliqlar ma'lumotnomasi.
- Qaçon emas: Hamma sahifa va amalni qidiriş → `command`; Bitta tugma yorliğini körsatiş → `kbd`
- Klaviatura: ? — Oçadi; Esc — Yopadi; Tab — Qidiruv va yopiş tugmasi
- Tokenlar: --fx-bg-field, --fx-bg-overlay, --fx-bg-surface, --fx-border-color-default, --fx-border-color-field, --fx-border-color-focus, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-sm, --fx-dialog-width, --fx-ease-enter, --fx-ease-exit, --fx-font-size-lg, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-motion-base, --fx-motion-exit-fast, --fx-motion-scale-enter, --fx-popover-width, --fx-radius-control, --fx-radius-overlay, --fx-shadow-lg, --fx-space-1, --fx-space-3, --fx-space-4, --fx-space-5, --fx-space-6, --fx-space-8, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<button class="fx-btn" data-fx-shortcuts-open="sc">Yorliqlar <kbd class="fx-kbd">?</kbd></button>
<dialog class="fx-shortcuts" id="sc" aria-labelledby="sc-t" data-fx-shortcuts>
  <div class="fx-shortcuts__head"><h2 class="fx-shortcuts__title" id="sc-t">Klaviatura yorliqlari</h2><input class="fx-shortcuts__search" type="search" placeholder="Qidiriş" aria-label="Yorliq qidiriş" autocomplete="off"><form method="dialog"><button class="fx-btn" data-variant="ghost" data-shape="icon" data-size="sm" aria-label="Yopiş"><svg viewBox="0 0 16 16" aria-hidden="true"><path d="M4 4l8 8M12 4l-8 8" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg></button></form></div>
  <div class="fx-shortcuts__body">
    <dl class="fx-shortcuts__group"><dt class="fx-shortcuts__group-title">Umumiy</dt>
      <div class="fx-shortcuts__row"><dt class="fx-shortcuts__label">Buyruqlar oynasi</dt><dd class="fx-shortcuts__keys"><kbd class="fx-kbd">Ctrl</kbd><kbd class="fx-kbd">K</kbd></dd></div>
      <div class="fx-shortcuts__row"><dt class="fx-shortcuts__label">Yorliqlar oynasi</dt><dd class="fx-shortcuts__keys"><kbd class="fx-kbd">?</kbd></dd></div>
      <div class="fx-shortcuts__row"><dt class="fx-shortcuts__label">Qidiriş</dt><dd class="fx-shortcuts__keys"><kbd class="fx-kbd">/</kbd></dd></div>
    </dl>
    <dl class="fx-shortcuts__group"><dt class="fx-shortcuts__group-title">Ötiş</dt>
      <div class="fx-shortcuts__row"><dt class="fx-shortcuts__label">Kiruvçilarga</dt><dd class="fx-shortcuts__keys"><kbd class="fx-kbd">G</kbd> <span class="fx-shortcuts__then">keyin</span> <kbd class="fx-kbd">I</kbd></dd></div>
      <div class="fx-shortcuts__row"><dt class="fx-shortcuts__label">Arizalarga</dt><dd class="fx-shortcuts__keys"><kbd class="fx-kbd">G</kbd> <span class="fx-shortcuts__then">keyin</span> <kbd class="fx-kbd">A</kbd></dd></div>
    </dl>
    <dl class="fx-shortcuts__group"><dt class="fx-shortcuts__group-title">Röyxat</dt>
      <div class="fx-shortcuts__row"><dt class="fx-shortcuts__label">Keyingi / oldingi</dt><dd class="fx-shortcuts__keys"><kbd class="fx-kbd">J</kbd><kbd class="fx-kbd">K</kbd></dd></div>
      <div class="fx-shortcuts__row"><dt class="fx-shortcuts__label">Arxivlaş</dt><dd class="fx-shortcuts__keys"><kbd class="fx-kbd">E</kbd></dd></div>
    </dl>
    <p class="fx-shortcuts__empty" hidden>Bunday yorliq topilmadi</p>
  </div>
</dialog>
```

- Qilmang: Röyxatni qölda yangilab yurmang — ilovadagi yorliqlar röyxatidan hosil qiling, aks holda eskiradi.
- Qilmang: Yorliqni faqat şu oynada e'lon qilmang — menyu bandlari va tooltip'larda ham körsating.

## Imzo maydoni (`signature`, beta, 0.29.0 dan)

Qöl imzosi (4.86): siçqonça, barmoq yoki stilus bilan canvas'da çiziladi (stilus bosimi çiziq qalinligiga ta'sir qiladi), «Orqaga» oxirgi çiziqni, «Tozalaş» hammasini öçiradi. Klaviatura muqobili — «Yozib kiritiş»: ism yoziladi va imzo şriftida çiziladi. Qiymat formaga yaşirin inputda ketadi: SVG matni (standart, vektor, hujjatga sifatli tuşadi) yoki data-format="png" — PNG data URL. data-required — böş imzo bilan forma yuborilmaydi (qizil çegara + «Imzo majburiy» matni).

- Qaçon: Yetkazib berişni qabul qiliş, xizmat dalolatnomasi, içki ariza. Planşetda mijoz imzosi (dökon, klinika).
- Qaçon emas: Şartnomaga rozilik belgisi → `check`; Fayl (skanerlangan imzo) yuklaş → `dropzone`
- Variantlar: data-format=svg|png (standart svg); data-required=
- Klaviatura: Tab — Imzo maydoni → «Yozib kiritiş» → «Orqaga» → «Tozalaş»; Delete / Backspace — Maydonda: imzoni tozalaydi; Ctrl+Z — Maydonda: oxirgi çiziqni olib taşlaydi; Enter / Boʻshliq — «Yozib kiritiş» — matn maydonini oçadi (klaviatura muqobili)
- Tokenlar: --fx-bg-field, --fx-border-color-error, --fx-border-color-focus, --fx-border-color-strong, --fx-border-width-default, --fx-border-width-focus, --fx-ease-standard, --fx-fg-success, --fx-font-size-lg, --fx-font-size-sm, --fx-font-size-xs, --fx-motion-fast, --fx-popover-width, --fx-radius-control, --fx-space-12, --fx-space-2, --fx-space-6, --fx-space-8, --fx-text-error, --fx-text-primary, --fx-text-tertiary

```html
<form class="fx-card" style="padding:var(--fx-space-6);display:grid;gap:var(--fx-space-4);max-inline-size:34rem" onsubmit="event.preventDefault()">
  <div>
    <h3 style="margin:0">Yetkazib berişni tasdiqlaş</h3>
    <p style="margin:0;color:var(--fx-text-secondary)">Buyurtma №4512 · 3 ta mahsulot · 1 240 000 söm · Toşkent, Çilonzor 9-kvartal</p>
  </div>
  <div class="fx-field">
    <span class="fx-label" id="sig1-l">Qabul qiluvçi imzosi</span>
    <div class="fx-signature" data-fx-signature data-name="imzo" data-required aria-labelledby="sig1-l">
      <div class="fx-signature__pad">
        <canvas class="fx-signature__canvas"></canvas>
        <span class="fx-signature__line" aria-hidden="true">×</span>
        <span class="fx-signature__hint" aria-hidden="true">Şu yerga imzo qöying</span>
      </div>
      <input class="fx-input fx-signature__typed" hidden autocomplete="name" placeholder="Masalan: Aziz Karimov" aria-label="Ism va familiya (imzo örniga)">
      <div class="fx-signature__bar">
        <span class="fx-signature__status" aria-live="polite"></span>
        <button type="button" class="fx-btn" data-variant="ghost" data-size="sm" data-sig="type" aria-pressed="false">Yozib kiritiş</button>
        <button type="button" class="fx-btn" data-variant="ghost" data-size="sm" data-sig="undo">Orqaga</button>
        <button type="button" class="fx-btn" data-variant="outline" data-size="sm" data-sig="clear">Tozalaş</button>
      </div>
    </div>
  </div>
  <button class="fx-btn" data-variant="primary" type="submit">Qabul qildim</button>
</form>
```

- Qilmang: Imzoni faqat çiziş bilan qoldirmang — klaviatura va ekran öquvçi foydalanuvçisi uçun «Yozib kiritiş» tugmasi şart.
- Qilmang: Imzo maydonini juda kiçik qilmang — telefonda barmoq bilan kamida 140 px balandlik kerak.
- Qilmang: Imzo rasmini yuridik tasdiq deb hisoblamang — u faqat qabul qilinganini qayd etadi; yuridik imzo uçun E-IMZO kabi xizmat.

## Telefon menyusi (`site-drawer`, beta, 0.23.0 dan)

Burger tugma oçadigan çapdan çiquvçi menyu varaği (#86): sarlavha + yopiş, havolalar, oçiladigan guruhlar (details), pastda amallar. Modal <dialog> — fokus içida qoladi, Esc va fonga bosiş yopadi, havola bosilsa yopiladi (foxui.js, data-fx-sitedrawer).

- Qaçon: Telefonda sayt menyusi (burger).
- Qaçon emas: Ilova yon menyusi → `shell`; Tafsilot paneli (öng tomondan) → `sheet`
- Klaviatura: Esc — Menyuni yopadi; Tab — Varaq içida aylanadi; Enter, Space — Guruhni oçadi / yopadi
- Tokenlar: --fx-bg-muted, --fx-bg-overlay, --fx-bg-page, --fx-bg-pressed, --fx-bg-subtle, --fx-border-color-default, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-ease-enter, --fx-ease-exit, --fx-ease-standard, --fx-font-size-md, --fx-font-size-sm, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-motion-base, --fx-motion-exit-base, --fx-motion-fast, --fx-motion-shift-lg, --fx-popover-width, --fx-radius-nav, --fx-shadow-lg, --fx-size-control-lg, --fx-size-control-md, --fx-size-icon-sm, --fx-size-topbar, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-8, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<button class="fx-btn" commandfor="site-drawer" command="show-modal" aria-label="Menyu">Menyu</button>
<dialog class="fx-site-drawer" id="site-drawer" aria-label="Asosiy menyu" data-fx-sitedrawer>
  <div class="fx-site-drawer__head"><span>Çorsu</span><button class="fx-close" type="button" commandfor="site-drawer" command="close" aria-label="Yopiş"></button></div>
  <nav class="fx-site-drawer__body" aria-label="Asosiy">
    <details class="fx-site-drawer__group">
      <summary>Mahsulot</summary>
      <div class="fx-site-drawer__sub">
        <a class="fx-site-drawer__link" href="#">Onlayn dökon</a>
        <a class="fx-site-drawer__link" href="#">CRM</a>
      </div>
    </details>
    <a class="fx-site-drawer__link" href="#" aria-current="page">Narxlar</a>
    <a class="fx-site-drawer__link" href="#">Hujjatlar</a>
  </nav>
  <div class="fx-site-drawer__foot"><a class="fx-btn" href="#">Kiriş</a><a class="fx-btn" data-variant="primary" href="#">Boşlaş</a></div>
</dialog>
```

- Qilmang: Menyuni keng ekranda varaq qilmang — site-header.
- Qilmang: Guruhlarni 2 darajadan çuqur içma-iç qilmang.

## Sayt pastki qismi (`site-footer`, beta, 0.23.0 dan)

Footer (#97): tavsif + ijtimoiy havolalar, havola ustunlari, pastki qator (huquqiy matn) va til hamda mavzu almaştirgiç örinlari. Telefonda bir ustunga tuşadi. Tanlanadigan usul — havolasi köp footer uçun: ustun guruhlari <details class="fx-site-footer__group"> bölsa, kengda oddiy ustun, telefonda (< 640 px) yiğiladigan qator «+» bilan, boşida yopiq — Hostinger kabi (xulq data-fx-footer, 20.10). Havolasi kam footer oddiy ustunda qoladi (<div> + sarlavha).

- Qaçon: Marketing sayt va hujjat saytining pastki qismi.
- Qaçon emas: Ilova içida → `shell`
- Klaviatura: Tab, Enter — Havolalar böylab
- Tokenlar: --fx-bg-page, --fx-border-color-default, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-ease-standard, --fx-font-size-sm, --fx-font-weight-semibold, --fx-motion-fast, --fx-popover-width, --fx-radius-badge, --fx-size-icon-lg, --fx-size-icon-md, --fx-size-min-target, --fx-space-1, --fx-space-10, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-6, --fx-space-8, --fx-text-primary, --fx-text-secondary

```html
<footer class="fx-site-footer" data-fx-footer>
  <div class="fx-site-footer__top">
    <div class="fx-site-footer__about">
      <a class="fx-site-footer__brand" href="#"><svg viewBox="0 0 24 24" aria-hidden="true"><rect x="3" y="3" width="18" height="18" rx="5" fill="currentColor"/></svg>Çorsu</a>
      <p class="fx-site-footer__text">Dökon va mijozlar bilan işlaşni soddalaştiruvçi platforma.</p>
      <div class="fx-site-footer__social"><a class="fx-btn" data-variant="ghost" href="#">Telegram</a><a class="fx-btn" data-variant="ghost" href="#">Instagram</a></div>
    </div>
    <nav class="fx-site-footer__cols" aria-label="Pastki menyu">
      <details class="fx-site-footer__group" open><summary class="fx-site-footer__title">Mahsulot</summary><ul class="fx-site-footer__links"><li><a href="#">Onlayn dökon</a></li><li><a href="#">CRM</a></li><li><a href="#">Narxlar</a></li></ul></details>
      <details class="fx-site-footer__group" open><summary class="fx-site-footer__title">Kompaniya</summary><ul class="fx-site-footer__links"><li><a href="#">Biz haqimizda</a></li><li><a href="#">Aloqa</a></li></ul></details>
      <details class="fx-site-footer__group" open><summary class="fx-site-footer__title">Yordam</summary><ul class="fx-site-footer__links"><li><a href="#">Hujjatlar</a></li><li><a href="#">Savol-javob</a></li></ul></details>
    </nav>
  </div>
  <div class="fx-site-footer__bottom">
    <p class="fx-site-footer__legal"><span>© 2026 Çorsu</span><a href="#">Maxfiylik</a><a href="#">Şartlar</a></p>
    <div class="fx-site-footer__slots">
    <div class="fx-segment fx-theme-switcher" data-variant="icon" role="group" aria-label="Mavzu" data-fx-themeswitch>
      <button class="fx-segment__item" type="button" data-value="system" aria-pressed="true"><svg class="fx-theme-switcher__icon" viewBox="0 0 20 20" aria-hidden="true"><rect x="2.5" y="4" width="15" height="10" rx="2" fill="none" stroke="currentColor" stroke-width="1.6"/><path d="M7 17h6" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/></svg><span class="fx-theme-switcher__label">Tizim</span></button>
      <button class="fx-segment__item" type="button" data-value="light" aria-pressed="false"><svg class="fx-theme-switcher__icon" viewBox="0 0 20 20" aria-hidden="true"><circle cx="10" cy="10" r="3.2" fill="none" stroke="currentColor" stroke-width="1.6"/><path d="M10 2.5v2M10 15.5v2M2.5 10h2M15.5 10h2M4.7 4.7l1.4 1.4M13.9 13.9l1.4 1.4M4.7 15.3l1.4-1.4M13.9 6.1l1.4-1.4" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/></svg><span class="fx-theme-switcher__label">Yoruğ</span></button>
      <button class="fx-segment__item" type="button" data-value="dark" aria-pressed="false"><svg class="fx-theme-switcher__icon" viewBox="0 0 20 20" aria-hidden="true"><path d="M16.5 11.5A6.5 6.5 0 0 1 8.5 3.5a6.5 6.5 0 1 0 8 8z" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linejoin="round"/></svg><span class="fx-theme-switcher__label">Qoronği</span></button>
    </div>
    <div class="fx-langswitch" data-fx-langswitch>
      <button class="fx-langswitch__trigger" type="button" popovertarget="sf-lang" aria-haspopup="menu" aria-label="Til: Özbekça"><svg class="fx-langswitch__icon" viewBox="0 0 20 20" aria-hidden="true"><circle cx="10" cy="10" r="7.25" fill="none" stroke="currentColor" stroke-width="1.5"/><path d="M2.75 10h14.5M10 2.75c2 2 3 4.5 3 7.25s-1 5.25-3 7.25c-2-2-3-4.5-3-7.25s1-5.25 3-7.25z" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round"/></svg><span class="fx-langswitch__name">Özbekça</span><span class="fx-langswitch__code" aria-hidden="true">UZ</span><svg class="fx-langswitch__caret" viewBox="0 0 20 20" aria-hidden="true"><path d="M5.5 8l4.5 4.5L14.5 8" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
      <div class="fx-menu fx-langswitch__menu" id="sf-lang" role="menu" aria-label="Tilni tanlang" popover data-fx-menu>
        <button class="fx-menu__item" type="button" data-value="uz" role="menuitemradio" aria-checked="true" lang="uz"><span class="fx-langswitch__endonym">Özbekça</span><span class="fx-langswitch__hint">UZ</span></button>
        <button class="fx-menu__item" type="button" data-value="ru" role="menuitemradio" aria-checked="false" lang="ru"><span class="fx-langswitch__endonym">Русский</span><span class="fx-langswitch__hint">RU</span></button>
        <button class="fx-menu__item" type="button" data-value="en" role="menuitemradio" aria-checked="false" lang="en"><span class="fx-langswitch__endonym">English</span><span class="fx-langswitch__hint">EN</span></button>
      </div>
    </div>
    </div>
  </div>
</footer>
```

- Qilmang: Footer'ga asosiy amal (CTA) qöymang — u sahifa içida.
- Qilmang: Ustunlarni 4 tadan oşirmang.
- Qilmang: Til nomini bayroq bilan almaştirmang — til bayroq emas.

## Sayt sarlavhasi (`site-header`, beta, 0.23.0 dan)

Marketing/hujjat sayti tepa paneli (#85): belgi, asosiy menyu, mega menyu paneli (ustunlar + tavsiya bloki), amallar; telefonda burger tugma (site-drawer'ni oçadi). Mega panel hover (siçqonça) yoki bosiş bilan oçiladi, Esc yopadi, ← → bandlar orasida, ↓ panelga kiradi (foxui.js, data-fx-siteheader). Scroll xulqi (4.156, data-scroll): «hide» — pastga scroll'da yaşirinadi, tepaga qaytganda çiqadi; «shrink» — pastroq va şişasimon böladi; «float» — markazdagi suzuvçi tabletkaga aylanadi (Linear, Aceternity uslubi).

- Qaçon: Marketing sayt, hujjatlar, hamma sahifalarda bir xil tepa navigatsiya.
- Qaçon emas: Ilova (CRM, kabinet) karkasi → `shell`; Telefonda menyu → `site-drawer`
- Variantlar: data-scroll=hide|shrink|float (standart static)
- Klaviatura: Enter, Space — Mega panelni oçadi / yopadi; ↓ — Oçiq panelning birinçi havolasiga; ← → — Menyu bandlari orasida; Esc — Panelni yopadi, fokus tugmaga qaytadi
- Tokenlar: --fx-bg-muted, --fx-bg-page, --fx-bg-pressed, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-md, --fx-dialog-width, --fx-ease-emphasized, --fx-ease-enter, --fx-ease-standard, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-knob-blur, --fx-motion-base, --fx-motion-fast, --fx-motion-shift-sm, --fx-motion-slow, --fx-motion-slower, --fx-popover-width, --fx-radius-badge, --fx-radius-nav, --fx-radius-overlay, --fx-radius-surface, --fx-shadow-lg, --fx-shadow-sm, --fx-size-icon-lg, --fx-size-icon-sm, --fx-size-topbar, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-space-6, --fx-space-8, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<header class="fx-site-header" data-fx-siteheader data-scroll="float">
  <div class="fx-site-header__bar">
    <a class="fx-site-header__brand" href="#"><svg viewBox="0 0 24 24" aria-hidden="true"><rect x="3" y="3" width="18" height="18" rx="5" fill="currentColor"/></svg>Çorsu</a>
    <nav class="fx-site-header__nav" aria-label="Asosiy">
      <ul class="fx-site-header__list">
        <li class="fx-site-header__item">
          <button class="fx-site-header__trigger" type="button" aria-expanded="false" aria-controls="mega-mahsulot">Mahsulot <svg viewBox="0 0 16 16" aria-hidden="true"><path d="m4 6 4 4 4-4" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg></button>
          <div class="fx-site-header__mega" id="mega-mahsulot" hidden>
            <div class="fx-site-header__cols">
              <div class="fx-site-header__col">
                <p class="fx-site-header__col-title">Savdo</p>
                <a class="fx-site-header__mega-link" href="#"><strong>Onlayn dökon</strong><span>Katalog, savat va tölov</span></a>
                <a class="fx-site-header__mega-link" href="#"><strong>Buyurtmalar</strong><span>Qabul qiliş va yetkaziş</span></a>
              </div>
              <div class="fx-site-header__col">
                <p class="fx-site-header__col-title">Mijozlar</p>
                <a class="fx-site-header__mega-link" href="#"><strong>CRM</strong><span>Arizalar va mijozlar bazasi</span></a>
                <a class="fx-site-header__mega-link" href="#"><strong>Hisobotlar</strong><span>Sotuv va faollik körsatkiçlari</span></a>
              </div>
            </div>
            <div class="fx-site-header__feature"><strong>Yangi: Dashboard</strong><span>Boş panel va grafiklar bir joyda.</span><a class="fx-link" href="#">Batafsil</a></div>
          </div>
        </li>
        <li><a class="fx-site-header__link" href="#" aria-current="page">Narxlar</a></li>
        <li><a class="fx-site-header__link" href="#">Hujjatlar</a></li>
      </ul>
    </nav>
    <div class="fx-site-header__actions"><a class="fx-btn" data-variant="ghost" href="#">Kiriş</a><a class="fx-btn" data-variant="primary" href="#">Boşlaş</a></div>
    <button class="fx-btn fx-site-header__burger" data-variant="ghost" data-shape="icon" type="button" commandfor="site-drawer" command="show-modal" aria-label="Menyu"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M3 5h14M3 10h14M3 15h14" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/></svg></button>
  </div>
</header>
```

- Qilmang: Mega panelga forma yoki uzun matn qöymang — havolalar va qisqa tavsif.
- Qilmang: Telefonda mega panelni oçmang — burger va site-drawer.
- Qilmang: Bitta havolali «mega» menyu yasamang — oddiy havola.
- Qilmang: Hujjat yoki ilova sahifasida data-scroll="hide" işlatmang — navigatsiya doim kerak; landing uçun.

## Skelet (karkas) (`skeleton`, beta, 0.10.0 dan)

Yuklanayotgan ma'lumot örnida kulrang şakllar (karkas): qator (standart), sarlavha, doira, blok, kvadrat, rasm, tugma; kompozitlar — .fx-skeleton-group (paragraf), .fx-skeleton-row (avatar+qatorlar; data-type=table, data-cols), .fx-skeleton-card. 24.10: 300 ms qoidasi — kontent şu vaqt içida kelsa skelet umuman körinmaydi (CSS, JS'siz; data-delay="0" — darhol); yaltiraş (data-anim="shimmer") faqat transform bilan, butun guruhga ham beriladi; .fx-skeleton-zone — skelet va kontent bitta katakda, aria-busy almaşganda joy siljimaydi. Jonli namuna: /namuna/karkas/.

- Qaçon: Sahifa yoki blok tuzilmasi ma'lum, ma'lumot hali kelmagan.
- Qaçon emas: Tugma içidagi kutiş → `button`; Tuzilmasi noma'lum kutiş → `spinner`
- Variantlar: data-shape=line|title|circle|block|square|image|button (standart line); data-anim=pulse|shimmer (standart pulse); data-delay=0 (standart 300ms)
- Tokenlar: --fx-bg-muted, --fx-bg-surface, --fx-border-color-default, --fx-border-color-surface, --fx-border-width-default, --fx-control-h-md, --fx-duration-base, --fx-duration-delay-skeleton, --fx-duration-instant, --fx-duration-pulse, --fx-duration-shimmer, --fx-ease-standard, --fx-font-size-sm, --fx-font-size-xl, --fx-radius-avatar-ratio, --fx-radius-badge, --fx-radius-circle, --fx-radius-control, --fx-radius-surface, --fx-size-avatar-md, --fx-skeleton-delay, --fx-skeleton-kech, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5

```html
<!-- Karta röyxati: guruhga data-anim="shimmer" — hamma şakl yaltiraydi -->
<div class="fx-skeleton-card" data-anim="shimmer" aria-hidden="true" style="max-width:320px"><span class="fx-skeleton" data-shape="image"></span><span class="fx-skeleton" data-shape="title"></span><div class="fx-skeleton-group"><span class="fx-skeleton"></span><span class="fx-skeleton"></span></div></div>

<!-- Profil: avatar + qatorlar -->
<div class="fx-skeleton-row" data-anim="shimmer" aria-hidden="true"><span class="fx-skeleton" data-shape="circle"></span><div class="fx-skeleton-group"><span class="fx-skeleton" data-shape="title"></span><span class="fx-skeleton"></span></div></div>

<!-- Jadval qatorlari -->
<div data-anim="shimmer" aria-hidden="true"><div class="fx-skeleton-row" data-type="table"><span class="fx-skeleton"></span><span class="fx-skeleton"></span><span class="fx-skeleton"></span><span class="fx-skeleton"></span></div><div class="fx-skeleton-row" data-type="table"><span class="fx-skeleton"></span><span class="fx-skeleton"></span><span class="fx-skeleton"></span><span class="fx-skeleton"></span></div></div>

<!-- Zona: kontent kelguncha skelet (300 ms dan keyin), keyin joy siljimasdan almaşadi. JS faqat aria-busy'ni "false" qiladi -->
<div class="fx-skeleton-zone" aria-busy="true" aria-label="Mijozlar">
  <div class="fx-skeleton-zone__fallback" data-anim="shimmer" aria-hidden="true"><div class="fx-skeleton-group"><span class="fx-skeleton" data-shape="title"></span><span class="fx-skeleton"></span><span class="fx-skeleton"></span></div></div>
  <div class="fx-skeleton-zone__content">…kelgan kontent…</div>
</div>
```

- Qilmang: Skelet keçikişini olib taşlamang (data-delay="0" faqat namuna sahifasida) — 300 ms dan qisqa yuklanişda lipillaydi.
- Qilmang: Skelet öliçami kontentnikidan farq qilmasin — almaşganda sahifa siljiydi (CLS).
- Qilmang: Butun sahifaga bitta spinner örniga skelet qöying, lekin tuzilmasi noma'lum kutişga — spinner.

## Slider (`slider`, beta, 0.14.0 dan)

Diapazondan qiymat tanlaş: native input type="range", öz körinişi; tölgan qism brend rangida (foxui.js). Aniq qiymat kerak bölsa yonida son maydoni. Kengaytma: diapazon (ikki tutqiç, kesişmaydi), belgilar va yorliqlar (marks/ticks), tutqiç ustida qiymat pufagi. Tik variant (4.93) — ovoz, ekvalayzer, xarita zoom uçun; gistogrammali diapazon (4.95) — narx filtri ostida taqsimot ustunçalari, tanlangan oraliq yoritiladi. Markazdan (4.94): data-origin="center" — töldiriş noldan (yoki data-zero) qiymatgaça çapga yoki öngga; nol joyida belgi; aria-valuetext va yonidagi <output> işora bilan («+20», «−15%»); ikki marta bosiş yoki Delete — boşlanğiç qiymatga. Odatiy qiymat belgisi: marks içida <li data-value="10" data-typical>odatiy</li> — çiziq örniga brend rangidagi uçburçak va yozuv.

- Qaçon: Taxminiy qiymat diapazonda (ovoz, çegara, foiz). Oraliq (narx, sana kunlari) — ikki tutqiçli diapazon.
- Qaçon emas: Aniq raqam → `number`
- Variantlar: data-bubble=off|always|focus (standart off); data-orientation=horizontal|vertical (standart horizontal); data-histogram=3,8,12,…; data-origin=start|center (standart start)
- Klaviatura: ← → ↑ ↓ — Qadam; Home, End — Eng kiçik / eng katta; PageUp, PageDown — Katta qadam; Tab — Keyingi tutqiçga; Delete / Backspace — Markazdan sliderda: boşlanğiç qiymatga qaytaradi
- Tokenlar: --fx-bg-brand-solid, --fx-bg-muted, --fx-bg-page, --fx-bg-surface, --fx-border-color-focus, --fx-border-color-strong, --fx-border-width-default, --fx-border-width-focus, --fx-ease-standard, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-motion-fast, --fx-motion-scale-press, --fx-radius-badge, --fx-radius-circle, --fx-shadow-sm, --fx-size-checkbox, --fx-size-min-target, --fx-slider-hi, --fx-slider-lo, --fx-slider-zero, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-8, --fx-text-brand, --fx-text-primary, --fx-text-tertiary, --fx-viz-brand, --fx-viz-track

```html
<label class="fx-field">
  <span class="fx-label">Kunlik çegara: <output>40</output> $</span>
  <input class="fx-slider" type="range" min="0" max="100" value="40" data-fx-slider oninput="this.previousElementSibling.querySelector('output').value=this.value">
</label>
<div class="fx-field"><span class="fx-label" id="rg-l">Narx oraliği</span>
<div class="fx-slider-range" data-fx-slider data-bubble="always" data-unit="söm" role="group" aria-labelledby="rg-l">
  <div class="fx-slider-range__rail" aria-hidden="true"><span class="fx-slider-range__fill"></span></div>
  <input class="fx-slider" type="range" min="0" max="1000000" step="50000" value="200000" aria-label="Eng kam narx">
  <input class="fx-slider" type="range" min="0" max="1000000" step="50000" value="700000" aria-label="Eng köp narx">
  <ol class="fx-slider-range__marks" aria-hidden="true"><li data-value="0">0</li><li data-value="250000">250 000</li><li data-value="500000">500 000</li><li data-value="750000">750 000</li><li data-value="1000000">1 mln</li></ol>
</div></div>
<div class="fx-field"><span class="fx-label" id="tk-l">Baho</span>
<div class="fx-slider-range" data-fx-slider data-bubble="focus" data-ticks role="group" aria-labelledby="tk-l">
  <div class="fx-slider-range__rail" aria-hidden="true"><span class="fx-slider-range__fill"></span></div>
  <input class="fx-slider" type="range" min="0" max="10" step="1" value="6" aria-label="Baho">
</div></div>
<div class="fx-field"><span class="fx-label" id="eq-l">Ekvalayzer, dB</span>
<div class="fx-slider-stack" role="group" aria-labelledby="eq-l"><label class="fx-slider-stack__item"><output>4</output><input class="fx-slider" type="range" data-orientation="vertical" min="-12" max="12" value="4" data-fx-slider aria-label="60 Gs" oninput="this.previousElementSibling.value=this.value">60</label><label class="fx-slider-stack__item"><output>2</output><input class="fx-slider" type="range" data-orientation="vertical" min="-12" max="12" value="2" data-fx-slider aria-label="250 Gs" oninput="this.previousElementSibling.value=this.value">250</label><label class="fx-slider-stack__item"><output>0</output><input class="fx-slider" type="range" data-orientation="vertical" min="-12" max="12" value="0" data-fx-slider aria-label="1k Gs" oninput="this.previousElementSibling.value=this.value">1k</label><label class="fx-slider-stack__item"><output>-3</output><input class="fx-slider" type="range" data-orientation="vertical" min="-12" max="12" value="-3" data-fx-slider aria-label="4k Gs" oninput="this.previousElementSibling.value=this.value">4k</label><label class="fx-slider-stack__item"><output>5</output><input class="fx-slider" type="range" data-orientation="vertical" min="-12" max="12" value="5" data-fx-slider aria-label="16k Gs" oninput="this.previousElementSibling.value=this.value">16k</label></div></div>
<div class="fx-field"><span class="fx-label" id="hg-l">Kvartira narxi, mln söm</span>
<div class="fx-slider-range" data-fx-slider data-bubble="focus" data-unit="mln" data-histogram="2,4,7,11,16,22,25,21,18,15,12,9,8,6,5,4,3,3,2,1" role="group" aria-labelledby="hg-l">
  <div class="fx-slider-range__rail" aria-hidden="true"><span class="fx-slider-range__fill"></span></div>
  <input class="fx-slider" type="range" min="300" max="2300" step="50" value="650" aria-label="Eng kam narx">
  <input class="fx-slider" type="range" min="300" max="2300" step="50" value="1300" aria-label="Eng köp narx">
  <ol class="fx-slider-range__marks" aria-hidden="true"><li data-value="300">300</li><li data-value="1300">1 300</li><li data-value="2300">2 300+</li></ol>
</div></div>
<!-- Markazdan (4.94): manfiy ↔ musbat -->
<div class="fx-field" style="max-inline-size:24rem"><label class="fx-label" for="sl-c1">Rasm yorqinligi</label>
<div class="fx-slider-center"><input class="fx-slider" id="sl-c1" type="range" min="-50" max="50" step="1" value="20" data-origin="center" data-fx-slider><output for="sl-c1"></output>
<div class="fx-slider-center__scale" aria-hidden="true"><span>−50</span><span>0</span><span>+50</span></div></div></div>
<div class="fx-field" style="max-inline-size:24rem"><label class="fx-label" for="sl-c2">Narxga tuzatiş (çegirma ↔ ustama)</label>
<div class="fx-slider-center"><input class="fx-slider" id="sl-c2" type="range" min="-30" max="30" step="5" value="-15" data-origin="center" data-unit="%" data-fx-slider><output for="sl-c2"></output></div></div>
```

- Qilmang: Aniq raqam (narx, telefon) uçun slider qilmang — son maydoni.
- Qilmang: Ikki tutqiçli diapazonda tutqiçlarning yorliği (aria-label) alohida bölsin — «Eng kam», «Eng köp».
- Qilmang: Gistogrammani yagona ma'lumot manbai qilmang — u bezak (aria-hidden); aniq son tutqiç pufagida va matnda bölsin.

## Tartiblanadigan röyxat (`sortable`, beta, 0.24.0 dan)

Qatorlarni qayta tartiblaş: uşlagiç tugmasi — siçqonça bilan sudraş yoki klaviatura (Space oladi, ↑ ↓ siljitadi, Space qöyadi, Esc bekor qiladi). Har harakat aria-live bilan e'lon qilinadi («Dilnoza, 2-örin, 4 tadan»). Hodisa fx-sortable-change tartibni beradi.

- Qaçon: Foydalanuvçi elementlar tartibini özi belgilaşi kerak bölganda (ustuvorlik, ustunlar, menyu).
- Qaçon emas: Kartalarni ustunlar orasida köçiriş → `board`; Jadval ustunini tartiblaş (saralaş) → `table`
- Klaviatura: Space / Enter — Uşlagiçda: oliş va qöyiş; ↑ ↓ — Uşlangan qatorni bir örin siljitadi; Home End — Eng boşiga/oxiriga; Esc — Bekor qiladi, asl tartib
- Tokenlar: --fx-bg-brand-subtle, --fx-bg-muted, --fx-bg-pressed, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-sm, --fx-ease-standard, --fx-font-size-lg, --fx-font-size-sm, --fx-motion-fast, --fx-radius-badge, --fx-radius-control, --fx-shadow-md, --fx-space-2, --fx-space-3, --fx-text-brand, --fx-text-primary, --fx-text-tertiary

```html
<ul class="fx-sortable" data-fx-sortable aria-label="Vazifalar ustuvorligi" style="max-inline-size: 22rem">
  <li class="fx-sortable__item"><button class="fx-sortable__handle" type="button" aria-label="Tartibni özgartiriş: Narxlar jadvalini yangilaş">⠿</button><span class="fx-sortable__label">Narxlar jadvalini yangilaş</span></li>
  <li class="fx-sortable__item"><button class="fx-sortable__handle" type="button" aria-label="Tartibni özgartiriş: Mijozga taklif yuboriş">⠿</button><span class="fx-sortable__label">Mijozga taklif yuboriş</span></li>
  <li class="fx-sortable__item"><button class="fx-sortable__handle" type="button" aria-label="Tartibni özgartiriş: Ombor hisobotini tekşiriş">⠿</button><span class="fx-sortable__label">Ombor hisobotini tekşiriş</span></li>
  <li class="fx-sortable__item"><button class="fx-sortable__handle" type="button" aria-label="Tartibni özgartiriş: Yangi logotipni tasdiqlaş">⠿</button><span class="fx-sortable__label">Yangi logotipni tasdiqlaş</span></li>
</ul>
```

- Qilmang: Faqat sudraşga tayanmang — klaviatura yöli (uşlagiç + strelkalar) şart.
- Qilmang: Tartib özgarganini saqlaşni unutmang: fx-sortable-change hodisasini eşiting.

## Manbalar va iqtibos (`sources`, beta, 0.23.0 dan)

Matn ichida [1] iqtibos pill'i — ustiga kelinsa yoki fokus tushsa manba kartasi (sayt, sarlavha, parcha) chiqadi; javob oxirida yigʻiladigan manbalar roʻyxati. Pill roʻyxatdagi manbaga havola (:target ajratadi).

- Qaçon: AI javobidagi tasdiqlanadigan faktlarga manba beriş.
- Qaçon emas: Oddiy havola → `link`; Qisqa izoh/tuşuntiriş → `tip`
- Klaviatura: Tab — Iqtibos pill'iga — karta oçiladi; Enter — Manbaga ötadi
- Tokenlar: --fx-bg-brand-subtle, --fx-bg-muted, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-ease-enter, --fx-ease-exit, --fx-ease-standard, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-motion-base, --fx-motion-exit-fast, --fx-motion-fast, --fx-motion-shift-sm, --fx-radius-circle, --fx-radius-control, --fx-radius-overlay, --fx-shadow-lg, --fx-size-icon-md, --fx-size-icon-sm, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-text-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<p>Oktabr tuşumi 12,4 % ösdi<span class="fx-cite"><a class="fx-cite__pill" href="#src-1" aria-describedby="cite-1">1</a><span class="fx-cite__card" id="cite-1" role="tooltip"><span class="fx-cite__site"><span class="fx-cite__fav" aria-hidden="true">M</span>moliya.example.uz</span><span class="fx-cite__title">Oktabr oyi savdo hisoboti</span><span class="fx-cite__snippet">Onlayn kanal uluşi 38 % ga yetdi…</span></span></span>, asosiy hissa onlayn kanaldan<span class="fx-cite"><a class="fx-cite__pill" href="#src-2" aria-describedby="cite-2">2</a><span class="fx-cite__card" id="cite-2" role="tooltip"><span class="fx-cite__site"><span class="fx-cite__fav" aria-hidden="true">S</span>statistika.example.uz</span><span class="fx-cite__title">Elektron savdo: çoraklik şarh</span></span></span>.</p>
<details class="fx-sources">
  <summary>Manbalar <span class="fx-sources__stack"><span class="fx-sources__fav" aria-hidden="true">M</span><span class="fx-sources__fav" aria-hidden="true">S</span></span> 2 ta <svg data-fx-icon="chev" class="fx-sources__chev" viewBox="0 0 24 24" aria-hidden="true"><path d="M9 6l6 6-6 6"/></svg></summary>
  <ol class="fx-sources__list">
    <li class="fx-sources__item" id="src-1"><span class="fx-sources__num">1</span><a href="#src-1">Oktabr oyi savdo hisoboti</a><span class="fx-sources__domain">moliya.example.uz</span></li>
    <li class="fx-sources__item" id="src-2"><span class="fx-sources__num">2</span><a href="#src-2">Elektron savdo: çoraklik şarh</a><span class="fx-sources__domain">statistika.example.uz</span></li>
  </ol>
</details>
```

- Qilmang: Iqtibosni raqamsiz qoldirmang — [1] röyxatdagi manbaga mos kelsin.
- Qilmang: Kartani faqat hoverga boğlamang — fokus ham oçişi şart (şunday qilingan).
- Qilmang: Soxta manba keltirmang: karta haqiqiy sarlavha va saytdan iborat.

## Davr çiziqlari (`span`, beta, 0.55.0 dan)

Bir neçta davr yoki umrni bitta vaqt öqida taqqoslaş: tepada yil belgilari, har qator — nom va boşlaniş–tugaş çiziği; asosiy qahramon (data-current) — töliq brend rangi; davomi noma'lum (data-open) — oçiq uç; fonda davr soyasi (.fx-span__era). JS'siz: idişda --fx-span-min/--fx-span-max, qatorda --s/--e (yillar) — örni va eni CSS hisoblaydi. Keng bölsa öz içida suriladi (.fx-span-scroll). Manbaa'dan (④ umr çiziqlari, Fox MB topşirdi, 20.10).

- Qaçon: Zamondoşlar, hukmdorlar, poytaxtlar tarixi — davrlar ustma-ust taqqoslanganda. Loyiha bosqiçlari yillar böyiça (uzoq muddatli).
- Qaçon emas: Voqealar ketma-ketligi → `timeline`; Kunlar va soatlar böyiça iş rejasi → `gantt`
- Variantlar: data-current=true; data-open=true
- Klaviatura: Tab — Havola bölgan çiziqqa ötadi
- Tokenlar: --fx-bg-brand-solid, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-radius-control, --fx-space-1, --fx-space-10, --fx-space-12, --fx-space-2, --fx-space-6, --fx-text-on-brand, --fx-text-primary, --fx-text-tertiary, --fx-viz-brand

```html
<div class="fx-span-scroll" style="inline-size:100%"><ul class="fx-span" style="--fx-span-min:1360;--fx-span-max:1560" aria-label="Alişer Navoiyning zamondoşlari">
  <li class="fx-span__axis" aria-hidden="true"><span style="--y:1360">1360</span><span style="--y:1400">1400</span><span style="--y:1440">1440</span><span style="--y:1480">1480</span><span style="--y:1520">1520</span><span style="--y:1560">1560</span></li>
  <li class="fx-span__eras" aria-hidden="true"><span class="fx-span__era" style="--s:1469;--e:1506"><b>Husayn Boyqaro saltanati</b></span></li>
  <li class="fx-span__row" style="--s:1441;--e:1501" data-current><span class="fx-span__bar"><span class="fx-span__name">Alişer Navoiy</span><span class="fx-span__meta">1441–1501</span></span></li><li class="fx-span__row" style="--s:1403;--e:1474"><span class="fx-span__bar"><span class="fx-span__name">Ali Quşçi</span><span class="fx-span__meta">1403–1474 · 33 yil bir davrda</span></span></li><li class="fx-span__row" style="--s:1413;--e:1482"><span class="fx-span__bar"><span class="fx-span__name">Abdurazzoq Samarqandiy</span><span class="fx-span__meta">1413–1482 · 41 yil bir davrda</span></span></li><li class="fx-span__row" style="--s:1438;--e:1506"><span class="fx-span__bar"><span class="fx-span__name">Husayn Boyqaro</span><span class="fx-span__meta">1438–1506 · 60 yil bir davrda</span></span></li><li class="fx-span__row" style="--s:1450;--e:1535"><span class="fx-span__bar"><span class="fx-span__name">Kamoliddin Behzod</span><span class="fx-span__meta">1450–1535 · 51 yil bir davrda</span></span></li><li class="fx-span__row" style="--s:1483;--e:1530"><span class="fx-span__bar"><span class="fx-span__name">Zahiriddin Muhammad Bobur</span><span class="fx-span__meta">1483–1530 · 18 yil bir davrda</span></span></li><li class="fx-span__row" style="--s:1370;--e:1560" data-open><span class="fx-span__bar"><span class="fx-span__name">Temuriylar uyi (davomi)</span><span class="fx-span__meta">1370–…</span></span></li>
</ul></div>
```

- Qilmang: Voqealar ketma-ketligi uçun işlatmang — u timeline.
- Qilmang: Juda köp qator (30+) qöymang — guruhlang yoki filtrlang.
- Qilmang: Yillarni faqat çiziq uzunligi bilan bermang — meta matnda ham yozing.

## Spinner (`spinner`, beta, 0.10.0 dan)

Neytral yuklaniş aylanasi, matn rangida (ota element rangini oladi). Ölçam: sm 16 · md 20 · lg 36. Kengaytma: data-variant=dots (uç nuqta), .fx-spinner-text (matn bilan inline). Şakl morfli variant (4.43, M3 Expressive): data-variant="morph" — brend rangidagi şakl navbat bilan boşqasiga oqib ötadi (portlaş → peçenye → beşburçak → kapsula → quyoş → tört barg) va prujina bilan aylanadi; .fx-spinner-shell — yumşoq doira fon içida. Uzoqroq kutiş (hisobot, AI javobi) uçun; harakat kamaytirilsa şakl joyida turadi.

- Qaçon: Qisqa, tuzilmasi noma'lum kutiş.
- Qaçon emas: Sahifa yoki röyxat yuklanişi → `skeleton`; Tugma bosilgandan keyingi kutiş → `button`
- Variantlar: data-size=sm|md|lg (standart md); data-variant=dots|morph
- Tokenlar: --fx-bg-brand-subtle, --fx-border-width-focus, --fx-duration-pulse, --fx-duration-spin, --fx-ease-spring, --fx-ease-standard, --fx-font-size-sm, --fx-radius-circle, --fx-size-avatar-lg, --fx-size-avatar-md, --fx-size-icon-lg, --fx-size-icon-md, --fx-size-icon-sm, --fx-space-2, --fx-text-brand, --fx-text-secondary

```html
<span class="fx-spinner" role="status" aria-label="Yuklanmoqda"></span>
<span class="fx-spinner" data-size="lg" role="status" aria-label="Hisobot tayyorlanmoqda"></span>
<span class="fx-spinner-text" role="status"><span class="fx-spinner" data-variant="dots" aria-hidden="true"></span>Saqlanmoqda…</span>
<span class="fx-spinner-text" role="status" style="margin-block-start:var(--fx-space-4)"><span class="fx-spinner" data-variant="morph" aria-hidden="true"></span>Hisobot yiğilmoqda…</span>
<span class="fx-spinner-shell" role="status" aria-label="AI javob tayyorlamoqda"><span class="fx-spinner" data-variant="morph" data-size="lg" aria-hidden="true"></span></span>
```

- Qilmang: Tuzilmasi ma'lum sahifaga spinner qöymang — skelet.
- Qilmang: Brend logotipini aylantirmang.

## Splash ekran (`splash`, beta, 0.29.0 dan)

PWA yoki ilova birinçi oçilayotganda körinadigan ekran (4.200, HIG «Launch screen»): markazda belgi va ilova nomi (kirişda yumşoq paydo böladi, keyin sekin «nafas oladi»), ostida yuklaniş çiziği va holat matni («Ma'lumotlar sinxronlanmoqda…»), pastda versiya. Çiziq role="progressbar": aria-valuenow va --fx-splash-value berilsa — aniq, berilmasa — noaniq. Ilova tayyor bölgaç data-state="done" qöyadi — ekran sönadi va bosilmaydi. data-size: screen (standart — fixed, butun ekran, eng yuqori qatlam) yoki block (hujjat namunasi). data-tone: page yoki brand (brend rangli fon — manifest'dagi background_color bilan bir xil qiling, oq miltillaş bölmasin).

- Qaçon: PWA va mobil-veb ilovaning birinçi yuklanişi (keş, sinxron). Kabinetga kirgandan keyin ma'lumot tayyorlanayotgan qisqa lahza.
- Qaçon emas: Sahifa içidagi mazmun yuklanişi → `skeleton`; Sahifalar orasida ötiş → `toploader`; Tugma içida kutiş → `spinner`
- Variantlar: data-size=screen|block (standart screen); data-tone=page|brand (standart page)
- Klaviatura: — — Fokuslanadigan element yöq; yuklaniş tugagaç fokus ilovaga ötadi
- Tokenlar: --fx-bg-brand-solid, --fx-bg-muted, --fx-bg-page, --fx-bg-surface, --fx-border-color-default, --fx-border-width-default, --fx-duration-indeterminate, --fx-duration-pulse, --fx-duration-stagger, --fx-ease-emphasized, --fx-ease-exit, --fx-ease-standard, --fx-font-adjust-display, --fx-font-family-display, --fx-font-size-display-sm, --fx-font-size-sm, --fx-font-size-xl, --fx-font-size-xs, --fx-font-weight-semibold, --fx-knob-motion-loop, --fx-motion-base, --fx-motion-scale-enter, --fx-motion-slow, --fx-motion-slower, --fx-radius-overlay, --fx-radius-pill, --fx-shadow-lg, --fx-space-1, --fx-space-12, --fx-space-4, --fx-space-6, --fx-space-8, --fx-splash-value, --fx-text-on-brand, --fx-text-primary, --fx-text-tertiary, --fx-z-toast

```html
<div class="fx-splash" data-size="block" aria-busy="true" aria-label="FoxOS yuklanmoqda">
  <div class="fx-splash__center">
    <span class="fx-splash__mark" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round" aria-hidden="true"><path d="M4 4l5 4h6l5-4v9a8 8 0 0 1-16 0z"/><path d="M9.5 13h.01M14.5 13h.01" stroke-linecap="round" stroke-width="2.4"/></svg></span>
    <p class="fx-splash__name">FoxOS</p>
    <div class="fx-splash__progress" role="progressbar" aria-label="Yuklaniş" aria-valuemin="0" aria-valuemax="100" aria-valuenow="64" style="--fx-splash-value: 64%"></div>
    <p class="fx-splash__status" role="status">Vazifalar sinxronlanmoqda…</p>
  </div>
  <p class="fx-splash__foot">v2.4.0 · Toşkent</p>
</div>
<div class="fx-splash" data-size="block" data-tone="brand" aria-busy="true" aria-label="Mehr Klinikasi ilovasi yuklanmoqda" style="margin-block-start: var(--fx-space-8)">
  <div class="fx-splash__center">
    <span class="fx-splash__mark" aria-hidden="true">M</span>
    <p class="fx-splash__name">Mehr Klinikasi</p>
    <div class="fx-splash__progress" role="progressbar" aria-label="Yuklaniş"></div>
    <p class="fx-splash__status" role="status">Navbatlar yuklanmoqda…</p>
  </div>
  <p class="fx-splash__foot">Şifokorga yoziliş — 24/7</p>
</div>
```

- Qilmang: Splashni reklama yoki «körsatiş» uçun uşlab turmang — ilova tayyor bölişi bilan data-state="done".
- Qilmang: Har oçilişda uzun animatsiya qöymang — 1–2 soniyadan oşsa, haqiqiy mazmun skeletini körsating.
- Qilmang: Fon rangini manifest'dagi background_color'dan farqli qilmang — oq miltillaş körinadi.

## Bölinadigan panellar (`split`, beta, 0.23.0 dan)

Ikki panel (röyxat va tafsilot, kod va natija) örtasida tortiladigan ajratgiç. Siçqonça/sensor bilan tortiladi, klaviaturada ← → (ustma-ust bölsa ↑ ↓) qadamlab suradi, Enter yoki ikki marta bosiş birinçi panelni yiğadi. Qiymat foizda, istasangiz localStorage'da saqlanadi.

- Qaçon: Röyxat va tafsilotni yonma-yon körsatişda foydalanuvçi özi eni sozlasin (poçta, fayl menejeri, kod muharriri).
- Qaçon emas: Röyxat ustidan çiqadigan tafsilot paneli → `peek`; Qat'iy 2 ustunli maket → `layout`
- Variantlar: data-orientation=horizontal|vertical (standart horizontal)
- Klaviatura: ← → — Birinçi panelni 5 % kiçraytiradi/kattalaştiradi (vertikalda ↑ ↓); Shift + strelka — Katta qadam; Home, End — Eng kiçik / eng katta; Enter — Birinçi panelni yiğadi yoki qaytaradi
- Tokenlar: --fx-bg-brand-solid, --fx-bg-page, --fx-border-color-default, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-ease-standard, --fx-motion-fast, --fx-radius-circle, --fx-space-1, --fx-space-2, --fx-space-6

```html
<div class="fx-split" data-fx-split style="block-size: 14rem; border: 1px solid var(--fx-border-color-default)">
  <div class="fx-split__pane" id="sp-list" tabindex="0" role="region" aria-label="Arizalar röyxati">
    <ul class="fx-list" style="padding-inline: var(--fx-space-4)">
      <li class="fx-list__item"><div class="fx-list__body"><span class="fx-list__title">Aziz Karimov</span><span class="fx-list__meta">Sayt buyurtmasi</span></div></li>
      <li class="fx-list__item"><div class="fx-list__body"><span class="fx-list__title">Madina Yusupova</span><span class="fx-list__meta">Mobil ilova</span></div></li>
      <li class="fx-list__item"><div class="fx-list__body"><span class="fx-list__title">Bobur Toş</span><span class="fx-list__meta">Dizayn tizimi</span></div></li>
    </ul>
  </div>
  <div class="fx-split__handle" role="separator" tabindex="0" aria-label="Röyxat eni" aria-controls="sp-list" aria-valuenow="35" aria-valuemin="20" aria-valuemax="70"></div>
  <div class="fx-split__pane" role="region" aria-label="Ariza tafsiloti" tabindex="0"><div style="padding: var(--fx-space-4)"><strong>Aziz Karimov</strong><p class="fx-hint">Sayt buyurtmasi · 12-oktyabr</p></div></div>
</div>
```

- Qilmang: Ajratgiçni faqat siçqonça uçun qilmang — fokus oladi va klaviatura bilan suriladi (komponent şuni beradi).
- Qilmang: Panellar çegarasini (aria-valuemin/max) olib taşlamang — kontent ezilib ketadi.

## Körsatkiç (stat) (`stat`, beta, 0.2.0 dan)

Yorliq + katta raqam (tabular, --fx-font-family-numeric) + izoh. Neytral karta yoki rangli plitka (data-color, 6 toifa rangi). Ohang: data-tone warning/error raqamni böyaydi. Havola bölsa — <a class="fx-stat">. KPI varianti: özgariş (.fx-delta), mini grafik örni (.fx-stat__viz — içiga fx-chart type="spark"), pastki izoh; ölçam hero/ixçam; qator — .fx-stat-row. Kengaytma: .fx-stat__period (“ötgan oyga nisbatan”), aria-busy (skelet holati), data-tone=success. Tanlanadigan plitkalar (4.128): .fx-stat-row[data-selectable] tablist sifatida — plitka bosilsa boğlangan grafikda şu seriya körinadi; tanlangani tepadagi çiziq va çegara bilan. KPI sarlavhasi (20.10): .fx-stat__head — ikon plitkasi (.fx-stat__icon, data-tone), yorliq va öng çetda trend chip (.fx-delta data-variant="chip") yoki menyu tugmasi; .fx-stat__chart — kartaning pastki çetiga tegib turadigan grafik (fx-chart area yoki spark).

- Qaçon: Bitta muhim raqamni yorliq va izoh bilan körsatiş.
- Qaçon emas: Vaqt böyiça özgariş → `chart`
- Variantlar: data-tone=neutral|warning|error|success (standart neutral); data-color=yellow|pink|blue|coral|green|purple; data-size=hero|compact (standart default); data-selectable=true
- Klaviatura: Enter — Havola bölsa — ötadi; ← → ↑ ↓, Home, End — Tanlanadigan plitkalar orasida yuradi va tanlaydi (bitta Tab nuqtasi)
- Tokenlar: --fx-bg-brand-solid, --fx-bg-brand-subtle, --fx-bg-category-blue, --fx-bg-category-coral, --fx-bg-category-green, --fx-bg-category-pink, --fx-bg-category-purple, --fx-bg-category-yellow, --fx-bg-error-subtle, --fx-bg-muted, --fx-bg-subtle, --fx-bg-success-subtle, --fx-bg-surface, --fx-bg-warning-subtle, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-strong, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-lg, --fx-control-h-sm, --fx-duration-pulse, --fx-ease-emphasized, --fx-ease-enter, --fx-ease-standard, --fx-fg-error, --fx-fg-success, --fx-fg-warning, --fx-font-adjust-numeric, --fx-font-family-numeric, --fx-font-size-display-md, --fx-font-size-xl, --fx-font-size-xs, --fx-font-weight-medium, --fx-knob-motion-lift, --fx-motion-base, --fx-motion-fast, --fx-motion-lift, --fx-motion-press, --fx-popover-width, --fx-radius-badge, --fx-radius-control, --fx-radius-surface, --fx-shadow-md, --fx-size-icon-sm, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-text-brand, --fx-text-on-category, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<div class="fx-stat">
  <span class="fx-stat__label">Bugungi xarajat</span>
  <span class="fx-stat__value">$4.20</span>
  <span class="fx-stat__hint">Kunlik çegara $10</span>
</div>
<a class="fx-stat" data-color="yellow" href="#">
  <span class="fx-stat__label">AGENTLAR <span>→</span></span>
  <span class="fx-stat__value">7</span>
  <span class="fx-stat__hint">3 tasi işlayapti</span>
</a>
<div class="fx-stat" data-tone="error">
  <span class="fx-stat__label">Xatolar</span>
  <span class="fx-stat__value">2</span>
  <span class="fx-stat__hint">Oxirgi soatda</span>
</div>
<div class="fx-stat-row">
<div class="fx-stat">
  <div class="fx-stat__label">Oylik daromad</div>
  <div class="fx-stat__row"><div class="fx-stat__value">48,2 mln</div><div class="fx-stat__viz"><figure class="fx-chart" data-fx-chart data-type="spark"><figcaption class="fx-sr-only">Daromad dinamikasi</figcaption><table class="fx-chart__data"><thead><tr><th>Hafta</th><th>Daromad</th></tr></thead><tbody><tr><th>1</th><td>10</td></tr><tr><th>2</th><td>12</td></tr><tr><th>3</th><td>11</td></tr><tr><th>4</th><td>15</td></tr></tbody></table></figure></div></div>
  <div class="fx-stat__delta"><span class="fx-delta" data-dir="up" data-tone="good">+12,4%</span><span class="fx-stat__hint">ötgan oyga nisbatan</span></div>
  <div class="fx-stat__foot">Reja: 55 mln söm</div>
</div>
</div>
<div class="fx-stat" aria-busy="true"><span class="fx-stat__label">Daromad</span><span class="fx-stat__value">12 480</span><span class="fx-stat__period">ötgan oyga nisbatan</span></div>
<!-- Tanlanadigan KPI (4.128) -->
<div class="fx-stat-row" data-selectable role="tablist" aria-label="Körsatkiç" data-fx-stat aria-controls="kpi-chart">
  <button class="fx-stat" type="button" role="tab" aria-selected="true" data-series="Tuşum"><span class="fx-stat__label">Tuşum</span><span class="fx-stat__value">132 mln</span><span class="fx-delta" data-dir="up" data-tone="good">+8,2% <span class="fx-delta__period">30 kunda</span></span></button>
  <button class="fx-stat" type="button" role="tab" aria-selected="false" data-series="Bitimlar"><span class="fx-stat__label">Bitimlar</span><span class="fx-stat__value">48</span><span class="fx-delta" data-dir="down" data-tone="bad">−4 <span class="fx-delta__period">30 kunda</span></span></button>
  <button class="fx-stat" type="button" role="tab" aria-selected="false" data-series="Yangi mijozlar"><span class="fx-stat__label">Yangi mijozlar</span><span class="fx-stat__value">27</span><span class="fx-delta" data-dir="up" data-tone="good">+6 <span class="fx-delta__period">30 kunda</span></span></button>
</div>
<figure class="fx-chart" id="kpi-chart" data-fx-chart data-type="line">
  <figcaption><span class="fx-chart__title">Tanlangan körsatkiç</span><span class="fx-chart__sub">haftalik · oktyabr</span></figcaption>
  <table class="fx-chart__data"><thead><tr><th>Hafta</th><th>Tuşum</th><th>Bitimlar</th><th>Yangi mijozlar</th></tr></thead>
  <tbody><tr><th>1</th><td>28</td><td>11</td><td>5</td></tr><tr><th>2</th><td>31</td><td>13</td><td>7</td></tr><tr><th>3</th><td>34</td><td>10</td><td>6</td></tr><tr><th>4</th><td>39</td><td>14</td><td>9</td></tr></tbody></table>
</figure>
<div class="fx-stat-row" style="margin-block-start:var(--fx-space-4)">
<div class="fx-stat"><div class="fx-stat__head"><span class="fx-stat__icon" aria-hidden="true"><svg viewBox="0 0 256 256"><path fill="currentColor" d="M232,208a8,8,0,0,1-8,8H32a8,8,0,0,1-8-8V48a8,8,0,0,1,16,0V156.69l50.34-50.35a8,8,0,0,1,11.32,0L128,132.69,180.69,80H160a8,8,0,0,1,0-16h40a8,8,0,0,1,8,8v40a8,8,0,0,1-16,0V91.31l-58.34,58.35a8,8,0,0,1-11.32,0L96,123.31l-56,56V200H224A8,8,0,0,1,232,208Z"/></svg></span><span class="fx-stat__label">Jami tuşum</span><span class="fx-delta" data-variant="chip" data-dir="up" data-tone="good">+3,3%</span></div><span class="fx-stat__value">228,4 mln</span>
<div class="fx-stat__chart"><figure class="fx-chart" data-fx-chart data-type="spark" data-no-table data-height="56"><figcaption class="fx-sr-only">Tuşum dinamikasi</figcaption><table class="fx-chart__data"><thead><tr><th>Kun</th><th>Tuşum</th></tr></thead><tbody><tr><th>1</th><td>12</td></tr><tr><th>2</th><td>14</td></tr><tr><th>3</th><td>13</td></tr><tr><th>4</th><td>17</td></tr><tr><th>5</th><td>16</td></tr><tr><th>6</th><td>21</td></tr><tr><th>7</th><td>24</td></tr></tbody></table></figure></div></div>
<div class="fx-stat"><div class="fx-stat__head"><span class="fx-stat__icon" data-tone="error" aria-hidden="true"><svg viewBox="0 0 256 256"><path fill="currentColor" d="M232,208a8,8,0,0,1-8,8H32a8,8,0,0,1-8-8V48a8,8,0,0,1,16,0v94.37L90.73,98a8,8,0,0,1,10.07-.38l58.81,44.11L218.73,90a8,8,0,1,1,10.54,12l-64,56a8,8,0,0,1-10.07.38L96.39,114.29,40,163.63V200H224A8,8,0,0,1,232,208Z"/></svg></span><span class="fx-stat__label">Rad etilgan</span><span class="fx-delta" data-variant="chip" data-dir="down" data-tone="bad">−5,9%</span></div><span class="fx-stat__value">42,3%</span><span class="fx-stat__hint">ötgan haftaga nisbatan</span></div>
</div>
```

- Qilmang: Bir qatorda 4 tadan köp rangli plitka qöymang; ikki xil rangli plitka ma'noni bildirsin, bezak emas.
- Qilmang: Rangli plitkada data-tone işlatmang — rangli fonda qizil raqam öqilmaydi.
- Qilmang: Raqam yoniga birlikni alohida kiçik matn qilmang — raqam bilan bitta qatorda yozing.

## Raqamlar bölimi (`stats`, beta, 0.29.0 dan)

Landing va «Biz haqimizda» sahifasi uçun raqamlar bölimi (4.176): ixtiyoriy sarlavha bloki va 3–4 ta katta raqam — har birida izoh va qisqa tuşuntiriş. Raqam fx-ticker bilan köriniş maydoniga kirganda aylanib çiqadi (JS bölmasa — oddiy matn, harakat kamaytirilsa — darhol). Tuzilma — <dl>: ekran öquvçi «izoh — raqam» juftini öqiydi, vizual tartibda raqam tepada. data-layout: row (standart) yoki split (sarlavha çapda, raqamlar 2×2). data-variant: plain, divided (ustunlar orasida çiziq), cards (har raqam kartada). Birlik (+, %, mln) .fx-stats__unit içida — kiçikroq va brend rangida.

- Qaçon: Landingda işonç uçun: mijozlar soni, natija, tezlik. «Biz haqimizda» va keys sahifasida natijalar.
- Qaçon emas: Dashboard'dagi jonli KPI (özgariş, sparkline bilan) → `stat`; Ixçam körsatkiçlar qatori ilova içida → `statstrip`
- Variantlar: data-layout=row|split (standart row); data-variant=plain|divided|cards (standart plain)
- Klaviatura: Tab — Fokuslanadigan element yöq — bölim faqat öqiladi
- Tokenlar: --fx-bg-surface, --fx-border-color-default, --fx-border-color-surface, --fx-border-width-default, --fx-dialog-width, --fx-font-adjust-display, --fx-font-adjust-numeric, --fx-font-family-display, --fx-font-family-numeric, --fx-font-size-display-lg, --fx-font-size-display-sm, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-semibold, --fx-line-height-tight, --fx-radius-surface, --fx-space-1, --fx-space-10, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-6, --fx-space-8, --fx-text-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<section class="fx-stats" data-variant="divided" aria-labelledby="st-t">
  <header class="fx-stats__head"><p class="fx-stats__eyebrow">Raqamlarda</p><h2 class="fx-stats__title" id="st-t">Özbek jamoalari FoxUI bilan tezroq quradi</h2><p class="fx-stats__text">2026-yil oktabr holatiga köra, obunaçilar sörovnomasi va paket statistikasi.</p></header>
  <dl class="fx-stats__list">
    <div class="fx-stats__item"><dt class="fx-stats__label">Tayyor komponent</dt><dd class="fx-stats__value"><span class="fx-ticker" data-fx-ticker data-value="232">232</span></dd><dd class="fx-stats__note">Tugmadan CRM sahifasigaça — hammasi tokenlarda.</dd></div>
    <div class="fx-stats__item"><dt class="fx-stats__label">Faol jamoa</dt><dd class="fx-stats__value"><span class="fx-ticker" data-fx-ticker data-value="1480">1 480</span><span class="fx-stats__unit" aria-hidden="true">+</span></dd><dd class="fx-stats__note">Toşkent, Samarqand va Farğonadagi studiyalar.</dd></div>
    <div class="fx-stats__item"><dt class="fx-stats__label">Tezroq işga tuşiriş</dt><dd class="fx-stats__value"><span class="fx-ticker" data-fx-ticker data-value="3.4" data-decimals="1">3,4</span><span class="fx-stats__unit">×</span></dd><dd class="fx-stats__note">Birinçi sahifadan relizgaça, örtaça.</dd></div>
    <div class="fx-stats__item"><dt class="fx-stats__label">Tejalgan mablağ</dt><dd class="fx-stats__value"><span class="fx-ticker" data-fx-ticker data-value="86">86</span><span class="fx-stats__unit">mln söm</span></dd><dd class="fx-stats__note">Bir loyihada dizayn va front-end xarajati.</dd></div>
  </dl>
  <p class="fx-stats__foot">Manba: FoxUI obunaçilari sörovnomasi, 412 ta javob.</p>
</section>
<section class="fx-stats" data-layout="split" data-variant="cards" aria-labelledby="st-t2" style="margin-block-start: var(--fx-space-12)">
  <header class="fx-stats__head"><h2 class="fx-stats__title" id="st-t2">«Ipak Yöli Savdo» bir yilda</h2><p class="fx-stats__text">Onlayn dökon yangi dizayn tizimiga ötgandan keyingi natijalar.</p></header>
  <dl class="fx-stats__list">
    <div class="fx-stats__item"><dt class="fx-stats__label">Konversiya</dt><dd class="fx-stats__value"><span class="fx-ticker" data-fx-ticker data-value="42">42</span><span class="fx-stats__unit">%</span></dd><dd class="fx-stats__note">Savatdan tölovgaça ösiş.</dd></div>
    <div class="fx-stats__item"><dt class="fx-stats__label">Buyurtmalar</dt><dd class="fx-stats__value"><span class="fx-ticker" data-fx-ticker data-value="18600">18 600</span></dd><dd class="fx-stats__note">Oyiga, Toşkent böylab.</dd></div>
  </dl>
</section>
```

- Qilmang: 5 tadan ortiq raqam qöymang — eng kuçli 3–4 tasini tanlang.
- Qilmang: Manbasiz yoki yaxlitlanmagan «aniq» raqam bermang (1 483 217 emas — 1 480+); raqam ostida qayerdan olingani tursin.
- Qilmang: Birlikni raqam içiga yozmang — .fx-stats__unit da alohida (ticker faqat raqamni aylantiradi).
- Qilmang: Bitta raqam uçun bu naqşni işlatmang — fx-stat yoki matn içida.

## Xulosa tasmasi (`statstrip`, beta, 0.23.0 dan)

Röyxat sarlavhasi ostidagi bir qatorli xulosa: joriy filtr böyiça 3–4 raqam (jami, muddati ötgan, tanlangan) va ixtiyoriy «eskiriş» çiziği (köp bölakli progress + legenda). Plitka emas — çegarasiz, ajratgiç çiziqlar orasida (PDP listpage__stat).

- Qaçon: Röyxat sahifasida filtrga qarab özgaradigan 3–4 yiğma raqam.
- Qaçon emas: Alohida katta KPI → `stat`; Boş panel körsatkiçlari → `stat`
- Variantlar: data-tone=warning|error (standart neutral)
- Tokenlar: --fx-border-color-default, --fx-border-width-default, --fx-fg-error, --fx-fg-warning, --fx-font-adjust-numeric, --fx-font-family-numeric, --fx-font-size-xl, --fx-font-size-xs, --fx-font-weight-medium, --fx-popover-width, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-8, --fx-text-primary, --fx-text-tertiary

```html
<dl class="fx-statstrip" aria-label="Joriy filtr böyiça xulosa">
  <div class="fx-statstrip__item"><dt class="fx-statstrip__label">Jami summa</dt><dd class="fx-statstrip__value">412,6 mln</dd><span class="fx-statstrip__hint">248 ta ariza</span></div>
  <div class="fx-statstrip__item" data-tone="error"><dt class="fx-statstrip__label">Muddati ötgan</dt><dd class="fx-statstrip__value">38,2 mln</dd><span class="fx-statstrip__hint">12 ta · 9 %</span></div>
  <div class="fx-statstrip__item"><dt class="fx-statstrip__label">Tanlangan</dt><dd class="fx-statstrip__value">0</dd><span class="fx-statstrip__hint">qator belgilanmagan</span></div>
  <div class="fx-statstrip__aging">
    <dt class="fx-statstrip__label">Eskiriş</dt>
    <dd class="fx-progress" data-variant="stacked" data-size="lg" role="img" aria-label="Eskiriş: 0–30 kun 62 %, 31–60 kun 25 %, 60 kundan köp 13 %" style="margin:0">
      <span class="fx-progress__seg" data-role="ink" style="--fx-progress-value: 62%"></span><span class="fx-progress__seg" data-role="accent" style="--fx-progress-value: 25%"></span><span class="fx-progress__seg" data-role="risk" style="--fx-progress-value: 13%"></span>
    </dd>
    <ul class="fx-legend" aria-label="Eskiriş guruhlari"><li class="fx-legend__item"><span class="fx-legend__swatch" data-role="ink"></span><span class="fx-legend__label">0–30 kun</span><span class="fx-legend__value">62 %</span></li><li class="fx-legend__item"><span class="fx-legend__swatch" data-role="accent"></span><span class="fx-legend__label">31–60</span><span class="fx-legend__value">25 %</span></li><li class="fx-legend__item"><span class="fx-legend__swatch" data-role="risk"></span><span class="fx-legend__label">60+</span><span class="fx-legend__value">13 %</span></li></ul>
  </div>
</dl>
```

- Qilmang: 4 tadan köp raqam qöymang — bu dashboard emas, röyxat xulosasi.
- Qilmang: Pul va soni aralaş raqamda bölmasin: summa va soni alohida (qiymat + izoh).
- Qilmang: Tasmaga amal tugmasi qöymang.

## Holat (`status`, beta, 0.8.0 dan)

Holat belgisi: şakl + söz. Bajarildi — doira, ogohlantiriş — uçburçak, xato — romb, kutilmoqda — halqa, neytral — kvadrat. Kengaytma: data-pulse (“jonli” puls; pending — aylanadi), data-size=sm|lg.

- Qaçon: Jadval katagi, ziç röyxat — yozuv holatini körsatiş.
- Qaçon emas: Alohida turgan yorliq → `badge`
- Variantlar: data-tone=success|warning|error|pending|neutral (standart neutral); data-pulse=true; data-size=sm|lg
- Tokenlar: --fx-border-width-focus, --fx-duration-pulse, --fx-duration-spin, --fx-ease-standard, --fx-fg-error, --fx-fg-success, --fx-fg-warning, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xs, --fx-radius-badge, --fx-radius-circle, --fx-size-status-dot, --fx-space-1, --fx-space-2, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<span class="fx-status" data-tone="success">Tölangan</span>
<span class="fx-status" data-tone="warning">Muddati yaqin</span>
<span class="fx-status" data-tone="error">Muddati ötgan</span>
<span class="fx-status" data-tone="pending">Kutilmoqda</span>
<span class="fx-status" data-tone="neutral">Qoralama</span>
<span class="fx-status" data-tone="success" data-pulse>Jonli efir</span> <span class="fx-status" data-tone="pending" data-pulse data-size="sm">Sinxronlanmoqda</span>
```

- Qilmang: Sözsiz faqat belgining özini qoldirmang.

## Qadamlar (`steps`, beta, 0.14.0 dan)

Köp bosqiçli jarayon: bajarilganlar belgi bilan, joriysi halqa va qalin (aria-current="step"), keyingilar xira; orasida çiziq. Xato qadam (data-state="error") — «!» belgisi bilan. Kengaytma: data-orientation=vertical, data-style=dot, .fx-steps__text/.fx-steps__desc (tavsif qatori), bosiladigan qadam (<a>/<button> içida). Bosiladigan navigatsiya (4.141): data-clickable — ötilgan va joriy qadamlar tugmaga aylanadi (foxui.js → steps), bosilsa şu qadamga qaytiladi; erişilgan eng uzoq qadamgaça oldinga ham. Erişilmagan qadam aria-disabled. data-clickable="all" — erkin tartibli forma. Har tugma aria-label: «2-qadam: Yetkaziş manzili, bajarildi». Hodisa fx-steps-change (bekor qiliş mumkin).

- Qaçon: Forma yoki jarayon bir neça bosqiçdan iborat.
- Qaçon emas: Bir xil darajadagi bölimlar → `tabs`; Foiz → `progress`
- Variantlar: data-state=todo|done|error (standart todo); data-orientation=vertical; data-style=dot; data-clickable=|all
- Klaviatura: Tab — Bosiladigan qadamlar orasida; ← → (tikda ↑ ↓), Home / End — Qadam tugmalari orasida fokus; Enter / Boʻshliq — Şu qadamga ötadi
- Tokenlar: --fx-bg-brand-solid, --fx-bg-brand-solid-hover, --fx-bg-brand-subtle, --fx-border-color-default, --fx-border-color-error, --fx-border-color-focus, --fx-border-color-strong, --fx-border-width-focus, --fx-fg-error, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-regular, --fx-font-weight-semibold, --fx-radius-badge, --fx-radius-circle, --fx-size-checkbox, --fx-size-status-dot, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-6, --fx-text-brand, --fx-text-error, --fx-text-on-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<ol class="fx-steps" aria-label="Obuna böliş">
  <li class="fx-steps__item" data-state="done"><span class="fx-steps__label">Tarif</span></li>
  <li class="fx-steps__item" aria-current="step"><span class="fx-steps__label">Tölov</span></li>
  <li class="fx-steps__item"><span class="fx-steps__label">Tasdiq</span></li>
</ol>
<ol class="fx-steps" data-orientation="vertical"><li class="fx-steps__item" data-state="done"><a href="#a"><span class="fx-steps__text"><span class="fx-steps__label">Hisob</span><span class="fx-steps__desc">Poçta tasdiqlandi</span></span></a></li><li class="fx-steps__item" aria-current="step"><span class="fx-steps__text"><span class="fx-steps__label">Tölov</span><span class="fx-steps__desc">Karta ma'lumotlari</span></span></li><li class="fx-steps__item"><span class="fx-steps__label">Tayyor</span></li></ol>
<!-- Bosiladigan qadamlar (4.141): oʻtilganiga qaytish -->
<ol class="fx-steps" data-fx-steps data-clickable aria-label="Buyurtma rasmiylaştiriş">
  <li class="fx-steps__item" data-state="done"><span class="fx-steps__label">Savat</span></li>
  <li class="fx-steps__item" data-state="done"><span class="fx-steps__label">Yetkaziş manzili</span></li>
  <li class="fx-steps__item" aria-current="step"><span class="fx-steps__label">Tölov</span></li>
  <li class="fx-steps__item"><span class="fx-steps__label">Tasdiq</span></li>
</ol>
```

- Qilmang: 6 tadan köp qadam qilmang — jarayonni qisqartiring.

## Takliflar (tayyor savollar) (`suggestions`, beta, 0.23.0 dan)

Boş çatda yoki javobdan keyin tayyor savollar qatori. Bosilsa matn composer'ga yoziladi (data-target) yoki darhol yuboriladi (data-send); har holda fx-suggest hodisasi çiqadi. Joylaşuv: öraş, bir qatorli scroll yoki ustun kartalar.

- Qaçon: Böş çat boşida va javobdan keyin davom etiş uçun.
- Qaçon emas: Filtr (tanlanadigan holat) → `chip`; Asosiy amal tugmasi → `button`
- Variantlar: data-layout=scroll|stack (standart wrap)
- Klaviatura: Tab — Takliflar orasida; Enter, Space — Taklifni tanlaydi
- Tokenlar: --fx-bg-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-strong, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-sm, --fx-duration-stagger, --fx-ease-enter, --fx-ease-standard, --fx-font-size-sm, --fx-knob-pill, --fx-motion-fast, --fx-motion-instant, --fx-motion-press, --fx-motion-slow, --fx-radius-control, --fx-radius-overlay, --fx-size-icon-sm, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-text-brand, --fx-text-primary, --fx-text-secondary

```html
<div class="fx-suggestions" id="sg1" data-fx-suggestions role="group" aria-label="Taklif etilgan savollar">
  <button type="button" class="fx-suggestions__item"><svg data-fx-icon="spark" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 3l1.8 5.2L19 10l-5.2 1.8L12 17l-1.8-5.2L5 10l5.2-1.8z"/></svg>Oktabr hisobotini qisqaça yoz</button><button type="button" class="fx-suggestions__item"><svg data-fx-icon="spark" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 3l1.8 5.2L19 10l-5.2 1.8L12 17l-1.8-5.2L5 10l5.2-1.8z"/></svg>Qaysi mijozlar faol emas?</button><button type="button" class="fx-suggestions__item"><svg data-fx-icon="spark" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 3l1.8 5.2L19 10l-5.2 1.8L12 17l-1.8-5.2L5 10l5.2-1.8z"/></svg>Keyingi hafta rejasi</button>
</div>
<div class="fx-suggestions" data-layout="stack" data-fx-suggestions role="group" aria-label="Boşlaş uçun">
  <button type="button" class="fx-suggestions__item"><svg data-fx-icon="spark" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 3l1.8 5.2L19 10l-5.2 1.8L12 17l-1.8-5.2L5 10l5.2-1.8z"/></svg>Mijozlar röyxatini tahlil qil</button><button type="button" class="fx-suggestions__item"><svg data-fx-icon="spark" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 3l1.8 5.2L19 10l-5.2 1.8L12 17l-1.8-5.2L5 10l5.2-1.8z"/></svg>Haftalik hisobotni tayyorla</button>
</div>
```

- Qilmang: 5–6 tadan köp taklif bermang.
- Qilmang: Taklifni yuboriş tugmasi deb öylamang — standartda faqat matnni maydonga qöyadi (yuboriş uçun data-send).
- Qilmang: Tugma matni va yuboriladigan matn farq qilsa data-text bering.

## Rang tanlagiç (`swatch`, beta, 0.23.0 dan)

Rang namunalaridan tanlaş: native radio (bitta) yoki checkbox (bir neçta), JS'siz. Rang — --fx-swatch (token); tanlangani ✓ va halqa bilan.

- Qaçon: Teg, kategoriya yoki mavzu rangini tanlaş.
- Qaçon emas: Erkin rang (HEX, palitra) → `input`; Matnli variantlar → `togglegroup`
- Variantlar: data-size=sm|md|lg (standart md); data-shape=square|circle (standart square)
- Klaviatura: ← → ↑ ↓ — Rangni almaştiradi (radio); Space — Belgilaydi (checkbox)
- Tokenlar: --fx-bg-category-, --fx-bg-muted, --fx-border-color-focus, --fx-border-width-focus, --fx-ease-spring, --fx-ease-standard, --fx-motion-fast, --fx-motion-instant, --fx-motion-press, --fx-radius-avatar-ratio, --fx-radius-circle, --fx-size-control-lg, --fx-size-control-md, --fx-size-control-sm, --fx-space-2, --fx-text-on-category, --fx-text-primary

```html
<fieldset class="fx-swatches" aria-label="Teg rangi">
  <label class="fx-swatch" style="--fx-swatch:var(--fx-bg-category-blue)"><input type="radio" name="rang" value="koʻk" aria-label="Kök" checked></label>
  <label class="fx-swatch" style="--fx-swatch:var(--fx-bg-category-green)"><input type="radio" name="rang" value="yashil" aria-label="Yaşil"></label>
  <label class="fx-swatch" style="--fx-swatch:var(--fx-bg-category-yellow)"><input type="radio" name="rang" value="sariq" aria-label="Sariq"></label>
  <label class="fx-swatch" style="--fx-swatch:var(--fx-bg-category-coral)"><input type="radio" name="rang" value="marjon" aria-label="Marjon"></label>
  <label class="fx-swatch" style="--fx-swatch:var(--fx-bg-category-purple)"><input type="radio" name="rang" value="binafsha" aria-label="Binafşa"></label>
  <label class="fx-swatch" data-shape="circle" style="--fx-swatch:var(--fx-bg-category-pink)"><input type="radio" name="rang" value="pushti" aria-label="Puşti" disabled></label>
</fieldset>
```

- Qilmang: Har inputga rang nomi bilan aria-label bering — rang yolğiz belgi emas.
- Qilmang: Namunaga HEX yozmang — faqat token.

## Almaştirgiç (`switcher`, beta, 0.19.0 dan)

Workspace, brend yoki korxona almaştirgiçi: yon panel tepasida brend örnida turadi — belgi, nom, ikkinçi qator va chevron; bosilsa menyu oçiladi, tanlangani ✓ bilan belgilanadi va tugmaga köçadi. Şakli PDP almaştirgiçidan, ölçamlari FoxUI kalibridan. Yiğilgan yon menyuda faqat belgi qoladi. Kengaytma: .fx-switcher__logo[data-add] (“+ Yangi” belgisi), .fx-switcher__search (menyu içidagi qidiruv maydoni; filtrlaş ilovada).

- Qaçon: Foydalanuvçi bir neçta workspace, brend yoki korxona orasida almaşadi va ular bir xil interfeysni ulaşadi.
- Qaçon emas: Ilovaning katta bölimlari orasida ötiş → `rail`; Ikki-uçta köriniş orasida tanlaş → `segment`
- Variantlar: data-color=brand|yellow|pink|blue|coral|green|purple (standart brand); data-size=md|sm (standart md)
- Klaviatura: Enter, Space — Menyuni oçadi; ↑ ↓ Home End — Bandlar böylab yuradi; Enter — Tanlaydi va yopadi; Esc — Yopadi
- Tokenlar: --fx-bg-brand-solid, --fx-bg-category-blue, --fx-bg-category-coral, --fx-bg-category-green, --fx-bg-category-pink, --fx-bg-category-purple, --fx-bg-category-yellow, --fx-bg-field, --fx-bg-muted, --fx-border-color-field, --fx-border-color-focus, --fx-border-color-strong, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-sm, --fx-ease-emphasized, --fx-ease-standard, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-semibold, --fx-motion-fast, --fx-motion-instant, --fx-motion-press, --fx-motion-slow, --fx-radius-control, --fx-radius-nav, --fx-radius-surface, --fx-size-avatar-md, --fx-size-icon-lg, --fx-size-icon-sm, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-text-on-brand, --fx-text-on-category, --fx-text-primary, --fx-text-tertiary

```html
<button class="fx-switcher" type="button" popovertarget="ws" aria-haspopup="menu" aria-expanded="false" data-fx-switcher>
  <span class="fx-switcher__logo" data-color="coral"><svg viewBox="0 0 32 32" aria-hidden="true"><path d="M4 4l8 7h8l8-7v13c0 6-5.4 11-12 11S4 23 4 17z" fill="currentColor"/></svg></span>
  <span class="fx-switcher__label"><span class="fx-switcher__name">RedFox</span><span class="fx-switcher__sub">Workspace</span></span>
  <svg class="fx-switcher__chev" viewBox="0 0 16 16" aria-hidden="true"><path d="M5 6l3-3 3 3M5 10l3 3 3-3" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
</button>
<div class="fx-menu" id="ws" role="menu" popover data-fx-menu>
  <div class="fx-menu__title" role="presentation">Workspace</div>
  <button class="fx-menu__item" role="menuitemradio" aria-checked="true" data-value="redfox"><span class="fx-switcher__logo" data-size="sm" data-color="coral">R</span>RedFox</button>
  <button class="fx-menu__item" role="menuitemradio" aria-checked="false" data-value="webfox"><span class="fx-switcher__logo" data-size="sm" data-color="blue">W</span>WebFox</button>
  <button class="fx-menu__item" role="menuitemradio" aria-checked="false" data-value="nomlab"><span class="fx-switcher__logo" data-size="sm" data-color="green">N</span>NomLab</button>
  <button class="fx-menu__item" role="menuitemradio" aria-checked="false" data-value="foxui"><span class="fx-switcher__logo" data-size="sm" data-color="purple">F</span>FoxUI</button>
  <hr class="fx-menu__sep">
  <button class="fx-menu__item" role="menuitemradio" aria-checked="false" data-value="all" data-label="Hammasi" data-sub="4 ta workspace"><span class="fx-switcher__logo" data-size="sm">∗</span>Hammasi</button>
</div>
<input class="fx-switcher__search" type="search" placeholder="Workspace qidiriş" aria-label="Workspace qidiriş">
<span class="fx-switcher__logo" data-add aria-hidden="true">+</span>
```

- Qilmang: Almaştirgiçni tepa panelga va yon panelga ikki marta qöymang — bitta joyda (WDS r193).
- Qilmang: Rol yoki profilni şu yerga qöşmang — ular profil menyusida.

## Jadval (`table`, beta, 0.3.0 dan)

Ma'lumot jadvali: qotgan sarlavha, raqam ustuni öngda, jami — tfoot. Saralaş (th[aria-sort] + .fx-table__sort), qator tanlaş (belgi ustuni, «hammasi» qisman holat bilan), ommaviy amallar paneli, havola orqali kelingan qator (:target) belgilanadi. Xulq foxui.js'da (data-fx-table). Kengaytmalar (0.24): ziçlik (data-density), zebra va çegarali, qotgan birinçi ustun (data-pin-first), qotgan jami qatori (data-sticky-foot), kengaytiriladigan qator (.fx-table__expand + .fx-table__detail), qatordagi amallar (hover/fokusda), skelet qatorlar, ustun körinişi menyusi (data-fx-table-cols) va Shift+bosiş bilan oraliq tanlaş. Telefonda kartalar (4.134): data-stack="sm|md" — tor ekranda har qator «yorliq : qiymat» juftlari bilan kartaga aylanadi. Ustun enini özgartiriş (4.135): data-resizable — sarlavha çetidagi tutqiç (datagrid'dagi kabi): sudraş, klaviaturada fokuslanadi (← → 16 px, Shift — 64, Home — eng tor, Enter yoki ikki marta bosiş — avtomatik en). Birinçi özgarişda jadval table-layout: fixed böladi; uzun matn «…» bilan kesiladi. Hodisa fx-table-resize {col, width}.

- Qaçon: Bir xil tuzilmadagi köp yozuvni soliştiriş.
- Qaçon emas: 1–3 ta yozuv → `card`
- Variantlar: data-size=sm|md (standart md); data-density=compact|default|comfortable (standart default); data-zebra=true; data-bordered=true; data-pin-first=true; data-sticky-foot=true; data-stack=sm|md; data-resizable=
- Klaviatura: Tab, Enter — Saralaş tugmasi — ustun böyiça saralaydi (ösiş ↔ kamayiş); Space — Qatorni tanlaydi; Shift + bosish — Belgi katakçasida — oxirgi bosilgan bilan hozirgisi orasidagi qatorlarni tanlaydi; Enter, Space — Qator çevroni — tafsilot qatorini oçadi/yopadi (aria-expanded); ← → (tutqichda) — Ustun eni 16 px (Shift — 64 px); Home (tutqichda) — Eng tor en; Enter (tutqichda) — Avtomatik en
- Tokenlar: --fx-bg-brand-solid, --fx-bg-brand-subtle, --fx-bg-muted, --fx-bg-page, --fx-bg-pressed, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-strong, --fx-border-width-default, --fx-border-width-focus, --fx-ease-standard, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-knob-density, --fx-motion-fast, --fx-radius-badge, --fx-radius-control, --fx-radius-surface, --fx-size-checkbox, --fx-size-icon-sm, --fx-size-min-target, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<div class="fx-table-bulk" hidden data-fx-table-bulk="t1"><span class="fx-table-bulk__count"><span data-count>0</span> ta tanlandi</span><button class="fx-btn" data-size="sm">Holatni özgartiriş</button></div>
<div class="fx-table-scroll">
<table class="fx-table" id="t1" data-fx-table>
  <thead><tr>
    <th class="fx-table__check"><label class="fx-check"><input type="checkbox" aria-label="Hammasini tanlaş" data-select-all><span class="fx-check__box"></span></label></th>
    <th aria-sort="none"><button class="fx-table__sort">Mijoz</button></th>
    <th data-type="nowrap">Holat</th>
    <th data-type="num" aria-sort="descending"><button class="fx-table__sort">Summa</button></th>
  </tr></thead>
  <tbody>
    <tr><td class="fx-table__check"><label class="fx-check"><input type="checkbox" aria-label="Tanlaş: Aziz"><span class="fx-check__box"></span></label></td><td>Aziz</td><td data-type="nowrap"><span class="fx-status" data-tone="success">Tölangan</span></td><td data-type="num" data-value="1200000">1 200 000</td></tr>
    <tr><td class="fx-table__check"><label class="fx-check"><input type="checkbox" aria-label="Tanlaş: Bobur"><span class="fx-check__box"></span></label></td><td>Bobur</td><td data-type="nowrap"><span class="fx-status" data-tone="warning">Kutilmoqda</span></td><td data-type="num" data-value="450000">450 000</td></tr>
  </tbody>
</table>
</div>

<!-- Kengaytmalar -->
<div class="fx-table-scroll">
<table class="fx-table" id="t2" data-fx-table data-pin-first data-sticky-foot data-zebra>
  <caption class="fx-sr-only">Oktyabr buyurtmalari</caption>
  <thead><tr>
    <th data-col="mijoz" scope="col">Mijoz</th><th data-col="shahar" scope="col">Şahar</th><th data-col="holat" scope="col" data-type="nowrap">Holat</th><th data-col="summa" scope="col" data-type="num">Summa</th><th scope="col"><span class="fx-sr-only">Amallar</span></th>
  </tr></thead>
  <tbody>
    <tr><td><button class="fx-table__expand" aria-expanded="false" aria-label="Tafsilot: Aziz"><svg viewBox="0 0 16 16" aria-hidden="true"><path d="M6 3.5 10.5 8 6 12.5" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></button> Aziz</td><td>Toşkent</td><td data-type="nowrap"><span class="fx-status" data-tone="success">Tölangan</span></td><td data-type="num">1 200 000</td><td class="fx-table__actions"><button class="fx-btn" data-variant="ghost" data-size="sm">Oçiş</button></td></tr>
    <tr class="fx-table__detail" hidden><td colspan="5">Buyurtma №128 · 3 ta mahsulot · yetkaziş 18-oktyabr.</td></tr>
    <tr><td><button class="fx-table__expand" aria-expanded="false" aria-label="Tafsilot: Bobur"><svg viewBox="0 0 16 16" aria-hidden="true"><path d="M6 3.5 10.5 8 6 12.5" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></button> Bobur</td><td>Samarqand</td><td data-type="nowrap"><span class="fx-status" data-tone="warning">Kutilmoqda</span></td><td data-type="num">450 000</td><td class="fx-table__actions"><button class="fx-btn" data-variant="ghost" data-size="sm">Oçiş</button></td></tr>
    <tr class="fx-table__detail" hidden><td colspan="5">Buyurtma №131 · tölov kutilmoqda.</td></tr>
    <tr class="fx-table__skeleton" aria-hidden="true"><td><span class="fx-skeleton"></span></td><td><span class="fx-skeleton"></span></td><td><span class="fx-skeleton"></span></td><td><span class="fx-skeleton"></span></td><td></td></tr>
  </tbody>
  <tfoot><tr><th scope="row">Jami</th><td></td><td></td><td data-type="num">1 650 000</td><td></td></tr></tfoot>
</table>
</div>
<button class="fx-btn" data-size="sm" type="button" popovertarget="t2-cols">Ustunlar</button>
<div class="fx-popover" id="t2-cols" popover data-fx-table-cols="t2">
  <fieldset class="fx-table-opts"><legend>Körinadigan ustunlar</legend>
    <label class="fx-check"><input type="checkbox" value="shahar" checked><span class="fx-check__box"></span>Şahar</label>
    <label class="fx-check"><input type="checkbox" value="holat" checked><span class="fx-check__box"></span>Holat</label>
    <label class="fx-check"><input type="checkbox" value="summa" checked><span class="fx-check__box"></span>Summa</label>
  </fieldset>
</div>
<fieldset class="fx-table-opts" data-fx-table-density="t2"><legend>Ziçlik</legend>
  <label class="fx-check"><input type="radio" name="t2-d" value="compact"><span class="fx-check__box"></span>Ixçam</label>
  <label class="fx-check"><input type="radio" name="t2-d" value="default" checked><span class="fx-check__box"></span>Standart</label>
  <label class="fx-check"><input type="radio" name="t2-d" value="comfortable"><span class="fx-check__box"></span>Keng</label>
</fieldset>
<!-- Telefonda kartalar (4.134) -->
<table class="fx-table" data-stack="sm" data-fx-table>
  <caption class="fx-sr-only">Bugungi buyurtmalar</caption>
  <thead><tr><th scope="col">Mijoz</th><th scope="col">Telefon</th><th scope="col" data-type="nowrap">Holat</th><th scope="col" data-type="num">Summa</th></tr></thead>
  <tbody>
    <tr><td>Aziz Karimov</td><td>+998 90 123 45 67</td><td data-type="nowrap"><span class="fx-status" data-tone="success">Tölangan</span></td><td data-type="num">1 200 000 söm</td></tr>
    <tr><td>Shahnoza Olimova</td><td>+998 93 555 12 40</td><td data-type="nowrap"><span class="fx-status" data-tone="warning">Kutilmoqda</span></td><td data-type="num">640 000 söm</td></tr>
  </tbody>
</table>
<!-- Ustun enini oʻzgartirish (4.135) -->
<div class="fx-table-scroll">
<table class="fx-table" id="t-rs" data-fx-table data-resizable>
  <caption class="fx-sr-only">Omborxona qoldiqlari</caption>
  <thead><tr><th scope="col">Mahsulot</th><th scope="col">Ombor</th><th scope="col" data-type="num">Qoldiq, dona</th><th scope="col" data-type="num">Narx, söm</th></tr></thead>
  <tbody>
    <tr><td>Paxta mato, 150 sm, oq</td><td>Toşkent, Sergeli</td><td data-type="num">1 240</td><td data-type="num">38 000</td></tr>
    <tr><td>Ipak mato «Atlas», naqşli</td><td>Marğilon</td><td data-type="num">310</td><td data-type="num">145 000</td></tr>
    <tr><td>Trikotaj, qora</td><td>Samarqand</td><td data-type="num">2 080</td><td data-type="num">27 500</td></tr>
  </tbody>
</table>
</div>
```

- Qilmang: Holatni katakda faqat rang bilan bermang — belgi (badge) va söz.
- Qilmang: Kurs yoki narx ustunini jamlamang — faqat pul summasi jamlanadi.
- Qilmang: Butun sahifani gorizontal aylantirmang — jadval öz hududida (.fx-table-scroll) aylanadi.
- Qilmang: Qotgan birinçi ustunga 3 tadan köp ustun qöşmang — kiçik ekranda özi siğmay qoladi.
- Qilmang: Qator amallarini faqat hover'da qoldirib, klaviatura va sensorli qurilmani unutmang — fokusda va sensorda doim körinadi.

## Tablar (`tabs`, beta, 0.1.0 dan)

Bir sahifa içidagi bölimlar, har tabning öz paneli. Variantlar: tagi çizilgan (standart), pill, enclosed; tik (data-orientation); ikonli va sonli tab; yopiladigan tab; siğmasa siljitiş tugmalari. Klaviatura foxui.js'da (data-fx-tabs). Dangasa panel (24.10): panelda data-src — faqat oçilganda yuklanadi, yuklaş paytida skelet (300 ms qoidasi), siçqonça/fokusda oldindan yuklaş, keş, xatoda «Qayta uriniş»; tablist'da data-url="tab" — holat ?tab= da.

- Qaçon: Bir obyektning bir neçta bölimi (umumiy, arizalar, tarix). Tab içida son yoki ikonka kerak bölsa; oçiq hujjatlar (yopiladigan tablar).
- Qaçon emas: 2–4 köriniş, panelsiz → `segment`; Sahifalar orasida ötiş → `nav`
- Variantlar: data-variant=underline|pill|enclosed (standart underline); data-orientation=horizontal|vertical (standart horizontal)
- Klaviatura: ← →  (tikda ↑ ↓) — Oldingi / keyingi tab (darhol oçiladi); Home, End — Birinçi / oxirgi tab; Delete — Yopiladigan tabni yopadi; Tab — Tanlangan tabdan panelga
- Tokenlar: --fx-bg-brand-solid, --fx-bg-muted, --fx-bg-pressed, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-sm, --fx-duration-base, --fx-ease-spring, --fx-ease-standard, --fx-font-size-sm, --fx-font-weight-medium, --fx-motion-fast, --fx-motion-slow, --fx-radius-badge, --fx-radius-nav, --fx-size-icon-lg, --fx-size-icon-md, --fx-size-icon-sm, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-space-6, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<div class="fx-tabs" role="tablist" aria-label="Mijoz" data-fx-tabs>
  <button class="fx-tabs__tab" role="tab" id="t1" aria-controls="p1" aria-selected="true">Umumiy</button>
  <button class="fx-tabs__tab" role="tab" id="t2" aria-controls="p2" aria-selected="false">Arizalar <span class="fx-badge" data-type="count">3</span></button>
  <button class="fx-tabs__tab" role="tab" id="t3" aria-controls="p3" aria-selected="false">Tarix</button>
</div>
<div class="fx-tabs__panel" role="tabpanel" id="p1" aria-labelledby="t1" tabindex="0">Ism, telefon, holat.</div>
<div class="fx-tabs__panel" role="tabpanel" id="p2" aria-labelledby="t2" tabindex="0" hidden>3 ta ariza.</div>
<div class="fx-tabs__panel" role="tabpanel" id="p3" aria-labelledby="t3" tabindex="0" hidden>Özgarişlar tarixi.</div>

<!-- Variantlar: <div class="fx-tabs" role="tablist" data-variant="pill" data-fx-tabs> · data-variant="enclosed" · data-orientation="vertical".
     Ikonli tab: <button class="fx-tabs__tab" role="tab"><svg class="fx-tabs__icon" viewBox="0 0 20 20" aria-hidden="true">…</svg>Nom</button>
     Yopiladigan: <span class="fx-tabs__item"><button class="fx-tabs__tab" role="tab">…</button><button class="fx-tabs__close" data-fx-tab-close aria-label="Yopish">×</button></span>
     Siljitish: <div class="fx-tabs__wrap"><button class="fx-tabs__scroll" data-dir="prev" aria-label="Oldinga" hidden>…</button><div class="fx-tabs" role="tablist" data-fx-tabs>…</div><button class="fx-tabs__scroll" data-dir="next" aria-label="Keyingisi" hidden>…</button></div> -->
<div class="fx-tabs-bar"><div class="fx-tabs" role="tablist" aria-label="Köriniş" data-fx-tabs><button class="fx-tabs__tab" role="tab" id="tb-d" aria-controls="tbp-d" aria-selected="true">Doska</button><button class="fx-tabs__tab" role="tab" id="tb-j" aria-controls="tbp-j" aria-selected="false">Jadval</button></div><div class="fx-tabs-bar__end"><button class="fx-btn" data-variant="primary" data-size="sm" type="button">+ Yangi buyurtma</button></div></div><div class="fx-tabs__panel" role="tabpanel" id="tbp-d" aria-labelledby="tb-d" tabindex="0">Doska</div><div class="fx-tabs__panel" role="tabpanel" id="tbp-j" aria-labelledby="tb-j" tabindex="0" hidden>Jadval</div>

<!-- Dangasa panel: faqat faol tab kontenti sahifa bilan keladi; qolgani bosilganda (yoki siçqonça ustiga kelganda) yuklanadi.
     HTML parcha — panelga qöyiladi; JSON — panelda «fx-tab-data» hodisasi (event.detail.data), loyiha özi çizadi. -->
<div class="fx-tabs" role="tablist" aria-label="Mijoz kartasi" data-fx-tabs data-url="tab">
  <button class="fx-tabs__tab" role="tab" id="mk-t1" data-tab="umumiy" aria-controls="mk-p1" aria-selected="true">Umumiy</button>
  <button class="fx-tabs__tab" role="tab" id="mk-t2" data-tab="arizalar" aria-controls="mk-p2" aria-selected="false">Arizalar</button>
</div>
<div class="fx-tabs__panel" role="tabpanel" id="mk-p1" aria-labelledby="mk-t1" tabindex="0">Ism, telefon, holat.</div>
<div class="fx-tabs__panel" role="tabpanel" id="mk-p2" aria-labelledby="mk-t2" tabindex="0" hidden data-src="/crm/mijoz/42/arizalar.html">
  <div class="fx-skeleton-group" data-anim="shimmer" aria-hidden="true"><span class="fx-skeleton"></span><span class="fx-skeleton"></span><span class="fx-skeleton"></span></div>
</div>
```

- Qilmang: Tablarni sahifalar orasida ötiş uçun işlatmang — nav.
- Qilmang: 6 tadan köp tab qöymang — bölimlarni qayta öylang.
- Qilmang: Yopiş tugmasini tab içiga qöymang (tugma içida tugma) — .fx-tabs__item qobiği.
- Qilmang: Dangasa panelni boşqa saytdan yuklamang — faqat öz manzil (xavfsizlik: HTML panelga qöyiladi).

## Teg kiritiş (`tags`, beta, 0.23.0 dan)

Maydon içida chiplar: yozib Enter yoki vergul bosilsa teg qöşiladi, böş joyda Backspace oxirgisini olib taşlaydi, joylangan matn vergul va qator böyiça bölinadi. Takror teg qöşilmaydi; ixtiyoriy çegara (data-max). Qiymatlar yaşirin maydonda vergul bilan.

- Qaçon: Erkin teglar, kalit sözlar, email röyxati.
- Qaçon emas: Tayyor variantlardan köp tanlov → `combobox`; Filtr chiplari → `chip`
- Variantlar: data-size=sm|md (standart md)
- Klaviatura: Enter, , — Tegni qöşadi; Backspace (boʻsh maydonda) — Oxirgi tegni olib taşlaydi; Tab → ×, Enter — Tanlangan tegni olib taşlaydi
- Tokenlar: --fx-bg-field, --fx-bg-muted, --fx-border-color-error, --fx-border-color-field, --fx-border-color-focus, --fx-border-color-strong, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-md, --fx-control-h-sm, --fx-ease-standard, --fx-font-size-md, --fx-knob-field-fill, --fx-knob-pill, --fx-motion-fast, --fx-radius-control, --fx-space-1, --fx-space-12, --fx-space-3, --fx-space-4, --fx-text-primary, --fx-text-tertiary

```html
<label class="fx-field" for="tg1"><span class="fx-label">Mijoz teglari</span></label>
<div class="fx-tags" data-fx-tags data-max="8">
  <span class="fx-chip" data-type="tag" data-value="VIP">VIP <button type="button" class="fx-chip__remove" aria-label="Olib taşlaş: VIP">×</button></span>
  <span class="fx-chip" data-type="tag" data-value="Ulgurji">Ulgurji <button type="button" class="fx-chip__remove" aria-label="Olib taşlaş: Ulgurji">×</button></span>
  <input class="fx-tags__input" id="tg1" type="text" autocomplete="off" placeholder="Teg yozing, Enter bosing" aria-describedby="tg1-h">
  <input type="hidden" name="teglar" value="VIP,Ulgurji">
</div>
<p class="fx-hint" id="tg1-h">Enter yoki vergul — qöşadi; Backspace — oxirgisini olib taşlaydi.</p>
```

- Qilmang: Tayyor röyxatdan tanlanadigan bölsa teg kiritiş emas — combobox (köp tanlov).
- Qilmang: Teg uzun jumla bölmasin — qisqa söz.

## Jamoa bölimi (`team`, beta, 0.29.0 dan)

Marketing saytining «Jamoa» sahifasi yoki bölimi (4.177): sarlavha bloki, a'zolar töri — rasm (yoki pastel fonda boş harflar), ism, lavozim, qisqa bio va ijtimoiy havolalar — hamda oxirida «Bizga qöşiling» kartasi (karyera sahifasiga). Rasm hover'da biroz kattalaşib rangga kiradi. data-layout: grid (standart — katta kartalar) yoki compact (doira rasm, markazda — 10+ kişilik jamoa yoki maslahat kengaşi uçun).

- Qaçon: «Biz haqimizda» va «Jamoa» sahifalari. Landing'da işonç uçun — mahsulot ortidagi odamlar.
- Qaçon emas: Ilova içidagi a'zolar röyxati va rollar → `members`; Bitta odam haqida qisqa ma'lumot → `persona`
- Variantlar: data-layout=grid|compact (standart grid); data-color=yellow|pink|blue|coral|green|purple (standart none)
- Klaviatura: Tab — Ijtimoiy havolalar va «Vakansiyalar» tugmasi böylab
- Tokenlar: --fx-bg-category-blue, --fx-bg-category-coral, --fx-bg-category-green, --fx-bg-category-pink, --fx-bg-category-purple, --fx-bg-category-yellow, --fx-bg-muted, --fx-bg-subtle, --fx-border-color-focus, --fx-border-color-strong, --fx-border-width-default, --fx-border-width-focus, --fx-dialog-width, --fx-ease-standard, --fx-font-adjust-display, --fx-font-family-display, --fx-font-size-display-md, --fx-font-size-display-sm, --fx-font-size-lg, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xl, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-line-height-tight, --fx-motion-base, --fx-motion-fast, --fx-motion-slow, --fx-radius-circle, --fx-radius-control, --fx-radius-surface, --fx-size-icon-sm, --fx-size-min-target, --fx-space-1, --fx-space-10, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-6, --fx-space-8, --fx-text-brand, --fx-text-on-category, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<section class="fx-team" aria-labelledby="tm-t">
  <header class="fx-team__head"><p class="fx-team__eyebrow">Jamoa</p><h2 class="fx-team__title" id="tm-t">FoxUI'ni kim quryapti</h2><p class="fx-team__text">Toşkentdagi kiçik jamoa: dizayn, kod va qöllab-quvvatlaş — bir stolda.</p></header>
  <ul class="fx-team__list">
    <li class="fx-team__member"><span class="fx-team__photo" data-color="purple" aria-hidden="true">RS</span><h3 class="fx-team__name">Rahim Sadiy</h3><p class="fx-team__role">Asosçi, mahsulot</p><p class="fx-team__bio">Ön yildan beri raqamli mahsulotlar dizayni bilan şuğullanadi.</p><ul class="fx-team__links"><li><a class="fx-team__link" href="#" aria-label="Rahim Sadiy — Telegram"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round" aria-hidden="true"><path d="M21 4 3 11l6 2 2 6 3-4 5 4z"/></svg></a></li><li><a class="fx-team__link" href="#" aria-label="Rahim Sadiy — LinkedIn"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" aria-hidden="true"><rect x="3" y="3" width="18" height="18" rx="3"/><path d="M8 10v7M8 7v.01M12 17v-4a2 2 0 0 1 4 0v4M12 10v7"/></svg></a></li></ul></li>
    <li class="fx-team__member"><span class="fx-team__photo" data-color="green" aria-hidden="true">DY</span><h3 class="fx-team__name">Dilnoza Yusupova</h3><p class="fx-team__role">Dizayn tizimi muhandisi</p><p class="fx-team__bio">Tokenlar, mavzular va kontrast qöriqçisi uning qölidan ötadi.</p><ul class="fx-team__links"><li><a class="fx-team__link" href="#" aria-label="Dilnoza Yusupova — Telegram"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round" aria-hidden="true"><path d="M21 4 3 11l6 2 2 6 3-4 5 4z"/></svg></a></li><li><a class="fx-team__link" href="#" aria-label="Dilnoza Yusupova — LinkedIn"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" aria-hidden="true"><rect x="3" y="3" width="18" height="18" rx="3"/><path d="M8 10v7M8 7v.01M12 17v-4a2 2 0 0 1 4 0v4M12 10v7"/></svg></a></li></ul></li>
    <li class="fx-team__member"><span class="fx-team__photo" data-color="blue" aria-hidden="true">JT</span><h3 class="fx-team__name">Jasur Toshpoʻlatov</h3><p class="fx-team__role">Front-end</p><p class="fx-team__bio">Komponent xulqlari, klaviatura va brauzer sinovlari.</p><ul class="fx-team__links"><li><a class="fx-team__link" href="#" aria-label="Jasur Toshpoʻlatov — Telegram"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round" aria-hidden="true"><path d="M21 4 3 11l6 2 2 6 3-4 5 4z"/></svg></a></li><li><a class="fx-team__link" href="#" aria-label="Jasur Toshpoʻlatov — LinkedIn"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" aria-hidden="true"><rect x="3" y="3" width="18" height="18" rx="3"/><path d="M8 10v7M8 7v.01M12 17v-4a2 2 0 0 1 4 0v4M12 10v7"/></svg></a></li></ul></li>
    <li class="fx-team__join"><h3 class="fx-team__join-title">Bizga qöşiling</h3><p class="fx-team__join-text">3 ta oçiq vakansiya — masofaviy ham mumkin.</p><a class="fx-btn" href="#">Vakansiyalar</a></li>
  </ul>
</section>
<section class="fx-team" data-layout="compact" aria-labelledby="tm-t2" style="margin-block-start: var(--fx-space-12)">
  <header class="fx-team__head"><h2 class="fx-team__title" id="tm-t2">Maslahat kengaşi</h2></header>
  <ul class="fx-team__list">
    <li class="fx-team__member"><span class="fx-team__photo" data-color="yellow" aria-hidden="true">AK</span><h3 class="fx-team__name">Aziz Karimov</h3><p class="fx-team__role">«Ipak Yöli Savdo», CTO</p></li>
    <li class="fx-team__member"><span class="fx-team__photo" data-color="pink" aria-hidden="true">MN</span><h3 class="fx-team__name">Malika Nazarova</h3><p class="fx-team__role">UX tadqiqotçi</p></li>
    <li class="fx-team__member"><span class="fx-team__photo" data-color="coral" aria-hidden="true">BT</span><h3 class="fx-team__name">Bobur Toshmatov</h3><p class="fx-team__role">«Mehr Klinikasi», IT rahbar</p></li>
    <li class="fx-team__member"><span class="fx-team__photo" data-color="green" aria-hidden="true">SO</span><h3 class="fx-team__name">Sardor Olimov</h3><p class="fx-team__role">Mustaqil dasturçi</p></li>
  </ul>
</section>
```

- Qilmang: Rasmlarni har xil nisbat va fonda qöymang — bir xil kesim (4:5) va bir xil yoruğlik.
- Qilmang: Bio'ni CV'ga aylantirmang — bir-ikki jumla, odamning nima qilişi.
- Qilmang: Ijtimoiy havolani belgisiz (faqat ikon) aria-label'siz qoldirmang.

## Terminal oynasi (`terminal`, beta, 0.28.0 dan)

CLI va npm buyruqlarini «jonli» körsatiş oynasi (4.74): sarlavha qatori (uçta nuqta, fayl yoki papka nomi, ixtiyoriy nusxalaş tugmasi) va qatorlar — buyruq (cmd, oldida $), natija (out), muvaffaqiyat (ok, ✓), xato (err, ✕), ma'lumot (info). Körinişga kirganda buyruqlar harfma-harf yoziladi, natijalar ketma-ket çiqadi, oxirida kursor miltillaydi. Matn DOM'da doim töliq: nusxalaş va ekran öquvçi buzilmaydi. Harakat kamaytirilsa — hammasi darhol körinadi.

- Qaçon: Landing yoki hujjatda örnatiş qadamlarini «jonli» körsatiş. CLI mahsulotining qanday işlaşini bitta oynada namoyiş qiliş.
- Qaçon emas: Nusxalanadigan kod yoki buyruq → `code`; Bitta buyruqni sarlavhada yozdiriş → `textfx`
- Variantlar: data-kind=cmd|out|ok|err|info (standart out); data-dots=color (standart mono)
- Klaviatura: Enter, Space — «Qayta» tugmasi animatsiyani qayta ijro etadi
- Tokenlar: --fx-bg-brand-solid, --fx-border-width-default, --fx-color-neutral-100, --fx-color-neutral-400, --fx-color-neutral-950, --fx-color-pastel-blue, --fx-color-pastel-coral, --fx-color-pastel-green, --fx-color-pastel-yellow, --fx-duration-pulse, --fx-ease-enter, --fx-font-adjust-mono, --fx-font-family-mono, --fx-font-size-sm, --fx-font-size-xs, --fx-motion-fast, --fx-motion-shift-sm, --fx-radius-circle, --fx-radius-surface, --fx-shadow-lg, --fx-size-status-dot, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5

```html
<div class="fx-terminal" data-fx-terminal data-fx-scheme="dark" data-dots="color" role="figure" aria-label="FoxUI'ni örnatiş">
  <div class="fx-terminal__bar">
    <span class="fx-terminal__dots" aria-hidden="true"><i></i><i></i><i></i></span>
    <p class="fx-terminal__title">~/loyiha</p>
    <button class="fx-btn" data-variant="ghost" data-size="xs" type="button" data-terminal="replay">Qayta</button>
  </div>
  <pre class="fx-terminal__body"><span class="fx-terminal__line" data-kind="cmd">npx foxui init</span><span class="fx-terminal__line" data-kind="out">Mavzu: amethyst · Uslub: Aylana · Shrift: Inter</span><span class="fx-terminal__line" data-kind="ok">foxui.css, foxui.js va AGENTS.md qoʻshildi</span><span class="fx-terminal__line" data-kind="cmd">npx foxui add pricing hero faq</span><span class="fx-terminal__line" data-kind="out">3 ta naqsh · 0 ta bogʻliqlik</span><span class="fx-terminal__line" data-kind="ok">Tayyor — npm run dev</span></pre>
</div>
```

- Qilmang: Uzun log yoki haqiqiy çiqişni bu oynaga tökmang — u namoyiş uçun (5–8 qator).
- Qilmang: Kod faylini terminalda körsatmang — kod bloki.
- Qilmang: Yoziş tezligini juda sekin qilmang — öquvçi kutmaydi (data-speed 30–60).

## Mijozlar fikri (`testimonials`, beta, 0.28.0 dan)

Ijtimoiy isbot bölimi (4.172): sarlavha va iqtibos kartalari — ixtiyoriy yulduzli baho, fikr matni (muhim joyi <mark> bilan ajratiladi), avatar, ism va lavozim. data-layout: grid (standart — ustunli ziç joylaşuv, kartalar balandligi har xil) yoki featured (bitta katta iqtibos markazda, sarlavha şriftida). Harakatli variant — kartalarni .fx-marquee içiga qöying (gorizontal yoki vertikal ustunlar).

- Qaçon: Landingda mijozlar fikrini 3–9 karta bilan körsatiş. Bitta kuçli iqtibos — narx yoki CTA oldidan (featured).
- Qaçon emas: Çat yoki izohlar oqimi → `comments`; Mijoz logolari → `logos`
- Variantlar: data-layout=featured (standart grid)
- Tokenlar: --fx-bg-surface, --fx-border-color-surface, --fx-border-width-default, --fx-color-pastel-yellow, --fx-dialog-width, --fx-font-adjust-display, --fx-font-family-display, --fx-font-size-display-md, --fx-font-size-display-sm, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xl, --fx-font-size-xs, --fx-font-weight-semibold, --fx-popover-width, --fx-radius-badge, --fx-radius-surface, --fx-shadow-sm, --fx-space-1, --fx-space-10, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-6, --fx-space-8, --fx-text-brand, --fx-text-primary, --fx-text-secondary, --fx-viz-accent

```html
<section class="fx-testimonials" aria-labelledby="ts-t">
  <header class="fx-testimonials__head"><h2 class="fx-testimonials__title" id="ts-t">Jamoalar nima deydi</h2><p class="fx-testimonials__text">FoxUI bilan sayt va ilova qurayotganlarning fikri.</p></header>
  <ul class="fx-testimonials__grid">
    <li><figure class="fx-testimonials__item"><div class="fx-testimonials__rating" role="img" aria-label="5 dan 5 yulduz">★★★★★</div><blockquote class="fx-testimonials__quote"><p>Ilgari har yangi sahifada tugma va oraliqlarni qaytadan kelişardik. Endi jamoa bitta tilda gapiradi — <mark>dizayndan kodgaça bir kun</mark>.</p></blockquote><figcaption class="fx-testimonials__author"><span class="fx-avatar" data-color="purple" aria-hidden="true">DQ</span><span><cite class="fx-testimonials__name">Dilnoza Qodirova</cite><span class="fx-testimonials__role">Mahsulot dizayneri, Çorsu Market</span></span></figcaption></figure></li>
    <li><figure class="fx-testimonials__item"><div class="fx-testimonials__rating" role="img" aria-label="5 dan 5 yulduz">★★★★★</div><blockquote class="fx-testimonials__quote"><p>npx foxui update birinçi marta özgarişlarni körsatganda işonmadim: heç narsa buzilmadi.</p></blockquote><figcaption class="fx-testimonials__author"><span class="fx-avatar" data-color="blue" aria-hidden="true">JA</span><span><cite class="fx-testimonials__name">Jasur Aliyev</cite><span class="fx-testimonials__role">Frontend dasturçi, Navbahor Soft</span></span></figcaption></figure></li>
    <li><figure class="fx-testimonials__item"><div class="fx-testimonials__rating" role="img" aria-label="5 dan 4 yulduz">★★★★☆</div><blockquote class="fx-testimonials__quote"><p>Qoronği rejim va mavzular bilan boğliq savollar umuman qolmadi. Mijozga 3 ta mavzuni körsatib, tanlatdik.</p></blockquote><figcaption class="fx-testimonials__author"><span class="fx-avatar" data-color="green" aria-hidden="true">MR</span><span><cite class="fx-testimonials__name">Madina Rasulova</cite><span class="fx-testimonials__role">Asosçi, Ipak Yöli Lab</span></span></figcaption></figure></li>
    <li><figure class="fx-testimonials__item"><div class="fx-testimonials__rating" role="img" aria-label="5 dan 5 yulduz">★★★★★</div><blockquote class="fx-testimonials__quote"><p>AI agentimiz MCP orqali komponentlarni özi topadi. Kod tekşiruvida «HEX rang işlatilgan» degan izoh endi çiqmaydi.</p></blockquote><figcaption class="fx-testimonials__author"><span class="fx-avatar" data-color="coral" aria-hidden="true">SB</span><span><cite class="fx-testimonials__name">Sardor Bekmurodov</cite><span class="fx-testimonials__role">Texnik rahbar, Registon Media</span></span></figcaption></figure></li>
    <li><figure class="fx-testimonials__item"><div class="fx-testimonials__rating" role="img" aria-label="5 dan 5 yulduz">★★★★★</div><blockquote class="fx-testimonials__quote"><p>Eng yoqqani — özbekça matnlar. ʻ belgisi har şriftda töğri, sarlavhalar çiroyli.</p></blockquote><figcaption class="fx-testimonials__author"><span class="fx-avatar" data-color="yellow" aria-hidden="true">NT</span><span><cite class="fx-testimonials__name">Nodira Toʻxtayeva</cite><span class="fx-testimonials__role">Dizayn bölimi, Tashkent Digital</span></span></figcaption></figure></li>
  </ul>
</section>
<section class="fx-testimonials" data-layout="featured" aria-label="Asosiy fikr" style="margin-block-start:var(--fx-space-10)">
  <figure class="fx-testimonials__item"><blockquote class="fx-testimonials__quote"><p>Dizayn tizimini ikki marta qurmaslik uçun yaratdik. Endi u har loyihada bir xil işlaydi — biz faqat rangini tanlaymiz.</p></blockquote><figcaption class="fx-testimonials__author"><span class="fx-avatar" data-size="lg" data-color="purple" aria-hidden="true">RS</span><span><cite class="fx-testimonials__name">Rustam Sobirov</cite><span class="fx-testimonials__role">Studiya rahbari</span></span></figcaption></figure>
</section>
```

- Qilmang: Töqima fikr yozmang — haqiqiy mijoz, ruxsati bilan, ismi va lavozimi bilan.
- Qilmang: Har kartaga uzun matn qöymang — 1–3 gap.
- Qilmang: Faqat 5 yulduzli fikrlarni terib qöymang — işonçni yöqotadi; baho şart emas.

## Matn (`text`, beta, 0.22.0 dan)

Matn uslubi: ölçam (lg/md/sm/caption), ohang, vazn, tabular raqam, balance/pretty, bir qatorga yoki N qatorga qisqartiriş. Yordamçi: fx-muted (ikkinçi darajali), fx-eyebrow (yuqori yorliq).

- Qaçon: Oddiy matn, izoh, yorliq va qisqartiriladigan qatorlar.
- Qaçon emas: Sahifa yoki bölim sarlavhasi → `heading`; Uzun maqola/CMS matni → `prose`
- Variantlar: data-size=lg|md|sm|caption (standart md); data-tone=secondary|tertiary|brand|info|success|warning|error (standart primary); data-weight=regular|medium|semibold (standart regular); data-wrap=balance|pretty (standart wrap); data-clamp=2|3|4 (standart none)
- Tokenlar: --fx-fg-error, --fx-fg-info, --fx-fg-success, --fx-fg-warning, --fx-font-size-lg, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-regular, --fx-font-weight-semibold, --fx-text-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<p class="fx-eyebrow">Mijozlar</p>
<p class="fx-text" data-size="lg" data-weight="medium" data-wrap="balance">Arizalar bir joyda: kim yozdi, qaçon va nima söradi.</p>
<p class="fx-text" data-tone="secondary" data-clamp="2">Har bir ariza saytdagi formadan keladi va darhol Discord'ga xabar bölib tuşadi. Uzun izoh ikki qatordan keyin qisqartiriladi, qolgani karta oçilganda körinadi.</p>
<p class="fx-text" data-size="sm" data-tone="tertiary" data-numeric>Oxirgi yangilaniş: 17.10.2026, 14:05</p>
<p class="fx-muted">Ikkinçi darajali izoh.</p>
```

- Qilmang: Sarlavha örniga fx-text işlatmang — semantik <h2>/<h3> va fx-heading.
- Qilmang: Qisqartirilgan matnning töliq variantini yaşirmang: title yoki oçiş yöli bölsin.

## Matn effektlari (`textfx`, beta, 0.28.0 dan)

Hero va bölim sarlavhalari uçun törtta matn effekti (data-effect): «type» — yozuv maşinkasi, harfma-harf yoziladi va kursor miltillaydi (data-words bilan bir neçta ibora navbat bilan yoziladi); «rotate» — sarlavhadagi bitta söz navbat bilan almaşadi (pastdan blur bilan çiqadi, eng uzun söz eni saqlanadi — matn sakramaydi); «split» — sözlar (data-by="çar" — harflar) körinişga kirganda poğonali blur-fade bilan çiqadi; «mark» — söz ostiga marker çizilib boradi (data-variant="underline" — pastki çiziq). Ekran öquvçi töliq matnni darhol oladi; JS bölmasa yoki harakat kamaytirilsa — oddiy töliq matn. 5-tölqin: «shine» — matn ustidan nur ötadi (data-tone="brand" — brend rangida); «gradient» — mavzu ranglaridan gradient bilan böyalgan sarlavha (data-flow — sekin oqadi, data-color="warm" — iliq ranglar); «scramble» — harflar tasodifiy belgilardan asl matnga yeçiladi (körinişga kirganda; data-trigger="hover" — kursor yoki fokusda qayta, data-mono — monoşrift); «morph» — bir söz ikkinçisiga blur orqali eriydi (rotate kabi .fx-textfx__word sözlari, siljişsiz). Shine va oqadigan gradient faqat körinişda harakatlanadi.

- Qaçon: Landing hero sarlavhasi: aylanuvçi söz yoki birinçi körinişda sözma-söz çiqiş. CLI yoki buyruqni körsatiş (type) — terminal oynasisiz. Abzatsdagi bitta asosiy fikrni marker bilan ajratiş.
- Qaçon emas: Buyruq va natijani ketma-ket körsatiş → `terminal`; Oddiy sarlavha → `heading`; AI javobi kutilmoqda (shimmer) → `thinking`
- Variantlar: data-effect=type|rotate|split|mark|shine|gradient|scramble|morph (standart type); data-by=char (standart word); data-variant=underline (standart fill); data-color=pink|blue|green|warm (standart accent); data-tone=inherit (standart brand); data-align=center (standart start)
- Tokenlar: --fx-bg-category-blue, --fx-bg-category-coral, --fx-bg-category-green, --fx-bg-category-pink, --fx-bg-category-yellow, --fx-bg-surface, --fx-border-width-focus, --fx-duration-pulse, --fx-duration-shimmer, --fx-duration-stagger, --fx-ease-emphasized, --fx-ease-exit, --fx-ease-standard, --fx-font-adjust-mono, --fx-font-family-mono, --fx-knob-motion, --fx-motion-exit-base, --fx-motion-scale-enter, --fx-motion-slow, --fx-motion-slower, --fx-radius-badge, --fx-space-1, --fx-space-2, --fx-text-brand, --fx-text-primary, --fx-text-secondary, --fx-viz-accent

```html
<h2 class="fx-heading" data-size="display">Saytingiz <span class="fx-textfx" data-fx-textfx data-effect="rotate"><span class="fx-textfx__word">tezroq</span><span class="fx-textfx__word">çiroyliroq</span><span class="fx-textfx__word">özbekça</span></span> böladi</h2>
<p class="fx-heading" data-size="h3"><span class="fx-textfx" data-fx-textfx data-effect="type" data-words="npx foxui init|npx foxui add pricing|npx foxui update"></span></p>
<h2 class="fx-heading" data-size="h1"><span class="fx-textfx" data-fx-textfx data-effect="split">Dizayn tizimi — bir marta quriladi, hamma joyda işlaydi</span></h2>
<p style="font-size:var(--fx-font-size-lg);max-inline-size:40rem">Komponentlar Figma'siz, <mark class="fx-textfx" data-fx-textfx data-effect="mark">töğridan-töğri kodda</mark> keladi va <mark class="fx-textfx" data-fx-textfx data-effect="mark" data-variant="underline" data-color="pink">bitta buyruq bilan</mark> yangilanadi.</p>
<p style="font-size:var(--fx-font-size-lg)"><span class="fx-textfx" data-fx-textfx data-effect="shine">AI javob tayyorlamoqda — mijozlar bazasi tahlil qilinmoqda…</span></p>
<h2 class="fx-heading" data-size="display"><span class="fx-textfx" data-fx-textfx data-effect="gradient" data-flow>Özbek tilidagi dizayn tizimi</span></h2>
<p class="fx-heading" data-size="h3"><a class="fx-link" href="#"><span class="fx-textfx" data-fx-textfx data-effect="scramble" data-trigger="hover" data-mono>FOXUI 0.29 ÇIQDI</span></a></p>
<h2 class="fx-heading" data-size="h1">Biz <span class="fx-textfx" data-fx-textfx data-effect="morph" data-interval="2600"><span class="fx-textfx__word">tezroq</span><span class="fx-textfx__word">aniqroq</span><span class="fx-textfx__word">çiroyliroq</span></span> quramiz</h2>
```

- Qilmang: Bir sahifada bir neçta aylanuvçi effekt qöymang — bitta urğu (hero sarlavhasi).
- Qilmang: Uzun matnni harfma-harf yozdirmang — 3–6 sözli ibora yoki buyruq.
- Qilmang: Muhim ma'lumotni (narx, sana) aylanuvçi sözga qöymang — öquvçi kutib turmaydi.
- Qilmang: Oddiy matnni ajratiş uçun mark'ni har qatorda işlatmang — abzatsda bitta.
- Qilmang: Gradient va shine'ni oddiy matn yoki tugma yozuviga qöymang — sarlavha va holat qatori uçun; bir ekranda bittadan.

## Mavzu almaştirgiç (`theme-switcher`, beta, 0.23.0 dan)

Yoruğ / Qoronği / Tizim tanlovi (#154): <html data-fx-scheme> ni örnatadi («Tizim» — atribut olib taşlanadi, qurilma sozlamasi işlaydi) va tanlovni eslab qoladi. fx-segment ustiga qurilgan; ixçam ikonli variant. Aylana oçiliş (data-reveal="circle"): yangi mavzu bosilgan tugmadan aylana bölib butun ekranga yoyiladi (View Transitions + clip-path); qöllanmasa, harakat kamaytirilsa yoki data-fx-motion="none"da — darhol almaşadi. Bitta tugma (data-cycle — masalan admin qobiğı rels pastida): bosilsa yoruğ ↔ qoronği, aria-pressed = qoronği. Switch (data-variant="switch", Ustoz 25.10): kun/tun — kapsula ustida quyoş va oy, tutqiç joriy rejim ostiga suriladi; bitta tugma role="switch", aria-checked = qoronği. Boşlanğiç holat SSR'da aria-checked bilan beriladi; data-attr (masalan data-theme) va data-store="none" — saqlaş loyihada, har almaşuvda «fx-themeswitch» hodisasi (detail.scheme). Aylana oçiliş — data-reveal="circle".

- Qaçon: Sayt footer'i, sozlamalar, profil menyusi.
- Qaçon emas: Mavzu rangini (brend kutubxonasi) tanlaş → `select`; Oddiy ikki holat almaştirgiçi → `segment`
- Variantlar: data-variant=text|icon|switch (standart text); data-reveal=none|circle (standart none); data-size=md|sm (standart md)
- Klaviatura: Tab, Enter, Space — Mavzuni tanlaydi; Space, Enter — Switch: yoruğ ↔ qoronği
- Tokenlar: --fx-bg-muted, --fx-bg-muted-hover, --fx-bg-pressed, --fx-bg-surface, --fx-border-color-default, --fx-border-width-default, --fx-ease-standard, --fx-motion-base, --fx-radius-circle, --fx-radius-pill, --fx-shadow-sm, --fx-size-icon-sm, --fx-space-1, --fx-space-2, --fx-space-6, --fx-text-primary, --fx-text-tertiary, --fx-z-raised

```html
<button class="fx-theme-switcher" data-variant="switch" type="button" role="switch" aria-checked="false" aria-label="Qoronği rejim" data-fx-themeswitch data-cycle>
  <span class="fx-theme-switcher__track" aria-hidden="true"><svg class="fx-theme-switcher__icon" viewBox="0 0 20 20" aria-hidden="true"><circle cx="10" cy="10" r="3.2" fill="none" stroke="currentColor" stroke-width="1.6"/><path d="M10 2.5v2M10 15.5v2M2.5 10h2M15.5 10h2M4.7 4.7l1.4 1.4M13.9 13.9l1.4 1.4M4.7 15.3l1.4-1.4M13.9 6.1l1.4-1.4" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/></svg><svg class="fx-theme-switcher__icon" viewBox="0 0 20 20" aria-hidden="true"><path d="M16.5 11.5A6.5 6.5 0 0 1 8.5 3.5a6.5 6.5 0 1 0 8 8z" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linejoin="round"/></svg><span class="fx-theme-switcher__knob"></span></span>
</button>
<div class="fx-segment fx-theme-switcher" role="group" aria-label="Mavzu" data-fx-themeswitch>
  <button class="fx-segment__item" type="button" data-value="light" aria-pressed="false">Yoruğ</button>
  <button class="fx-segment__item" type="button" data-value="dark" aria-pressed="false">Qoronği</button>
  <button class="fx-segment__item" type="button" data-value="system" aria-pressed="true">Tizim</button>
</div>
<div class="fx-segment fx-theme-switcher" data-variant="icon" role="group" aria-label="Mavzu (ixçam)" data-fx-themeswitch>
  <button class="fx-segment__item" type="button" data-value="light" aria-pressed="false"><svg class="fx-theme-switcher__icon" viewBox="0 0 20 20" aria-hidden="true"><circle cx="10" cy="10" r="3.2" fill="none" stroke="currentColor" stroke-width="1.6"/><path d="M10 2.5v2M10 15.5v2M2.5 10h2M15.5 10h2M4.7 4.7l1.4 1.4M13.9 13.9l1.4 1.4M4.7 15.3l1.4-1.4M13.9 6.1l1.4-1.4" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/></svg><span class="fx-theme-switcher__label">Yoruğ</span></button>
  <button class="fx-segment__item" type="button" data-value="dark" aria-pressed="false"><svg class="fx-theme-switcher__icon" viewBox="0 0 20 20" aria-hidden="true"><path d="M16.5 11.5A6.5 6.5 0 0 1 8.5 3.5a6.5 6.5 0 1 0 8 8z" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linejoin="round"/></svg><span class="fx-theme-switcher__label">Qoronği</span></button>
  <button class="fx-segment__item" type="button" data-value="system" aria-pressed="true"><svg class="fx-theme-switcher__icon" viewBox="0 0 20 20" aria-hidden="true"><rect x="2.5" y="4" width="15" height="10" rx="2" fill="none" stroke="currentColor" stroke-width="1.6"/><path d="M7 17h6" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/></svg><span class="fx-theme-switcher__label">Tizim</span></button>
</div>
<div class="fx-segment fx-theme-switcher" data-variant="icon" role="group" aria-label="Mavzu (aylana bilan)" data-fx-themeswitch data-reveal="circle">
  <button class="fx-segment__item" type="button" data-value="light" aria-pressed="false"><span class="fx-theme-switcher__label">Yoruğ</span>☀</button>
  <button class="fx-segment__item" type="button" data-value="dark" aria-pressed="false"><span class="fx-theme-switcher__label">Qoronği</span>☾</button>
  <button class="fx-segment__item" type="button" data-value="system" aria-pressed="true"><span class="fx-theme-switcher__label">Tizim</span>◐</button>
</div>
```

- Qilmang: Faqat ikonli variantda yorliqni olib taşlamang — .fx-theme-switcher__label ekran öquvçi uçun qoladi.
- Qilmang: Ikki tugmali «oy/quyoş» juftligini alohida tugmalar qilib yasamang — kun/tun uçun bitta switch (data-variant="switch"); «Tizim» kerak bölsa — segment.
- Qilmang: Aylana oçilişni sahifadagi har bir almaştirgiçga qöymang — bitta asosiy (header) yetarli.

## Öylayapti (shimmer) va oqim kursori (`thinking`, beta, 0.23.0 dan)

Javob hali boşlanmaganda «Öylayapti…» yozuvi (mavjud .fx-shimmer-text yaltiraşi) uçqun ikon bilan; oqim matni oxirida miltillovçi kursor ▍. Yakunda kursor olib taşlanadi.

- Qaçon: AI javob yozilişidan oldingi kutiş. Oqimli matn oxirida “hali yozilyapti” belgisi.
- Qaçon emas: Odam yozayotganini körsatiş (uç nuqta) → `message`; Uzoq jarayon, qadamlar bilan → `trace`
- Tokenlar: --fx-duration-pulse, --fx-ease-standard, --fx-font-size-sm, --fx-size-icon-sm, --fx-space-1, --fx-space-2, --fx-text-brand, --fx-text-tertiary

```html
<span class="fx-thinking" role="status"><svg data-fx-icon="spark" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 3l1.8 5.2L19 10l-5.2 1.8L12 17l-1.8-5.2L5 10l5.2-1.8z"/></svg><span class="fx-shimmer-text">Öylayapti…</span></span>
<p>Oktabr tuşumi 1 284 500 000 söm böldi, ötgan oyga nisbatan 12,4 % ösiş<span class="fx-thinking__caret" aria-hidden="true"></span></p>
```

- Qilmang: Yaltiraşni butun javob matniga qöymang — faqat «Öylayapti…» yorliğiga.
- Qilmang: Kursorni javob tugagaç qoldirmang — olib taşlang.
- Qilmang: Yaltiraş holatini yolğiz rangga tayantirmang — doim matn («Öylayapti…») yozing.

## 3D egiliş karta (`tilt`, beta, 0.29.0 dan)

Kursorga qarab karta perspektivada egiladi (Aceternity 3D Card Effect, Comet Card): kursor turgan tomon pastga botadi, içidagi [data-depth] qismlar (1, 2, 3) turli masofaga oldinga çiqadi — qatlamli çuqurlik hissi. data-fx-tilt="glare" — kursor ortidan yumşoq yaltiraş; data-max — eng katta burçak (standart 10°). Çiqişda karta prujina bilan tekislanadi. Faqat siçqonçada işlaydi: barmoq va klaviaturada karta tekis, hamma kontent öz joyida. Harakat kamaytirilsa, calm yoki none rejimda egilmaydi.

- Qaçon: Landing sahifadagi mahsulot yoki tarif kartasi — «qölga olib köriş» hissi. Sovğa kartasi, sertifikat, çipta körinişi.
- Qaçon emas: Oddiy ma'lumot kartasi → `card`; Kursor nuri (egilişsiz) → `effects`
- Variantlar: data-fx-tilt=plain|glare (standart plain); data-depth=1|2|3 (standart 1)
- Tokenlar: --fx-bg-static-light, --fx-ease-spring, --fx-ease-standard, --fx-motion-base, --fx-motion-fast, --fx-motion-slow, --fx-motion-slower, --fx-shadow-lg, --fx-space-12, --fx-space-4, --fx-space-8, --fx-tilt-gx, --fx-tilt-gy, --fx-tilt-x, --fx-tilt-y

```html
<div style="display:flex;flex-wrap:wrap;gap:var(--fx-space-6);padding:var(--fx-space-6)">
  <article class="fx-card" data-fx-tilt style="inline-size:18rem">
    <span class="fx-badge" data-tone="brand" data-depth style="justify-self:start">Yangi</span>
    <h3 class="fx-card__title" data-depth="2">FoxUI Pro</h3>
    <p class="fx-card__text" data-depth>212 komponent, 8 mavzu va MCP orqali AI agent — bitta obunada.</p>
    <div data-depth="3" style="block-size:8rem;border-radius:var(--fx-radius-control);background:linear-gradient(135deg, var(--fx-bg-category-blue), var(--fx-bg-category-purple))"></div>
    <a class="fx-btn" data-variant="primary" href="#" data-depth="2" style="justify-self:start">Batafsil</a>
  </article>
  <article class="fx-card" data-fx-tilt="glare" data-max="14" style="inline-size:18rem;background:linear-gradient(160deg, var(--fx-bg-category-coral), var(--fx-bg-category-pink));color:var(--fx-text-on-category)">
    <p class="fx-card__text" data-depth style="color:inherit">Sovğa kartasi</p>
    <h3 class="fx-card__title" data-depth="3" style="font-size:var(--fx-font-size-display-sm);color:inherit">500 000 söm</h3>
    <p class="fx-card__text" data-depth="2" style="color:inherit">Boğ kafe · 2026-yil oxirigaça</p>
  </article>
</div>
```

- Qilmang: Matni köp kartaga qöymang — egilganda öqiş qiyin; mahsulot, sovğa yoki tarif kartasi uçun.
- Qilmang: Bir törda hamma kartani egiluvçi qilmang — bitta-ikkita urğu.
- Qilmang: data-max'ni 15° dan oşirmang — boş aylanadi.

## Vaqt maydoni (`timefield`, beta, 0.23.0 dan)

Soat va daqiqa (24 soatli, ixtiyoriy soniya) segmentlari. ↑ ↓ qiymatni özgartiradi (daqiqa data-step qadami bilan), raqam yozilsa keyingi segmentga ötadi, Backspace tozalaydi. Formaga HH:MM yaşirin input orqali ketadi. Siferblat va röyxat (4.103): data-variant="list" — maydon yonidagi soat tugmasi 15 daqiqalik röyxatni oçadi (kompyuter; data-list-step, data-from, data-to), data-variant="dial" — soat siferblati (telefon): avval soat (taşqi halqa 12, 1…11, içki — 00, 13…23), keyin daqiqa (00…55), tanlangaç yopiladi. Segmentlar bilan yoziş ham doim işlaydi.

- Qaçon: Soat:daqiqa kiritiş (iş vaqti, eslatma, uçraşuv). Sana bilan birga: fx-datepicker yoniga.
- Qaçon emas: Sana tanlaş → `datepicker`; Davomiylik yoki 5–10 tayyor vaqt → `select`
- Variantlar: data-size=md|sm (standart md); data-variant=field|list|dial (standart field)
- Klaviatura: ↑ ↓ — Qiymat ±1 (daqiqa — qadam bilan); PageUp / PageDown — Katta qadam (soat 6, daqiqa 10); Home / End — Eng kiçik / eng katta; ← → — Oldingi / keyingi segment; 0–9 — Yozadi, tölsa keyingi segmentga ötadi; Backspace — Tozalaydi; Roʻyxatda ↑ ↓ / Home End — Faol vaqt; Enter — tanlaydi va yopadi; Siferblatda ← → / ↑ ↓ — Bir soat yoki 5 daqiqa; Enter — soatdan daqiqaga, keyin yopadi; Esc — Popoverni yopadi
- Tokenlar: --fx-bg-brand-solid, --fx-bg-brand-subtle, --fx-bg-field, --fx-bg-muted, --fx-bg-pressed, --fx-bg-subtle, --fx-border-color-error, --fx-border-color-field, --fx-border-color-focus, --fx-border-color-strong, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-md, --fx-control-h-sm, --fx-ease-standard, --fx-font-size-display-sm, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-semibold, --fx-knob-pill, --fx-motion-base, --fx-motion-fast, --fx-radius-badge, --fx-radius-circle, --fx-radius-control, --fx-radius-nav, --fx-size-control-sm, --fx-size-icon-md, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-space-8, --fx-text-brand, --fx-text-disabled, --fx-text-on-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<div class="fx-field">
  <span class="fx-label" id="tf1-l">Iş boşlanişi</span>
  <div class="fx-timefield" data-fx-timefield data-name="boshlanish" data-value="09:30" data-step="5" role="group" aria-labelledby="tf1-l"></div>
</div>
<div class="fx-field">
  <span class="fx-label" id="tf2-l">Tanaffus (soniyagaça)</span>
  <div class="fx-timefield" data-fx-timefield data-name="tanaffus" data-seconds data-size="sm" role="group" aria-labelledby="tf2-l"></div>
</div>
<!-- Siferblat va roʻyxat (4.103) -->
<div class="fx-field">
  <span class="fx-label" id="tf3-l">Uçraşuv vaqti (röyxat, 15 daqiqa)</span>
  <div class="fx-timefield" id="tf3" data-fx-timefield data-variant="list" data-name="uchrashuv" data-value="10:30" data-from="09:00" data-to="18:00" data-step="15" role="group" aria-labelledby="tf3-l"></div>
</div>
<div class="fx-field">
  <span class="fx-label" id="tf4-l">Yetkazib beriş vaqti (siferblat)</span>
  <div class="fx-timefield" id="tf4" data-fx-timefield data-variant="dial" data-name="yetkazish" data-value="14:20" data-step="5" role="group" aria-labelledby="tf4-l"></div>
</div>
```

- Qilmang: AM/PM qöymang — Özbekistonda 24 soatli.
- Qilmang: Aniq daqiqa muhim bölmasa (5 daqiqa qadam) — data-step bering, röyxatdan tanlaşga majburlamang.

## Faoliyat lentasi (`timeline`, beta, 0.22.0 dan)

Vaqt böyiça hodisalar: vertikal çiziq, belgi (nuqta, ikon yoki avatar), kim/nima, vaqt, ilova (izoh, farq). Holatlar: bajarildi, kutilmoqda (halqa aylanadi), xato (romb).

- Qaçon: Buyurtma tarixi, CRM faoliyati, relizlar xronologiyasi.
- Qaçon emas: Jarayon qadamlari (hozir qaysi qadam) → `steps`; Ustunli soliştiriş → `table`
- Variantlar: data-state=pending|error|done|live|todo|waiting (standart default); data-density=compact (standart default); data-tone=brand|warning|info (standart brand)
- Tokenlar: --fx-bg-brand-solid, --fx-bg-muted, --fx-bg-static-light, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-strong, --fx-border-width-default, --fx-border-width-focus, --fx-duration-spin, --fx-ease-standard, --fx-fg-error, --fx-fg-info, --fx-fg-success, --fx-fg-warning, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-regular, --fx-font-weight-semibold, --fx-radius-circle, --fx-radius-control, --fx-size-icon-lg, --fx-size-icon-md, --fx-size-icon-sm, --fx-size-status-dot, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-5, --fx-text-brand, --fx-text-error, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<ol class="fx-timeline">
  <li class="fx-timeline__group" role="presentation">Bugun</li>
  <li class="fx-timeline__item" data-state="live"><span class="fx-timeline__marker"></span><div class="fx-timeline__content"><p class="fx-timeline__title">Hozir: hisob-faktura tayyorlanmoqda</p><span class="fx-timeline__time">09:20</span></div></li>
  <li class="fx-timeline__item" data-state="pending"><span class="fx-timeline__marker"></span><div class="fx-timeline__content"><p class="fx-timeline__title">Tölov kutilmoqda</p><span class="fx-timeline__time">09:14</span></div></li>
  <li class="fx-timeline__item"><span class="fx-timeline__marker"><span class="fx-avatar" data-size="sm" data-color="blue" role="img" aria-label="Bobur">BO</span></span><div class="fx-timeline__content"><p class="fx-timeline__title">Bobur izoh qoldirdi</p><span class="fx-timeline__time">keça, 17:40</span><div class="fx-timeline__extra">Şartnomani yuboring.</div></div></li>
  <li class="fx-timeline__item" data-state="error"><span class="fx-timeline__marker"></span><div class="fx-timeline__content"><p class="fx-timeline__title">Xato: ariza yuborilmadi</p><span class="fx-timeline__time">15.10, 11:02</span></div></li>
</ol>
<!-- bosqichlar: bajarildi ✓ · hozir kutyapti (rangli) · kelajak (halqa) -->
<ol class="fx-timeline" style="inline-size:100%;max-inline-size:28rem">
  <li class="fx-timeline__item" data-state="done"><span class="fx-timeline__marker"></span><div class="fx-timeline__content"><p class="fx-timeline__title">Reja tuzildi</p><span class="fx-timeline__time">bugun 09:02</span></div></li>
  <li class="fx-timeline__item" data-state="done"><span class="fx-timeline__marker"></span><div class="fx-timeline__content"><p class="fx-timeline__title">2-qadam: komponent yozildi</p><span class="fx-timeline__time">bugun 10:40</span></div></li>
  <li class="fx-timeline__item" data-state="waiting" data-tone="brand"><span class="fx-timeline__marker"></span><div class="fx-timeline__content"><p class="fx-timeline__title">3-qadam: Ustoz tasdiği</p><p class="fx-timeline__text">Ustozni kutyapti · 1 soat</p></div></li>
  <li class="fx-timeline__item" data-state="todo"><span class="fx-timeline__marker"></span><div class="fx-timeline__content"><p class="fx-timeline__title">4-qadam: reliz</p></div></li>
</ol>
```

- Qilmang: Lentani jadval örnida işlatmang — ustun soliştiriş kerak bölsa table.
- Qilmang: Holatni faqat rang bilan bermang — sarlavha matni ham aytsin («Xato: …»).

## Vaqt slotlari (`timeslots`, beta, 0.28.0 dan)

Bron va uçraşuv uçun böş vaqtlar töri: har vaqt — tugmasimon radio, band vaqt — çizilgan va «band» deb yozilgan, oz qolgani — «1 joy». Kunning qismlari böyiça guruhlanadi (Ertalab · Tuşdan keyin). Kalendar bilan yonma-yon: çapda kun, öngda vaqt. JS kerak emas — native radio.

- Qaçon: Uçraşuv, konsultatsiya, xizmatga yoziliş: kun tanlangandan keyin böş vaqtni tanlaş. Öqituvçi yoki usta jadvalidagi böş oynalarni körsatiş.
- Qaçon emas: Istalgan vaqtni erkin kiritiş (masalan, eslatma vaqti) → `timefield`; Butun hafta jadvalini tahrirlaş → `schedule`
- Variantlar: data-columns=3|4|6 (standart 4); data-layout=grid|list (standart grid); data-size=sm|md (standart md)
- Klaviatura: Tab — Tanlangan (yoki birinçi) slotga kiradi; ← → ↑ ↓ — Keyingi/oldingi böş slotni tanlaydi (band slot ötkazib yuboriladi); Space — Fokusdagi slotni tanlaydi
- Tokenlar: --fx-bg-brand-solid, --fx-bg-brand-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-strong, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-md, --fx-control-h-sm, --fx-ease-standard, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-regular, --fx-font-weight-semibold, --fx-knob-pill, --fx-motion-fast, --fx-motion-instant, --fx-motion-press, --fx-radius-control, --fx-radius-surface, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-6, --fx-text-disabled, --fx-text-error, --fx-text-on-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<div style="display:flex;flex-wrap:wrap;gap:var(--fx-space-8);align-items:start">
<div class="fx-calendar" data-fx-calendar data-value="2026-10-23" data-min="2026-10-19" data-off-days="7" aria-label="Uçraşuv kuni"></div>
<fieldset class="fx-timeslots" data-columns="3" style="inline-size:min(100%,22rem)">
  <legend class="fx-timeslots__title">23-oktabr, juma</legend>
  <div class="fx-timeslots__head"><span class="fx-timeslots__meta">Toşkent vaqti (UTC+5) · 30 daqiqa</span></div>
  <div class="fx-timeslots__group" role="group" aria-labelledby="ts-am"><span class="fx-timeslots__label" id="ts-am">Ertalab</span><div class="fx-timeslots__grid"><label class="fx-timeslots__slot"><input type="radio" name="vaqt" value="09:00"><span>09:00</span></label><label class="fx-timeslots__slot"><input type="radio" name="vaqt" value="09:30" disabled><span>09:30</span><span class="fx-timeslots__note">band</span></label><label class="fx-timeslots__slot"><input type="radio" name="vaqt" value="10:00"><span>10:00</span></label><label class="fx-timeslots__slot" data-few><input type="radio" name="vaqt" value="10:30"><span>10:30</span><span class="fx-timeslots__note">1 joy</span></label><label class="fx-timeslots__slot"><input type="radio" name="vaqt" value="11:00" disabled><span>11:00</span><span class="fx-timeslots__note">band</span></label><label class="fx-timeslots__slot"><input type="radio" name="vaqt" value="11:30"><span>11:30</span></label></div></div>
  <div class="fx-timeslots__group" role="group" aria-labelledby="ts-pm"><span class="fx-timeslots__label" id="ts-pm">Tuşdan keyin</span><div class="fx-timeslots__grid"><label class="fx-timeslots__slot"><input type="radio" name="vaqt" value="14:00" checked><span>14:00</span></label><label class="fx-timeslots__slot"><input type="radio" name="vaqt" value="14:30"><span>14:30</span></label><label class="fx-timeslots__slot"><input type="radio" name="vaqt" value="15:00" disabled><span>15:00</span><span class="fx-timeslots__note">band</span></label><label class="fx-timeslots__slot"><input type="radio" name="vaqt" value="15:30"><span>15:30</span></label><label class="fx-timeslots__slot"><input type="radio" name="vaqt" value="16:00"><span>16:00</span></label><label class="fx-timeslots__slot"><input type="radio" name="vaqt" value="16:30"><span>16:30</span></label></div></div>
  <div class="fx-timeslots__foot"><span>Tanlandi: 14:00 – 14:30</span><button class="fx-btn" data-variant="primary" type="button">Bron qiliş</button></div>
</fieldset>
</div>
<fieldset class="fx-timeslots" data-layout="list" data-size="sm" style="inline-size:min(100%,16rem)">
  <legend class="fx-timeslots__title">Şanba, 24-oktabr</legend>
  <div class="fx-timeslots__grid"><label class="fx-timeslots__slot"><input type="radio" name="vaqt2" value="10:00"><span>10:00</span><span class="fx-timeslots__note">45 daq</span></label><label class="fx-timeslots__slot"><input type="radio" name="vaqt2" value="11:00" disabled><span>11:00</span><span class="fx-timeslots__note">band</span></label><label class="fx-timeslots__slot"><input type="radio" name="vaqt2" value="12:00"><span>12:00</span><span class="fx-timeslots__note">45 daq</span></label></div>
</fieldset>
<fieldset class="fx-timeslots" style="inline-size:min(100%,22rem)"><legend class="fx-timeslots__title">Yakşanba, 25-oktabr</legend><p class="fx-timeslots__empty">Bu kunda böş vaqt yöq. Keyingi böş kun — duşanba, 26-oktabr.</p></fieldset>
```

- Qilmang: Band vaqtni butunlay yaşirmang — çizilgan holda körsating, aks holda jadval «teşik» bölib körinadi.
- Qilmang: Vaqtni 12 soatlik (AM/PM) formatda yozmang — Özbekistonda 24 soatlik.
- Qilmang: Vaqt zonasini yozmasdan qoldirmang, ayniqsa onlayn uçraşuvda.

## Tooltip (`tip`, beta, 0.10.0 dan)

Ikon-tugma yoki qisqartma uçun qisqa nom: öram ustiga borilganda yoki fokusda çiqadi (JS'siz). Teskari yuza; joylaşuv: yuqorida, pastda, yon tomonda (start/end/left/right). Içida tugma yorliği (kbd) bölişi mumkin. Tooltip guruhi (4.166): .fx-tip-group[data-fx-tip] — bitta tooltip oçilgaç qöşni tugmaga ötilganda keyingisi keçikişsiz çiqadi (Radix skipDelay), guruhdan çiqilgaç ~300 ms (data-skip) dan keyin yana odatdagi keçikiş. Esc oçiq tooltipni yopadi.

- Qaçon: Ikon-tugma nomi, qisqartma izohi.
- Qaçon emas: Içida havola yoki amal → `popover`; Telefonda zarur ma'lumot → `alert`
- Variantlar: data-placement=top|bottom|start|end|left|right (standart top)
- Klaviatura: Tab — Fokusda körinadi; Esc — Oçiq tooltipni yopadi (fokus joyida qoladi)
- Tokenlar: --fx-bg-page, --fx-duration-delay-tip, --fx-ease-enter, --fx-ease-standard, --fx-font-size-xs, --fx-motion-fast, --fx-motion-shift-sm, --fx-popover-width, --fx-radius-badge, --fx-space-1, --fx-space-2, --fx-text-primary

```html
<span class="fx-tip">
  <button class="fx-btn" data-shape="icon" aria-describedby="tip1" aria-label="Nusxa oliş">⧉</button>
  <span class="fx-tip__bubble" role="tooltip" id="tip1">Nusxa oliş <kbd>Ctrl+C</kbd></span>
</span>
<span class="fx-tip" data-placement="end">
  <button class="fx-btn" data-shape="icon" aria-describedby="tip2" aria-label="Öçiriş">×</button>
  <span class="fx-tip__bubble" role="tooltip" id="tip2">Öçiriş</span>
</span>
<!-- Tooltip guruhi (4.166): bittasi ochilgach qoʻshnisi kechikishsiz -->
<div class="fx-tip-group" data-fx-tip role="toolbar" aria-label="Matn formati">
  <span class="fx-tip"><button class="fx-btn" data-variant="ghost" data-shape="icon" aria-label="Qalin" aria-describedby="tg1"><b>Q</b></button><span class="fx-tip__bubble" role="tooltip" id="tg1">Qalin <kbd>Ctrl+B</kbd></span></span>
  <span class="fx-tip"><button class="fx-btn" data-variant="ghost" data-shape="icon" aria-label="Kursiv" aria-describedby="tg2"><i>K</i></button><span class="fx-tip__bubble" role="tooltip" id="tg2">Kursiv <kbd>Ctrl+I</kbd></span></span>
  <span class="fx-tip"><button class="fx-btn" data-variant="ghost" data-shape="icon" aria-label="Havola" aria-describedby="tg3"><u>H</u></button><span class="fx-tip__bubble" role="tooltip" id="tg3">Havola <kbd>Ctrl+K</kbd></span></span>
</div>
```

- Qilmang: Muhim ma'lumotni faqat tooltipda bermang — telefonda körinmaydi.
- Qilmang: Öçiq tugmaga tooltip qöymang.
- Qilmang: Içiga havola yoki tugma qöymang — popover.

## Toast (`toast`, beta, 0.3.0 dan)

Qisqa xabar: teskari yuza, faqat sönadi. Ixtiyoriy bitta amal. Holat — data-tone success/warning/error/loading (nuqta/aylana + matndagi söz). Ikki usul: (1) popover="manual" — bitta toast, showPopover(); (2) toaster hududi + window.fxToast() — andoza bitta toast, ixtiyoriy ustma-ust yiğiş (data-stack), promise (yuklanmoqda → tayyor/xato), hoverda pauza, taymer çiziği (data-timer), siljitib yopiş (data-swipe).

- Qaçon: Amal natijasi haqida qisqa xabar. Promise natijasi: yuklanmoqda → tayyor/xato (fxToast.promise).
- Qaçon emas: Forma xatosi → `input`; Javob talab qiladigan savol → `dialog`
- Variantlar: data-tone=success|warning|error|loading; data-placement=bottom-end|top|top-end (standart bottom); data-stack=on; data-timer=on; data-swipe=on
- Klaviatura: Tab — Amal tugmasiga; fokusda taymer töxtaydi; Esc — Hududdagi toastlarni yopadi
- Tokenlar: --fx-bg-page, --fx-border-width-focus, --fx-duration-pulse, --fx-duration-spin, --fx-ease-enter, --fx-ease-exit, --fx-ease-standard, --fx-fg-error, --fx-fg-success, --fx-fg-warning, --fx-font-size-sm, --fx-font-weight-semibold, --fx-motion-base, --fx-motion-exit-base, --fx-motion-shift-md, --fx-radius-circle, --fx-radius-control, --fx-shadow-lg, --fx-size-icon-sm, --fx-size-status-dot-sm, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-6, --fx-space-8, --fx-text-primary, --fx-toast-width

```html
<div class="fx-toast" id="t1" popover="manual" role="status" data-tone="success">
  Saqlandi
  <button class="fx-toast__action" type="button">Qaytariş</button>
</div>
<button class="fx-btn" popovertarget="t1" popovertargetaction="show">Körsatiş</button>
<div class="fx-toaster" data-fx-toaster data-timer data-placement="bottom-end"></div>
<button class="fx-btn" onclick="fxToast({text:'Ariza saqlandi', tone:'success', action:{label:'Qaytarish'}})">Toast çiqariş</button>
<button class="fx-btn" onclick="fxToast.promise(new Promise(r=>setTimeout(r,1500)),{loading:'Yuborilmoqda…',success:'Yuborildi',error:'Yuborib bölmadi'})">Promise</button>
```

- Qilmang: Xatoni faqat toastda bildirmang — forma xatosi maydon yonida turadi.
- Qilmang: Andozada bir vaqtda bitta toast; ustma-ust yiğiş (data-stack) faqat tez-tez natija beradigan ilovada (CRM, tahrirlovçi) yoqiladi. Bir toastda bittadan ortiq amal bölmasin.
- Qilmang: Siljitib yopiş (data-swipe) va stack — ixtiyoriy; marketing saytda faqat sönadigan bitta toast.
- Qilmang: Amal tugmali toast kamida 8 soniya turadi — undan qisqa qilmang.

## Mundarija (`toc`, beta, 0.23.0 dan)

Uzun sahifaning yon mundarijasi (#87): sarlavhalarga havolalar, hozir körinayotgan bölim aria-current="location" bilan belgilanadi (IntersectionObserver). Havola bosilsa tekis siljiydi (reduced-motion'da bir zumda). 2 daraja (h2/h3).

- Qaçon: Hujjat, maqola, uzun sozlamalar sahifasi.
- Qaçon emas: Bir neçta sahifa orasida → `nav`; Bir sahifadagi paneldagi bölimlar → `tabs`
- Klaviatura: Tab, Enter — Bölimga siljiydi
- Tokenlar: --fx-bg-brand-solid, --fx-border-color-default, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-ease-standard, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-semibold, --fx-motion-base, --fx-motion-fast, --fx-radius-badge, --fx-size-topbar, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-6, --fx-space-8, --fx-text-brand, --fx-text-primary, --fx-text-secondary

```html
<nav class="fx-toc" aria-label="Sahifa mundarijasi" data-fx-toc>
  <p class="fx-toc__title">Şu sahifada</p>
  <ul class="fx-toc__list">
    <li><a class="fx-toc__link" href="#toc-kirish">Kiriş</a></li>
    <li><a class="fx-toc__link" href="#toc-ornatish">Örnatiş</a></li>
    <li><a class="fx-toc__link" data-depth="3" href="#toc-npm">npm orqali</a></li>
    <li><a class="fx-toc__link" href="#toc-sozlash">Sozlaş</a></li>
  </ul>
</nav>
<h2 id="toc-kirish">Kiriş</h2><p>Matn.</p>
<h2 id="toc-ornatish">Örnatiş</h2><p>Matn.</p>
<h3 id="toc-npm">npm orqali</h3><p>Matn.</p>
<h2 id="toc-sozlash">Sozlaş</h2><p>Matn.</p>
```

- Qilmang: 3 darajadan çuqur mundarija qilmang.
- Qilmang: Mundarijani qisqa (bir ekranlik) sahifaga qöymang.
- Qilmang: Faol bölimni faqat rang bilan bildirmang — çiziq va qalin şrift ham bor.

## Toggle guruhi (`togglegroup`, beta, 0.23.0 dan)

Yonma-yon ikonka yoki matn tugmalari: bittasi (single) yoki bir neçtasi (multi) bosiq — aria-pressed. Matn tekislaş, köriniş kabi tez tanlovlar. JS'siz variant: içida native radio/checkbox (segmentli radio guruhi).

- Qaçon: Köriniş yoki format variantlari: tekislaş, ölçam, matn uslubi. Bitta (single) yoki bir neçta (multi) qöşimça variantning tez tanlovi.
- Qaçon emas: Bir neçtadan bittasi, matnli, panel almaştiradi → `segment`; Haqiqiy bölimlar → `tabs`; Filtr chiplari → `chip`
- Variantlar: data-size=sm|md|lg (standart md)
- Klaviatura: ← → ↑ ↓ — Keyingi/oldingi tugma; Space, Enter — Bosiq holatni almaştiradi
- Tokenlar: --fx-bg-page, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-lg, --fx-control-h-md, --fx-control-h-sm, --fx-ease-standard, --fx-font-size-sm, --fx-font-weight-medium, --fx-knob-pill, --fx-motion-fast, --fx-motion-instant, --fx-motion-press, --fx-radius-control, --fx-size-icon-md, --fx-space-2, --fx-space-3, --fx-text-disabled, --fx-text-primary, --fx-text-secondary

```html
<div class="fx-togglegroup" role="group" aria-label="Matn tekislaş" data-fx-togglegroup data-required>
  <button type="button" class="fx-togglegroup__item" aria-pressed="true" aria-label="Çapga"><svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" aria-hidden="true"><path d="M2 4h12M2 8h8M2 12h10"/></svg></button>
  <button type="button" class="fx-togglegroup__item" aria-pressed="false" aria-label="Markazga"><svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" aria-hidden="true"><path d="M2 4h12M4 8h8M3 12h10"/></svg></button>
  <button type="button" class="fx-togglegroup__item" aria-pressed="false" aria-label="Öngga"><svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" aria-hidden="true"><path d="M2 4h12M6 8h8M4 12h10"/></svg></button>
</div>
<div class="fx-togglegroup" role="group" aria-label="Matn uslubi" data-fx-togglegroup data-mode="multi" data-size="sm">
  <button type="button" class="fx-togglegroup__item" aria-pressed="true">Qalin</button>
  <button type="button" class="fx-togglegroup__item" aria-pressed="false">Qiya</button>
  <button type="button" class="fx-togglegroup__item" aria-pressed="false">Tagiga çiziq</button>
</div>
<div class="fx-togglegroup" role="radiogroup" aria-label="Tölov davri">
  <label class="fx-togglegroup__item"><input type="radio" name="davr" value="oy" checked>Oylik</label>
  <label class="fx-togglegroup__item"><input type="radio" name="davr" value="yil">Yillik</label>
</div>
```

- Qilmang: Faqat ikonka bölsa aria-label şart — ikonkaning özi nom emas.
- Qilmang: Sahifa/bölim almaştiriş uçun toggle guruhi emas — tabs yoki segment.

## Toggletip (`toggletip`, beta, 0.22.0 dan)

ⓘ / ? tugma BOSILGANDA kiçik izoh oçiladi (hover emas): native popover + strelka, içida havola bölişi mumkin. Tooltip'dan farqi: bosiladi, telefonda işlaydi, içida havola mumkin.

- Qaçon: Maydon yoki atama yonida qisqa izoh, içida havola bilan. Disabled sababini aytiş.
- Qaçon emas: Faqat qisqa nom (ikon-tugma) → `tip`; Katta mazmun yoki forma → `popover`
- Variantlar: data-kind=help (standart info)
- Klaviatura: Enter, Space — Oçadi/yopadi; Esc — Yopadi, fokus tugmaga qaytadi
- Tokenlar: --fx-bg-muted, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-ease-standard, --fx-font-size-xs, --fx-font-weight-semibold, --fx-motion-fast, --fx-motion-press, --fx-popover-width, --fx-radius-circle, --fx-size-icon-md, --fx-size-min-target, --fx-space-3, --fx-space-4, --fx-space-8, --fx-text-brand, --fx-text-primary, --fx-text-tertiary

```html
<span class="fx-toggletip">
  <button class="fx-toggletip__btn" type="button" popovertarget="tt1" aria-label="Izoh: narx"></button>
  <div class="fx-popover fx-toggletip__content" id="tt1" popover data-arrow>
    Narx har oy yangilanadi. <a href="#">Batafsil</a>
  </div>
</span>
<span class="fx-toggletip" data-kind="help">
  <button class="fx-toggletip__btn" type="button" popovertarget="tt2" aria-label="Yordam"></button>
  <div class="fx-popover fx-toggletip__content" id="tt2" popover data-arrow>Maydon boş qolsa, standart qiymat olinadi.</div>
</span>
```

- Qilmang: Faqat hover bilan oçmang — bosiş va klaviatura şart.
- Qilmang: Uzun matn yoki forma qöymang — popover yoki dialog.
- Qilmang: Disabled sababini toggletip bilan yonida tuşuntiring («Nega?») — tugma öçiq bölsa ham toggletip fokus oladi.

## Vositalar paneli (`toolbar`, beta, 0.23.0 dan)

Bir qatordagi amallar guruhi (tahrir paneli, jadval amallari): butun panel — bitta Tab nuqtasi, içida ← → Home End bilan yuriladi. Guruhlar ajratgiç bilan, toggle tugmalar aria-pressed. Tik variant — aria-orientation="vertical" (#94). Suzuvçi (data-variant="floating", 4.158) — hudud pastida yopişqoq kapsula; tanlov paneli (data-variant="bubble" + data-for) — matn tanlanganda tanlov ustida çiqadigan formatlaş paneli, Alt+F10 bilan fokus.

- Qaçon: Bir-biriga boğliq 3+ amalni bir joyda jamlaş; tahrir, jadval yoki grafik boşqaruvi.
- Qaçon emas: 2 tagaça amal → `button`; Bitta tanlov (bir neçtadan bittasi) → `segment`
- Variantlar: data-variant=flat|floating|bubble (standart default); aria-orientation=horizontal|vertical (standart horizontal)
- Klaviatura: Tab — Panelga kiradi/çiqadi (bitta nuqta); ← → — Keyingi/oldingi tugma (tikda ↑ ↓); Home, End — Birinçi/oxirgi tugma; Alt+F10 (maydonda), Esc — Tanlov paneliga fokus; Esc — yaşiradi va maydonga qaytaradi
- Tokenlar: --fx-bg-muted, --fx-bg-surface, --fx-border-color-default, --fx-border-color-surface, --fx-border-width-default, --fx-ease-enter, --fx-motion-fast, --fx-motion-shift-sm, --fx-radius-circle, --fx-radius-surface, --fx-shadow-lg, --fx-space-1, --fx-space-2, --fx-space-4, --fx-space-8, --fx-text-primary

```html
<div class="fx-toolbar" role="toolbar" aria-label="Matn formatlaş" data-fx-toolbar>
  <div class="fx-toolbar__group">
    <button class="fx-btn" data-variant="ghost" data-size="sm" type="button" aria-pressed="true"><b>B</b><span class="fx-sr-only"> Qalin</span></button>
    <button class="fx-btn" data-variant="ghost" data-size="sm" type="button" aria-pressed="false"><i>I</i><span class="fx-sr-only"> Qiya</span></button>
    <button class="fx-btn" data-variant="ghost" data-size="sm" type="button" aria-pressed="false"><u>U</u><span class="fx-sr-only"> Tagi çizilgan</span></button>
  </div>
  <span class="fx-toolbar__sep" role="separator" aria-orientation="vertical"></span>
  <div class="fx-toolbar__group">
    <button class="fx-btn" data-variant="ghost" data-size="sm" type="button">Havola</button>
    <button class="fx-btn" data-variant="ghost" data-size="sm" type="button">Rasm</button>
  </div>
  <span class="fx-toolbar__spacer"></span>
  <button class="fx-btn" data-size="sm" type="button">Saqlaş</button>
</div>
<!-- Suzuvchi va tanlov paneli (4.158) -->
<div style="block-size: 12rem; overflow: auto; border: 1px solid var(--fx-border-color-default); border-radius: var(--fx-radius-surface); padding: var(--fx-space-4)">
  <p style="block-size: 14rem">3 ta bitim tanlandi. Pastdagi panel hudud bilan birga turadi.</p>
  <div class="fx-toolbar" data-variant="floating" role="toolbar" aria-label="Tanlanganlar bilan" data-fx-toolbar>
    <button class="fx-btn" data-variant="ghost" data-size="sm" type="button">Mas'ul tayinlaş</button>
    <button class="fx-btn" data-variant="ghost" data-size="sm" type="button">Bosqiçni özgartiriş</button>
    <span class="fx-toolbar__sep" role="separator" aria-orientation="vertical"></span>
    <button class="fx-btn" data-variant="ghost" data-size="sm" type="button">Arxivlaş</button>
  </div>
</div>
<div id="tb-izoh" class="fx-prose" contenteditable="true" role="textbox" aria-multiline="true" aria-label="Izoh" style="padding: var(--fx-space-3); border: 1px solid var(--fx-border-color-default); border-radius: var(--fx-radius-control)">Mijoz bilan uçraşuv juma kuni soat 15:00 da. Matnni belgilang — formatlaş paneli çiqadi.</div>
<div class="fx-toolbar" data-variant="bubble" data-for="tb-izoh" role="toolbar" aria-label="Matn formatlaş" data-fx-toolbar>
  <button class="fx-btn" data-variant="ghost" data-size="sm" type="button" aria-pressed="false"><b>B</b><span class="fx-sr-only"> Qalin</span></button>
  <button class="fx-btn" data-variant="ghost" data-size="sm" type="button" aria-pressed="false"><i>I</i><span class="fx-sr-only"> Qiya</span></button>
  <span class="fx-toolbar__sep" role="separator" aria-orientation="vertical"></span>
  <button class="fx-btn" data-variant="ghost" data-size="sm" type="button">Havola</button>
</div>
```

- Qilmang: Toolbar içiga 3 tadan köp maydon (input) joylamang — ← → matn kursoriga xalaqit beradi.
- Qilmang: Navigatsiya uçun işlatmang — u nav; toolbar amallar uçun.
- Qilmang: Ikonli tugmaga matn yoki aria-label bermay qoldirmang.

## Vosita çaqiruvi kartasi (`toolcall`, beta, 0.23.0 dan)

Agent çaqirgan bitta vosita: nomi (mono), vaqti, holati (şakl + söz) va oçilsa kiriş (JSON) hamda natija. Holatlar: navbatda, bajarilmoqda, ruxsat kutmoqda, bajarildi, xato.

- Qaçon: AI agent qaysi vositani qanday kiriş bilan çaqirganini körsatiş.
- Qaçon emas: Bosqiçma-bosqiç umumiy jarayon → `trace`; Kod bloki → `code`
- Variantlar: data-state=pending|running|waiting|error (standart done)
- Klaviatura: Enter, Space — Tafsilotni oçadi / yopadi
- Tokenlar: --fx-bg-brand-subtle, --fx-bg-error-subtle, --fx-bg-muted, --fx-bg-subtle, --fx-bg-success-subtle, --fx-bg-surface, --fx-bg-warning-subtle, --fx-border-color-default, --fx-border-color-error, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-duration-pulse, --fx-ease-standard, --fx-fg-error, --fx-fg-success, --fx-fg-warning, --fx-font-adjust-mono, --fx-font-family-mono, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-motion-base, --fx-radius-badge, --fx-radius-circle, --fx-radius-overlay, --fx-size-icon-md, --fx-size-status-dot, --fx-space-1, --fx-space-2, --fx-space-3, --fx-text-brand, --fx-text-error, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<div style="display:grid;gap:var(--fx-space-3)">
<details class="fx-toolcall" data-state="done" open>
  <summary><svg data-fx-icon="wrench" viewBox="0 0 24 24" aria-hidden="true"><path d="M14.7 6.3a4 4 0 0 0-5.4 5.1L3 17.7 6.3 21l6.3-6.3a4 4 0 0 0 5.1-5.4l-2.6 2.6-2.4-.6-.6-2.4z"/></svg><span class="fx-toolcall__name">crm.mijozlar.qidirish</span><time class="fx-toolcall__time">0,8 s</time><span class="fx-toolcall__status">Bajarildi</span><svg data-fx-icon="chev" class="fx-toolcall__chev" viewBox="0 0 24 24" aria-hidden="true"><path d="M9 6l6 6-6 6"/></svg></summary>
  <div class="fx-toolcall__body"><div class="fx-toolcall__section"><span class="fx-toolcall__label">Kiriş</span><pre>{ "holat": "faol", "oxirgi_faollik": "&gt; 2 yil" }</pre></div><div class="fx-toolcall__section"><span class="fx-toolcall__label">Natija</span><pre>12 ta yozuv topildi</pre></div></div>
</details>
<details class="fx-toolcall" data-state="running">
  <summary><svg data-fx-icon="wrench" viewBox="0 0 24 24" aria-hidden="true"><path d="M14.7 6.3a4 4 0 0 0-5.4 5.1L3 17.7 6.3 21l6.3-6.3a4 4 0 0 0 5.1-5.4l-2.6 2.6-2.4-.6-.6-2.4z"/></svg><span class="fx-toolcall__name">hisobot.qayta_hisoblash</span><time class="fx-toolcall__time">3 s</time><span class="fx-toolcall__status">Bajarilmoqda</span><svg data-fx-icon="chev" class="fx-toolcall__chev" viewBox="0 0 24 24" aria-hidden="true"><path d="M9 6l6 6-6 6"/></svg></summary>
  <div class="fx-toolcall__body"><div class="fx-toolcall__section"><span class="fx-toolcall__label">Kiriş</span><pre>{ "oy": "2026-10" }</pre></div></div>
</details>
<details class="fx-toolcall" data-state="waiting">
  <summary><svg data-fx-icon="wrench" viewBox="0 0 24 24" aria-hidden="true"><path d="M14.7 6.3a4 4 0 0 0-5.4 5.1L3 17.7 6.3 21l6.3-6.3a4 4 0 0 0 5.1-5.4l-2.6 2.6-2.4-.6-.6-2.4z"/></svg><span class="fx-toolcall__name">crm.yozuvlar.oʻchirish</span><time class="fx-toolcall__time"></time><span class="fx-toolcall__status">Ruxsat kutmoqda</span><svg data-fx-icon="chev" class="fx-toolcall__chev" viewBox="0 0 24 24" aria-hidden="true"><path d="M9 6l6 6-6 6"/></svg></summary>
  <div class="fx-toolcall__body"><div class="fx-toolcall__section"><span class="fx-toolcall__label">Kiriş</span><pre>{ "yozuvlar": 12 }</pre></div></div>
</details>
<details class="fx-toolcall" data-state="error">
  <summary><svg data-fx-icon="wrench" viewBox="0 0 24 24" aria-hidden="true"><path d="M14.7 6.3a4 4 0 0 0-5.4 5.1L3 17.7 6.3 21l6.3-6.3a4 4 0 0 0 5.1-5.4l-2.6 2.6-2.4-.6-.6-2.4z"/></svg><span class="fx-toolcall__name">eksport.pdf</span><time class="fx-toolcall__time">1,4 s</time><span class="fx-toolcall__status">Xato</span><svg data-fx-icon="chev" class="fx-toolcall__chev" viewBox="0 0 24 24" aria-hidden="true"><path d="M9 6l6 6-6 6"/></svg></summary>
  <div class="fx-toolcall__body"><p class="fx-toolcall__error">Fayl yozib bölmadi: disk töla.</p></div>
</details>
<details class="fx-toolcall" data-state="pending">
  <summary><svg data-fx-icon="wrench" viewBox="0 0 24 24" aria-hidden="true"><path d="M14.7 6.3a4 4 0 0 0-5.4 5.1L3 17.7 6.3 21l6.3-6.3a4 4 0 0 0 5.1-5.4l-2.6 2.6-2.4-.6-.6-2.4z"/></svg><span class="fx-toolcall__name">xabar.telegram</span><time class="fx-toolcall__time"></time><span class="fx-toolcall__status">Navbatda</span><svg data-fx-icon="chev" class="fx-toolcall__chev" viewBox="0 0 24 24" aria-hidden="true"><path d="M9 6l6 6-6 6"/></svg></summary>
  <div class="fx-toolcall__body"><div class="fx-toolcall__section"><span class="fx-toolcall__label">Kiriş</span><pre>{ "kanal": "mijozlar" }</pre></div></div>
</details>
</div>
```

- Qilmang: Holatni faqat rang bilan bermang — status yorliğidagi söz şart.
- Qilmang: Maxfiy kalit va parolni kiriş/natijada körsatmang.
- Qilmang: Uzun natijani kartaga töliq yoymang — pre içida aylanadi, ixçamlang.

## Sahifa yuklaniş çiziği (`toploader`, beta, 0.22.0 dan)

Sahifa tepasida ingiçka çiziq: navigatsiya yoki katta yuklaniş ketayotganini körsatadi. Aniqlanmagan (yurib ötadi) yoki aniq (--_value).

- Qaçon: Sahifalararo ötiş, katta yuklaniş.
- Qaçon emas: Blok içidagi yuklaniş → `loading`; Bajariliş foizi ekranda asosiy → `progress`
- Variantlar: data-state=determinate (standart indeterminate)
- Tokenlar: --fx-bg-brand-solid, --fx-border-width-focus, --fx-duration-indeterminate, --fx-duration-pulse, --fx-ease-standard, --fx-motion-base

```html
<div class="fx-toploader" role="progressbar" aria-label="Sahifa yuklanmoqda"><span class="fx-toploader__bar"></span></div>
<div class="fx-toploader" data-state="determinate" role="progressbar" aria-label="Yuklanmoqda" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="--_value: 60%; inset-block-start: 8px"><span class="fx-toploader__bar"></span></div>
```

- Qilmang: Doimiy qoldirmang — jarayon tugagaç hidden qiling.
- Qilmang: Bu çiziq yagona signal bölmasin — uzoq jarayonda matnli holat ham bering.

## Tanişuv turi (`tour`, beta, 0.24.0 dan)

Yangi foydalanuvçiga interfeysni qadam-baqadam körsatiş: sahifa xiralaşadi, nişon element yoruğ “teşik”da qoladi, yonida qadam kartasi (oldingi, keyingi, ötkazib yuboriş, nuqtalar). Esc yopadi, ← → qadam almaştiradi. Qadamlar `.fx-tour__steps` röyxatida, nişon — data-target selektor. Puls nuqta — beacon (4.161): yangi funksiya yonida pulslovçi halqa (.fx-tour__beacon); bosilsa tur (data-tour-step — qaysi qadamdan) boşlanadi va nuqta «körildi» böladi. Harakat kamaytirilsa — qözğalmas halqa.

- Qaçon: Yangi funksiya yoki birinçi kirişdagi qisqa tanişuv.
- Qaçon emas: Bitta elementga izoh → `toggletip`; Muhim tasdiq yoki forma → `dialog`
- Variantlar: data-placement=inline|corner (standart inline)
- Klaviatura: Esc — Turni yopadi; ← → — Oldingi / keyingi qadam; Tab — Karta tugmalari orasida
- Tokenlar: --fx-bg-brand-solid, --fx-bg-overlay, --fx-bg-surface, --fx-border-color-focus, --fx-border-color-strong, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-sm, --fx-duration-pulse, --fx-ease-exit, --fx-ease-standard, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-semibold, --fx-knob-motion-loop, --fx-motion-base, --fx-motion-fast, --fx-popover-width, --fx-radius-circle, --fx-radius-control, --fx-radius-overlay, --fx-shadow-lg, --fx-size-status-dot, --fx-space-1, --fx-space-2, --fx-space-4, --fx-space-5, --fx-space-8, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary, --fx-tour-cx, --fx-tour-cy, --fx-tour-h, --fx-tour-w, --fx-tour-x, --fx-tour-y, --fx-z-raised

```html
<button class="fx-btn" data-variant="primary" id="tur-nishon-1">Yangi mijoz</button>
<button class="fx-btn" data-variant="outline" id="tur-nishon-2">Filtr</button>
<button class="fx-btn" data-variant="ghost" data-fx-tour-start="tur1">Turni boşlaş</button>
<div class="fx-tour" id="tur1" data-fx-tour hidden aria-label="Mijozlar sahifasi bilan tanişuv">
  <ol class="fx-tour__steps">
    <li data-target="#tur-nishon-1"><h3>Yangi mijoz</h3><p>Şu tugma bilan mijozni qölda qöşasiz.</p></li>
    <li data-target="#tur-nishon-2"><h3>Filtr</h3><p>Röyxatni holat va menejer böyiça toraytiring.</p></li>
    <li><h3>Tayyor</h3><p>Boşqa maslahatlar kerak bölsa, yordam markazini oçing.</p></li>
  </ol>
</div>
<!-- Puls nuqta (4.161): yangi funksiya yonida; bosilsa tur 2-qadamdan boshlanadi -->
<span style="position: relative; display: inline-block; margin-block-start: var(--fx-space-6)">
  <button class="fx-btn" data-variant="outline" type="button">Hisobotlar</button>
  <button class="fx-tour__beacon" type="button" data-placement="corner" data-fx-tour-start="tur1" data-tour-step="2" aria-label="Yangi: filtr — tanişuvni boşlaş"></button>
</span>
```

- Qilmang: Turni özi oçilib qöymang — foydalanuvçi “Boşlaş” demagunça emas (birinçi kirişda ham taklif qiling).
- Qilmang: 5–7 qadamdan oşirmang; har qadam bitta fikr.
- Qilmang: Ötkazib yuborişni yaşirmang — majburiy tur foydalanuvçini bezdiradi.
- Qilmang: Bir sahifada ikki-uçtadan köp puls nuqta qöymang — hammasi diqqat talab qilsa, heç biri körinmaydi.

## Agent izi (`trace`, experimental, 0.16.0 dan)

AI agent bajargan qadamlar: holat belgisi (bajarildi — doira, işlayapti — pulsatsiyali halqa, kutyapti — halqa, xato — romb), nom, vaqt, oçiladigan tafsilot. Kengaytma: içma-iç .fx-trace, .fx-trace__io (kiriş/çiqiş), data-state=skipped, yiğilgan guruh .fx-trace-group.

- Qaçon: AI agent yoki avtomatik jarayon qadamlarini körsatiş.
- Qaçon emas: Foydalanuvçi töldiradigan bosqiçlar → `steps`
- Variantlar: data-state=done|running|waiting|error (standart done)
- Klaviatura: Enter, Space — Tafsilotni oçadi
- Tokenlar: --fx-bg-muted, --fx-border-color-default, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-sm, --fx-duration-pulse, --fx-ease-standard, --fx-fg-error, --fx-fg-success, --fx-font-adjust-mono, --fx-font-family-mono, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-semibold, --fx-motion-base, --fx-radius-badge, --fx-radius-circle, --fx-size-icon-md, --fx-size-icon-sm, --fx-size-status-dot, --fx-size-status-dot-sm, --fx-space-1, --fx-space-2, --fx-space-3, --fx-text-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<ol class="fx-trace" aria-label="Mister Fox qadamlari">
  <li class="fx-trace__step" data-state="done"><span class="fx-trace__title">PDP inventarizatsiyasi</span><time class="fx-trace__time">8 daq</time></li>
  <li class="fx-trace__step" data-state="done"><span class="fx-trace__title">0.15.0 build va sinovlar</span><time class="fx-trace__time">2 daq</time>
    <details class="fx-trace__detail"><summary>Tafsilot</summary><pre>build: 43 komponent\ncheck: toza</pre></details></li>
  <li class="fx-trace__step" data-state="running"><span class="fx-trace__title">Sayt yönalişlari</span><time class="fx-trace__time">hozir</time></li>
  <li class="fx-trace__step" data-state="waiting"><span class="fx-trace__title">Ustoz tanlovi</span></li>
</ol>
<details class="fx-trace-group"><summary class="fx-trace-group__summary">3 qadam · 12 s</summary><ol class="fx-trace"><li class="fx-trace__step"><span class="fx-trace__title">Qidiriş</span><span class="fx-trace__time">4 s</span></li></ol></details>
```

- Qilmang: Holatni faqat rang bilan bermang — şakl va matn bor.

## Tracker (uptime) (`tracker`, beta, 0.28.0 dan)

Kunlar böyiça holat çiziqçalari (4.129): har kun — bitta tor ustun; işladi, qisman uziliş, töxtadi va ma'lumot yöq — rang bilan birga şakl (yaxlit, kesik, qisqa-çiziqli, xira) bilan farqlanadi. Hover va fokusda tafsilot, tepada umumiy foiz. Server, integratsiya, tölov şlyuzi holati uçun.

- Qaçon: Xizmat yoki integratsiyaning kunlik holatini qisqa körsatiş (uptime, sinxronizatsiya, tölov şlyuzi).
- Qaçon emas: Miqdorlar özgarişi vaqt böyiça → `chart`; Kunlar böyiça ziçlik (yil kalendari) → `heatmap`
- Variantlar: data-status=ok|warn|down|none (standart ok); data-size=sm (standart md)
- Klaviatura: Tab — Kunlar qatoriga kiradi (oxirgi kunga); ← →, Home, End — Kunlar böylab yuradi, maslahat çiqadi; Esc — Maslahatni yopadi
- Tokenlar: --fx-bg-surface, --fx-border-color-focus, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-sm, --fx-ease-standard, --fx-fg-error, --fx-fg-success, --fx-fg-warning, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-motion-fast, --fx-popover-width, --fx-radius-badge, --fx-radius-control, --fx-shadow-md, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-6, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary, --fx-viz-track

```html
<div class="fx-tracker" data-fx-tracker>
  <div class="fx-tracker__head"><span class="fx-tracker__title" id="trk1">Tölov şlyuzi</span><span class="fx-tracker__summary">99,6 % işlagan · 30 kun</span></div>
  <ol class="fx-tracker__bars" aria-labelledby="trk1">
    <li class="fx-tracker__bar" data-status="ok" aria-label="19-sen: işladi, 100 %"></li>
    <li class="fx-tracker__bar" data-status="ok" aria-label="20-sen: işladi, 100 %"></li>
    <li class="fx-tracker__bar" data-status="ok" aria-label="21-sen: işladi, 100 %"></li>
    <li class="fx-tracker__bar" data-status="ok" aria-label="22-sen: işladi, 100 %"></li>
    <li class="fx-tracker__bar" data-status="ok" aria-label="23-sen: işladi, 100 %"></li>
    <li class="fx-tracker__bar" data-status="ok" aria-label="24-sen: işladi, 100 %"></li>
    <li class="fx-tracker__bar" data-status="ok" aria-label="25-sen: işladi, 100 %"></li>
    <li class="fx-tracker__bar" data-status="warn" aria-label="26-sen: qisman uziliş, 98,6 %"></li>
    <li class="fx-tracker__bar" data-status="ok" aria-label="27-sen: işladi, 100 %"></li>
    <li class="fx-tracker__bar" data-status="ok" aria-label="28-sen: işladi, 100 %"></li>
    <li class="fx-tracker__bar" data-status="ok" aria-label="29-sen: işladi, 100 %"></li>
    <li class="fx-tracker__bar" data-status="ok" aria-label="30-sen: işladi, 100 %"></li>
    <li class="fx-tracker__bar" data-status="ok" aria-label="1-okt: işladi, 100 %"></li>
    <li class="fx-tracker__bar" data-status="ok" aria-label="2-okt: işladi, 100 %"></li>
    <li class="fx-tracker__bar" data-status="ok" aria-label="3-okt: işladi, 100 %"></li>
    <li class="fx-tracker__bar" data-status="down" aria-label="4-okt: töxtadi, 91,2 %"></li>
    <li class="fx-tracker__bar" data-status="warn" aria-label="5-okt: qisman uziliş, 98,6 %"></li>
    <li class="fx-tracker__bar" data-status="ok" aria-label="6-okt: işladi, 100 %"></li>
    <li class="fx-tracker__bar" data-status="ok" aria-label="7-okt: işladi, 100 %"></li>
    <li class="fx-tracker__bar" data-status="ok" aria-label="8-okt: işladi, 100 %"></li>
    <li class="fx-tracker__bar" data-status="ok" aria-label="9-okt: işladi, 100 %"></li>
    <li class="fx-tracker__bar" data-status="ok" aria-label="10-okt: işladi, 100 %"></li>
    <li class="fx-tracker__bar" data-status="warn" aria-label="11-okt: qisman uziliş, 98,6 %"></li>
    <li class="fx-tracker__bar" data-status="ok" aria-label="12-okt: işladi, 100 %"></li>
    <li class="fx-tracker__bar" data-status="ok" aria-label="13-okt: işladi, 100 %"></li>
    <li class="fx-tracker__bar" data-status="ok" aria-label="14-okt: işladi, 100 %"></li>
    <li class="fx-tracker__bar" data-status="ok" aria-label="15-okt: işladi, 100 %"></li>
    <li class="fx-tracker__bar" data-status="ok" aria-label="16-okt: işladi, 100 %"></li>
    <li class="fx-tracker__bar" data-status="ok" aria-label="17-okt: işladi, 100 %"></li>
    <li class="fx-tracker__bar" data-status="none" aria-label="18-okt: bugun, ma'lumot yiğilmoqda"></li>
  </ol>
  <div class="fx-tracker__axis" aria-hidden="true"><span>30 kun oldin</span><span>Bugun</span></div>
  <ul class="fx-tracker__legend"><li><span class="fx-tracker__bar" data-status="ok"></span>Işladi</li><li><span class="fx-tracker__bar" data-status="warn"></span>Qisman uziliş</li><li><span class="fx-tracker__bar" data-status="down"></span>Töxtadi</li><li><span class="fx-tracker__bar" data-status="none"></span>Ma'lumot yöq</li></ul>
</div>
```

- Qilmang: Holatni faqat rang bilan bermang — har ustunda aria-label matni va pastda kalit (legend) bölsin.
- Qilmang: 90 kundan köp ustun bermang — ustun juda ingiçkalaşadi; uzun davr uçun chart (bar).
- Qilmang: Tepada umumiy foizni (summary) tuşirib qoldirmang — asosiy javob şu.

## Ötkazgiç (`transfer`, beta, 0.24.0 dan)

Ikki röyxat: “Mavjud” va “Tanlangan”. Bandlarni belgilab, örtadagi tugma bilan boşqa tomonga ötkazasiz; har panelda hammasini belgilaş, qidiruv va sanagiç. Katta röyxatdan köp band tanlaş (ruxsatlar, ustunlar, a'zolar) uçun. Hodisa `fx-transfer-change`.

- Qaçon: Katta röyxatdan köp band tanlaş va tanlanganlarni körib turiş (ruxsatlar, ustunlar, a'zolar).
- Qaçon emas: Oz sonli variant → `check`; Qidiruvli köp tanlov (chip) → `multiselect`
- Klaviatura: Tab, Space — Bandni belgilaydi; Enter (tugmada) — Belgilanganlarni ötkazadi
- Tokenlar: --fx-bg-brand-subtle, --fx-bg-muted, --fx-bg-pressed, --fx-bg-surface, --fx-border-color-surface, --fx-border-width-default, --fx-control-h-lg, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-font-weight-regular, --fx-radius-nav, --fx-radius-surface, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-6, --fx-text-tertiary

```html
<div class="fx-transfer" data-fx-transfer role="group" aria-label="Hisobot ustunlari">
  <section class="fx-transfer__pane" data-pane="source" data-empty="Hammasi tanlangan">
    <div class="fx-transfer__head"><label class="fx-check"><input type="checkbox" data-all><span class="fx-check__box"></span>Mavjud</label><span class="fx-transfer__count" data-count aria-live="polite"></span></div>
    <input class="fx-input" data-size="sm" type="search" placeholder="Qidiriş" aria-label="Mavjud ustunlardan qidiriş">
    <ul class="fx-transfer__list"><li class="fx-transfer__item"><label class="fx-check"><input type="checkbox" value="ism"><span class="fx-check__box"></span>Ism</label></li><li class="fx-transfer__item"><label class="fx-check"><input type="checkbox" value="tel"><span class="fx-check__box"></span>Telefon</label></li><li class="fx-transfer__item"><label class="fx-check"><input type="checkbox" value="manba"><span class="fx-check__box"></span>Manba</label></li><li class="fx-transfer__item"><label class="fx-check"><input type="checkbox" value="menejer"><span class="fx-check__box"></span>Menejer</label></li><li class="fx-transfer__item"><label class="fx-check"><input type="checkbox" value="summa"><span class="fx-check__box"></span>Summa</label></li></ul>
  </section>
  <div class="fx-transfer__actions">
    <button type="button" class="fx-btn" data-variant="outline" data-size="sm" data-shape="icon" data-move="right" aria-label="Tanlanganlarni öngga ötkaziş" disabled>→</button>
    <button type="button" class="fx-btn" data-variant="outline" data-size="sm" data-shape="icon" data-move="left" aria-label="Tanlanganlarni çapga qaytariş" disabled>←</button>
  </div>
  <section class="fx-transfer__pane" data-pane="target" data-empty="Hali heç narsa tanlanmagan">
    <div class="fx-transfer__head"><label class="fx-check"><input type="checkbox" data-all><span class="fx-check__box"></span>Tanlangan</label><span class="fx-transfer__count" data-count aria-live="polite"></span></div>
    <input class="fx-input" data-size="sm" type="search" placeholder="Qidiriş" aria-label="Tanlanganlardan qidiriş">
    <ul class="fx-transfer__list"><li class="fx-transfer__item"><label class="fx-check"><input type="checkbox" value="sana"><span class="fx-check__box"></span>Sana</label></li></ul>
  </section>
</div>
```

- Qilmang: 10 tadan kam band uçun işlatmang — checkbox guruhi yetadi.
- Qilmang: Tartib muhim bölsa (ustun tartibi) — alohida tartiblaş qöşing, ötkazgiç tartibni saqlamaydi.
- Qilmang: Ötkaziş tugmalarini faqat ikon qilib aria-label'siz qoldirmang.

## Daraxt (`tree`, beta, 0.16.0 dan)

Içma-iç röyxat (papkalar, bilim bazasi, bölimlar): papka — <details>, chevron yopiqda −90°; çapda yöl çiziği; joriy band brend tusida. Kengaytma: barg ikoni a[data-kind=file|image|code|folder], aria-busy (lazy yuklaniş spinneri), içida .fx-check, details oçiliş animatsiyasi. Sudrab köçiriş va qayta nomlaş (4.136, foxui.js → tree): data-dnd — bandni papkaga (içiga) yoki faylga (undan keyin) sudraş; klaviatura muqobili — Ctrl+X bilan oliş, boşqa papkada Ctrl+V, Esc — bekor; holat yaşirin jonli hududda söz bilan. data-rename — F2 yoki ikki marta bosiş: joyida maydon, Enter saqlaydi, Esc bekor qiladi, böş nom qabul qilinmaydi. Hodisalar fx-tree-move va fx-tree-rename (bekor qilinadi).

- Qaçon: Papkalar, bilim bazasi, içma-iç bölimlar.
- Qaçon emas: Bir darajali menyu → `nav`
- Variantlar: data-kind=file|image|code|folder; data-dnd=; data-rename=
- Klaviatura: Enter, Space — Papkani oçadi / yopadi; Tab — Keyingi band; Ctrl+X — Bandni köçiriş uçun oliş (data-dnd); Ctrl+V — Olingan bandni fokusdagi papkaga (yoki fayldan keyin) köçiriş; Esc — Köçirişni yoki nomlaşni bekor qiliş; F2 — Qayta nomlaş (data-rename); Enter — saqlaş
- Tokenlar: --fx-bg-brand-solid, --fx-bg-brand-subtle, --fx-bg-field, --fx-bg-muted, --fx-bg-pressed, --fx-border-color-default, --fx-border-color-error, --fx-border-color-focus, --fx-border-color-strong, --fx-border-width-default, --fx-border-width-focus, --fx-duration-pulse, --fx-duration-spin, --fx-ease-standard, --fx-font-size-sm, --fx-motion-base, --fx-motion-fast, --fx-nav-subitem-height, --fx-radius-badge, --fx-radius-circle, --fx-radius-nav, --fx-size-icon-sm, --fx-space-1, --fx-space-2, --fx-text-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<ul class="fx-tree" aria-label="Bilimlar">
  <li><details open><summary class="fx-tree__item">Loyihalar</summary>
    <ul>
      <li><a class="fx-tree__item" href="#" aria-current="page">FoxUI action plan</a></li>
      <li><details><summary class="fx-tree__item">Server</summary><ul><li><a class="fx-tree__item" href="#">Caddy</a></li></ul></details></li>
    </ul>
  </details></li>
  <li><a class="fx-tree__item" href="#">Qarorlar</a></li>
</ul>
<ul class="fx-tree"><li><details open><summary class="fx-tree__item">src</summary><ul><li><a class="fx-tree__item" href="#" data-kind="code">main.js</a></li><li><a class="fx-tree__item" href="#" data-kind="image">logo.png</a></li></ul></details></li></ul>
<!-- Sudrab koʻchirish va qayta nomlash (4.136) -->
<ul class="fx-tree" id="tr-dnd" data-fx-tree data-dnd data-rename aria-label="Loyiha fayllari — sudrang, F2 — nomlaş">
  <li><details open><summary class="fx-tree__item">Şartnomalar</summary><ul>
    <li><a class="fx-tree__item" href="#" data-kind="file">Samarqand Savdo.pdf</a></li>
    <li><a class="fx-tree__item" href="#" data-kind="file">Tong Maktabi.pdf</a></li>
  </ul></details></li>
  <li><details open><summary class="fx-tree__item">Hisobotlar</summary><ul>
    <li><a class="fx-tree__item" href="#" data-kind="file">3-chorak.xlsx</a></li>
  </ul></details></li>
  <li><details><summary class="fx-tree__item">Arxiv</summary><ul></ul></details></li>
  <li><a class="fx-tree__item" href="#" data-kind="image">logo.png</a></li>
</ul>
```

- Qilmang: 5 darajadan çuqur daraxt qilmang — qidiruv qöşing.

## Daraxt jadvali (`treegrid`, beta, 0.24.0 dan)

Içma-iç qatorli jadval (APG treegrid): loyiha → bosqiç → vazifa, smeta, fayllar tuzilmasi. Ota qator aria-expanded bilan oçiladi/yopiladi, daraja aria-level bilan çekinadi, ustunlar (holat, mas'ul, summa) hamma darajada tekislanadi. Birinçi katakda → oçadi, ← yopadi (yoki otaga çiqadi); ↑↓ faqat körinadigan qatorlar böylab; belgi bosilsa yoki Enter almaştiradi. Qator va katak uslubi Ma'lumot töridan (.fx-datagrid) olinadi — ikkala sinf birga yoziladi. Xulq foxui.js'da (data-fx-treegrid).

- Qaçon: Ma'lumot iyerarxik va har darajada bir xil ustunlar kerak (loyiha → bosqiç → vazifa, smeta, hisoblar rejasi).
- Qaçon emas: Ustunsiz papkalar daraxti → `tree`; Tekis, tahrirlanadigan jadval → `datagrid`; Oddiy tekis jadval → `table`
- Klaviatura: → — Yopiq ota qatorni oçadi; oçiq/bargda keyingi katakka ötadi; ← — Oçiq ota qatorni yopadi; aks holda ota qatorga çiqadi yoki oldingi katakka ötadi; ↑ ↓ — Körinadigan qatorlar böylab; Home / End — Qatorning birinçi / oxirgi katagi; Ctrl+Home / Ctrl+End — Birinçi / oxirgi körinadigan qator; PageUp / PageDown — 10 qator; Enter, Boʻsh joy — Birinçi katakda ota qatorni almaştiradi
- Tokenlar: --fx-bg-muted, --fx-bg-pressed, --fx-ease-standard, --fx-font-size-xs, --fx-font-weight-semibold, --fx-motion-fast, --fx-radius-badge, --fx-size-icon-md, --fx-size-icon-sm, --fx-space-1, --fx-space-3, --fx-space-5, --fx-text-primary, --fx-text-tertiary

```html
<div class="fx-datagrid fx-treegrid" role="treegrid" aria-label="Loyihalar va bosqiçlar" data-fx-treegrid style="--_cols: 320px 140px 150px 160px">
  <div class="fx-datagrid__head" role="rowgroup">
    <div role="row" class="fx-datagrid__row">
      <div role="columnheader" class="fx-datagrid__cell">Nomi</div>
      <div role="columnheader" class="fx-datagrid__cell">Mas'ul</div>
      <div role="columnheader" class="fx-datagrid__cell">Holat</div>
      <div role="columnheader" class="fx-datagrid__cell" data-type="num">Byudjet, söm</div>
    </div>
  </div>
  <div class="fx-datagrid__body" role="rowgroup">
    <div role="row" class="fx-datagrid__row" aria-level="1" aria-expanded="true">
      <div role="rowheader" class="fx-datagrid__cell fx-treegrid__name"><span class="fx-treegrid__toggle" aria-hidden="true"></span><span class="fx-treegrid__label">Boş ofis rekonstruksiyasi</span></div>
      <div role="gridcell" class="fx-datagrid__cell">Jasur A.</div>
      <div role="gridcell" class="fx-datagrid__cell"><span class="fx-status" data-tone="info">Jarayonda</span></div>
      <div role="gridcell" class="fx-datagrid__cell" data-type="num">480 000 000</div>
    </div>
    <div role="row" class="fx-datagrid__row" aria-level="2" aria-expanded="false">
      <div role="rowheader" class="fx-datagrid__cell fx-treegrid__name"><span class="fx-treegrid__toggle" aria-hidden="true"></span><span class="fx-treegrid__label">Loyihalaş</span></div>
      <div role="gridcell" class="fx-datagrid__cell">Malika R.</div>
      <div role="gridcell" class="fx-datagrid__cell"><span class="fx-status" data-tone="success">Tugadi</span></div>
      <div role="gridcell" class="fx-datagrid__cell" data-type="num">60 000 000</div>
    </div>
    <div role="row" class="fx-datagrid__row" aria-level="3">
      <div role="rowheader" class="fx-datagrid__cell fx-treegrid__name"><span class="fx-treegrid__toggle" aria-hidden="true"></span><span class="fx-treegrid__label">Me'moriy çizmalar</span></div>
      <div role="gridcell" class="fx-datagrid__cell">Malika R.</div>
      <div role="gridcell" class="fx-datagrid__cell"><span class="fx-status" data-tone="success">Tugadi</span></div>
      <div role="gridcell" class="fx-datagrid__cell" data-type="num">35 000 000</div>
    </div>
    <div role="row" class="fx-datagrid__row" aria-level="3">
      <div role="rowheader" class="fx-datagrid__cell fx-treegrid__name"><span class="fx-treegrid__toggle" aria-hidden="true"></span><span class="fx-treegrid__label">Muhandislik tarmoqlari</span></div>
      <div role="gridcell" class="fx-datagrid__cell">Sardor T.</div>
      <div role="gridcell" class="fx-datagrid__cell"><span class="fx-status" data-tone="success">Tugadi</span></div>
      <div role="gridcell" class="fx-datagrid__cell" data-type="num">25 000 000</div>
    </div>
    <div role="row" class="fx-datagrid__row" aria-level="2" aria-expanded="true">
      <div role="rowheader" class="fx-datagrid__cell fx-treegrid__name"><span class="fx-treegrid__toggle" aria-hidden="true"></span><span class="fx-treegrid__label">Quriliş-montaj</span></div>
      <div role="gridcell" class="fx-datagrid__cell">Jasur A.</div>
      <div role="gridcell" class="fx-datagrid__cell"><span class="fx-status" data-tone="info">Jarayonda</span></div>
      <div role="gridcell" class="fx-datagrid__cell" data-type="num">340 000 000</div>
    </div>
    <div role="row" class="fx-datagrid__row" aria-level="3">
      <div role="rowheader" class="fx-datagrid__cell fx-treegrid__name"><span class="fx-treegrid__toggle" aria-hidden="true"></span><span class="fx-treegrid__label">Devor va pardozlaş</span></div>
      <div role="gridcell" class="fx-datagrid__cell">Bekzod N.</div>
      <div role="gridcell" class="fx-datagrid__cell"><span class="fx-status" data-tone="info">Jarayonda</span></div>
      <div role="gridcell" class="fx-datagrid__cell" data-type="num">190 000 000</div>
    </div>
    <div role="row" class="fx-datagrid__row" aria-level="3">
      <div role="rowheader" class="fx-datagrid__cell fx-treegrid__name"><span class="fx-treegrid__toggle" aria-hidden="true"></span><span class="fx-treegrid__label">Elektr va tarmoq</span></div>
      <div role="gridcell" class="fx-datagrid__cell">Sardor T.</div>
      <div role="gridcell" class="fx-datagrid__cell"><span class="fx-status" data-tone="warning">Kutilmoqda</span></div>
      <div role="gridcell" class="fx-datagrid__cell" data-type="num">150 000 000</div>
    </div>
    <div role="row" class="fx-datagrid__row" aria-level="2" aria-expanded="false">
      <div role="rowheader" class="fx-datagrid__cell fx-treegrid__name"><span class="fx-treegrid__toggle" aria-hidden="true"></span><span class="fx-treegrid__label">Jihozlaş</span></div>
      <div role="gridcell" class="fx-datagrid__cell">Nigora Q.</div>
      <div role="gridcell" class="fx-datagrid__cell"><span class="fx-status" data-tone="warning">Kutilmoqda</span></div>
      <div role="gridcell" class="fx-datagrid__cell" data-type="num">80 000 000</div>
    </div>
    <div role="row" class="fx-datagrid__row" aria-level="3">
      <div role="rowheader" class="fx-datagrid__cell fx-treegrid__name"><span class="fx-treegrid__toggle" aria-hidden="true"></span><span class="fx-treegrid__label">Mebel yetkaziş</span></div>
      <div role="gridcell" class="fx-datagrid__cell">Nigora Q.</div>
      <div role="gridcell" class="fx-datagrid__cell"><span class="fx-status" data-tone="warning">Kutilmoqda</span></div>
      <div role="gridcell" class="fx-datagrid__cell" data-type="num">50 000 000</div>
    </div>
    <div role="row" class="fx-datagrid__row" aria-level="3">
      <div role="rowheader" class="fx-datagrid__cell fx-treegrid__name"><span class="fx-treegrid__toggle" aria-hidden="true"></span><span class="fx-treegrid__label">Texnika örnatiş</span></div>
      <div role="gridcell" class="fx-datagrid__cell">Nigora Q.</div>
      <div role="gridcell" class="fx-datagrid__cell"><span class="fx-status" data-tone="neutral">Reja</span></div>
      <div role="gridcell" class="fx-datagrid__cell" data-type="num">30 000 000</div>
    </div>
    <div role="row" class="fx-datagrid__row" aria-level="1" aria-expanded="false">
      <div role="rowheader" class="fx-datagrid__cell fx-treegrid__name"><span class="fx-treegrid__toggle" aria-hidden="true"></span><span class="fx-treegrid__label">Veb-sayt yangilaş</span></div>
      <div role="gridcell" class="fx-datagrid__cell">Dilfuza S.</div>
      <div role="gridcell" class="fx-datagrid__cell"><span class="fx-status" data-tone="neutral">Reja</span></div>
      <div role="gridcell" class="fx-datagrid__cell" data-type="num">120 000 000</div>
    </div>
    <div role="row" class="fx-datagrid__row" aria-level="2">
      <div role="rowheader" class="fx-datagrid__cell fx-treegrid__name"><span class="fx-treegrid__toggle" aria-hidden="true"></span><span class="fx-treegrid__label">Dizayn tizimi</span></div>
      <div role="gridcell" class="fx-datagrid__cell">Dilfuza S.</div>
      <div role="gridcell" class="fx-datagrid__cell"><span class="fx-status" data-tone="neutral">Reja</span></div>
      <div role="gridcell" class="fx-datagrid__cell" data-type="num">70 000 000</div>
    </div>
    <div role="row" class="fx-datagrid__row" aria-level="2">
      <div role="rowheader" class="fx-datagrid__cell fx-treegrid__name"><span class="fx-treegrid__toggle" aria-hidden="true"></span><span class="fx-treegrid__label">Kontent köçiriş</span></div>
      <div role="gridcell" class="fx-datagrid__cell">Alişer M.</div>
      <div role="gridcell" class="fx-datagrid__cell"><span class="fx-status" data-tone="neutral">Reja</span></div>
      <div role="gridcell" class="fx-datagrid__cell" data-type="num">50 000 000</div>
    </div>
  </div>
</div>
```

- Qilmang: 5 darajadan çuqur iyerarxiya qilmang — çuqur bölsa qidiruv va yöl (breadcrumb) qöşing.
- Qilmang: Oçiş/yopişni faqat belgi bilan qoldirmang — klaviatura (→ ←, Enter) ham işlaşi şart.
- Qilmang: Ustunsiz oddiy daraxt uçun daraxt jadvalidan foydalanmang — daraxt (tree) yengilroq.
- Qilmang: Yopilgan ota ostidagi qatorlarni display bilan emas, hidden bilan yaşiring — aria-rowindex saqlansin.

## Daraxtli tanlov (`treeselect`, beta, 0.24.0 dan)

Çuqur ierarxiyadan bitta qiymat tanlaş: combobox maydoni + oçiladigan daraxt. Yozilsa daraxt filtrlanadi (mos tugunlar ota-onalari bilan oçiladi), ← → tugunni yopadi/oçadi. Fokus doim maydonda (aria-activedescendant). `data-leaf-only` — faqat barglar tanlanadi.

- Qaçon: Çuqur ierarxiya: bölimlar, toifalar, fayl papkalari; qidirib topiş ham kerak.
- Qaçon emas: 2–3 darajali oddiy yöl → `cascader`; Tekis röyxat → `combobox`
- Klaviatura: ↓ ↑ — Körinadigan tugunlar orasida; → — Papkani oçadi / içkariga; ← — Papkani yopadi / otaga; Enter — Tanlaydi; Esc — Yopadi; Home, End — Birinçi / oxirgi
- Tokenlar: --fx-bg-muted, --fx-bg-pressed, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-sm, --fx-ease-standard, --fx-font-size-sm, --fx-font-weight-medium, --fx-motion-fast, --fx-popover-width, --fx-radius-nav, --fx-radius-overlay, --fx-shadow-lg, --fx-size-icon-md, --fx-size-icon-sm, --fx-space-1, --fx-space-3, --fx-space-4, --fx-space-6, --fx-text-brand, --fx-text-primary, --fx-text-tertiary

```html
<div class="fx-treeselect" data-fx-treeselect>
  <input class="fx-input" role="combobox" aria-label="Bölim" placeholder="Bölimni tanlang" autocomplete="off" aria-controls="ts-1">
  <input type="hidden" name="bolim">
  <div class="fx-treeselect__popup">
    <ul class="fx-treeselect__tree" role="tree" id="ts-1" aria-label="Bölimlar">
      <li role="treeitem" data-value="sotuv" aria-expanded="true"><div class="fx-treeselect__row"><span class="fx-treeselect__twisty"></span>Sotuv</div><ul role="group"><li role="treeitem" data-value="sotuv-b2b"><div class="fx-treeselect__row"><span class="fx-treeselect__twisty"></span>Korporativ</div></li><li role="treeitem" data-value="sotuv-b2c"><div class="fx-treeselect__row"><span class="fx-treeselect__twisty"></span>Çakana</div></li></ul></li>
      <li role="treeitem" data-value="it" aria-expanded="false"><div class="fx-treeselect__row"><span class="fx-treeselect__twisty"></span>IT</div><ul role="group"><li role="treeitem" data-value="it-dev"><div class="fx-treeselect__row"><span class="fx-treeselect__twisty"></span>Dasturlaş</div></li><li role="treeitem" data-value="it-ops"><div class="fx-treeselect__row"><span class="fx-treeselect__twisty"></span>Server va xavfsizlik</div></li></ul></li>
      <li role="treeitem" data-value="buxg"><div class="fx-treeselect__row"><span class="fx-treeselect__twisty"></span>Buxgalteriya</div></li>
    </ul>
  </div>
</div>
```

- Qilmang: Bir darajali röyxat uçun işlatmang — `select` yoki `combobox`.
- Qilmang: Barg bölmagan tugun tanlanmasa kerak bölsa, `data-leaf-only` qöying — foydalanuvçi “nega bosilmadi” deb öylamasin (papka oçiladi).
- Qilmang: Köp tanlov kerak bölsa — `multiselect` yoki checkbox daraxti.

## Qisqartiriş (`truncate`, beta, 0.22.0 dan)

Matn 1–4 qatordan keyin «…» bilan kesiladi. Kesilgan bölsa «Köproq» tugmasi çiqadi (aria-expanded); bir qatorli holatda töliq matn title'da. Fayl yöli uçun örtadan kesiş.

- Qaçon: Uzun izoh, mijoz xabari, fayl yöli kartada yoki jadvalda.
- Qaçon emas: Bir neçta bölimni yiğiş → `accordion`
- Variantlar: data-lines=2|3|4 (standart 1); data-mode=middle (standart lines)
- Klaviatura: Enter, Space — Matnni oçadi / yiğadi
- Tokenlar: --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-font-size-sm, --fx-radius-badge, --fx-space-1, --fx-text-brand

```html
<div class="fx-truncate" data-fx-truncate data-lines="2" style="max-inline-size:20rem">
  <p class="fx-truncate__text">Mijoz yangi tarif haqida söradi: yillik obuna narxi, qurilmalar soni va yangilanişlar qanday işlaşi. Javobni ertaga ertalab yuboriş kerak.</p>
  <button class="fx-truncate__toggle" type="button" aria-expanded="false">Köproq</button>
</div>
<div class="fx-truncate" data-fx-truncate data-mode="middle" style="max-inline-size:14rem"><span class="fx-truncate__start">loyiha/hujjatlar/şartnomalar/2026/oktabr/</span><span class="fx-truncate__end">shartnoma.pdf</span></div>
```

- Qilmang: Muhim ma'lumotni (narx, sana) kesmang.
- Qilmang: Tugmasiz kesişda töliq matn boşqa joyda ham bölsin (title sensorli ekranda işlamaydi).

## Tipografiya rollari (`type`, beta, 0.28.0 dan)

Tipografiya rol şkalasi (4.1–4.5): display · headline · title · body · label, har biri lg/md/sm. Rol ölçam, qator balandligi (--fx-line-height-*), vazn va harf oraliğini (--fx-tracking-*) birga beradi — komponent alohida font-size tanlamaydi, rolni tanlaydi. Display va headline sarlavha şriftida (data-fx-font) va moslaşuv bilan; data-fluid="on" — ekran eniga silliq moslaşuvçi ölçam (clamp: 20→24, 24→36, 30→48, 36→72 px). Katta display ölçamlari: display-lg 48, display-xl 60, display-2xl 72.

- Qaçon: Yangi komponent yoki sahifa matni — ölçam, qator balandligi va vaznni bitta rol bilan beriş. Hero va landing sarlavhasi (display, data-fluid="on").
- Qaçon emas: Mavjud h1–h4 sarlavha uslubi yetarli bölsa → `heading`; Uzun maqola matni → `prose`
- Variantlar: data-role=display-lg|display-md|display-sm|headline-lg|headline-md|headline-sm|title-lg|title-md|title-sm|body-lg|body-md|body-sm|label-lg|label-md|label-sm (standart body-md); data-fluid=off|on (standart off); data-case=none|upper (standart none); data-tone=primary|secondary|tertiary|brand (standart primary); data-leading=tight|snug|normal|relaxed (standart rol); data-tracking=tight|normal|wide|wider (standart rol)
- Tokenlar: --fx-font-adjust-display, --fx-font-adjust-numeric, --fx-font-family-display, --fx-font-family-numeric, --fx-font-size-fluid-lg, --fx-font-size-fluid-md, --fx-font-size-fluid-sm, --fx-font-size-fluid-xl, --fx-line-height-normal, --fx-line-height-relaxed, --fx-line-height-snug, --fx-line-height-tight, --fx-text-brand, --fx-text-secondary, --fx-text-tertiary, --fx-tracking-normal, --fx-tracking-tight, --fx-tracking-wide, --fx-tracking-wider, --fx-type-body-lg-line-height, --fx-type-body-lg-size, --fx-type-body-lg-tracking, --fx-type-body-lg-weight, --fx-type-body-md-line-height, --fx-type-body-md-size, --fx-type-body-md-tracking, --fx-type-body-md-weight, --fx-type-body-sm-line-height, --fx-type-body-sm-size, --fx-type-body-sm-tracking, --fx-type-body-sm-weight, --fx-type-display-lg-line-height, --fx-type-display-lg-size, --fx-type-display-lg-tracking, --fx-type-display-lg-weight, --fx-type-display-md-line-height, --fx-type-display-md-size, --fx-type-display-md-tracking, --fx-type-display-md-weight, --fx-type-display-sm-line-height, --fx-type-display-sm-size, --fx-type-display-sm-tracking, --fx-type-display-sm-weight, --fx-type-headline-lg-line-height, --fx-type-headline-lg-size, --fx-type-headline-lg-tracking, --fx-type-headline-lg-weight, --fx-type-headline-md-line-height, --fx-type-headline-md-size, --fx-type-headline-md-tracking, --fx-type-headline-md-weight, --fx-type-headline-sm-line-height, --fx-type-headline-sm-size, --fx-type-headline-sm-tracking, --fx-type-headline-sm-weight, --fx-type-label-lg-line-height, --fx-type-label-lg-size, --fx-type-label-lg-tracking, --fx-type-label-lg-weight, --fx-type-label-md-line-height, --fx-type-label-md-size, --fx-type-label-md-tracking, --fx-type-label-md-weight, --fx-type-label-sm-line-height, --fx-type-label-sm-size, --fx-type-label-sm-tracking, --fx-type-label-sm-weight, --fx-type-title-lg-line-height, --fx-type-title-lg-size, --fx-type-title-lg-tracking, --fx-type-title-lg-weight, --fx-type-title-md-line-height, --fx-type-title-md-size, --fx-type-title-md-tracking, --fx-type-title-md-weight, --fx-type-title-sm-line-height, --fx-type-title-sm-size, --fx-type-title-sm-tracking, --fx-type-title-sm-weight

```html
<p class="fx-type" data-role="label-sm" data-case="upper" data-tone="brand">Yangi imkoniyat</p>
<h1 class="fx-type" data-role="display-md" data-fluid="on">Mijozlar bilan işlaş endi bitta oynada</h1>
<p class="fx-type" data-role="body-lg" data-tone="secondary">Buyurtmalar, qönğiroqlar va tölovlar — hammasi bir joyda. Jamoangiz har bir mijozning tarixini köradi.</p>
<h2 class="fx-type" data-role="headline-sm">Oktabr hisoboti</h2>
<h3 class="fx-type" data-role="title-md">Toşkent filiali</h3>
<p class="fx-type" data-role="body-md">Ötgan oyga nisbatan sotuvlar 12 % oşdi, qaytarilgan buyurtmalar kamaydi.</p>
<p class="fx-type" data-role="display-sm" data-numeric>48 750 000 söm</p>
<span class="fx-type" data-role="label-md" data-tone="tertiary">Yangilandi: bugun, 14:20</span>
```

- Qilmang: Rol içida font-size yoki line-height'ni qölda yozmang — kerak bölsa data-leading / data-tracking bilan almaştiring.
- Qilmang: Vizual rolni semantik daraja örniga işlatmang: sahifada h1 bitta, rol esa istalgan bölişi mumkin.
- Qilmang: Display rolini oddiy ilova ekranida (CRM, jadval) işlatmang — u landing va hero uçun.

## Upsell va qulflangan funksiya (`upsell`, beta, 0.28.0 dan)

Pullik funksiyani körsatiş va tarifni yangilaşga çaqiriş (naqş): «Pro» belgisi (qulf + söz), banner, foyda röyxatli karta (popover içida ham) va qulflangan köriniş — ostida xiralaşgan namuna, ustida qulf va taklif. Narx sömda, aniq foyda bilan.

- Qaçon: Limitga yaqinlaşganda yuqori tarifni taklif qiliş. Joriy tarifda yöq funksiya menyuda körinib turişi, bosilganda tuşuntiriş. Hisobot/dashboard bölimini qulflab, namunasini körsatiş.
- Qaçon emas: Tizim xabari, xato yoki ogohlantiriş → `alert`; Tariflarni yonma-yon soliştiriş → `card`
- Variantlar: data-variant=banner|card|locked (standart —)
- Klaviatura: Enter / Space (qulflangan bandda) — Taklif popoverini oçadi; Esc — Popoverni yopadi
- Tokenlar: --fx-bg-brand-solid, --fx-bg-brand-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-surface, --fx-border-width-default, --fx-control-h-lg, --fx-control-h-md, --fx-font-size-md, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-semibold, --fx-popover-width, --fx-radius-circle, --fx-radius-control, --fx-radius-surface, --fx-radius-tag, --fx-size-icon-sm, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-4, --fx-space-5, --fx-space-6, --fx-text-brand, --fx-text-on-brand, --fx-text-primary, --fx-text-secondary

```html
<div class="fx-upsell" data-variant="banner">
  <span class="fx-upsell__lock"><svg viewBox="0 0 20 20" aria-hidden="true"><rect x="4.5" y="9" width="11" height="8" rx="1.5" fill="none" stroke="currentColor" stroke-width="1.6"/><path d="M7 9V6.5a3 3 0 0 1 6 0V9" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/></svg></span>
  <div class="fx-upsell__body"><p class="fx-upsell__title">SMS limiti 93 % işlatildi</p><p class="fx-upsell__text">Biznes tarifida oyiga 10 000 SMS va Telegram bot orqali çeksiz xabar.</p></div>
  <div class="fx-upsell__actions"><a class="fx-btn" data-variant="primary" href="#">Biznesga ötiş</a></div>
</div>
<p style="margin:0;display:flex;gap:var(--fx-space-3);align-items:center">
  <button class="fx-btn fx-upsell__item" type="button" popovertarget="up-pop" aria-disabled="true">Avtomatik eslatmalar <span class="fx-upsell__badge"><svg viewBox="0 0 20 20" aria-hidden="true"><rect x="4.5" y="9" width="11" height="8" rx="1.5" fill="none" stroke="currentColor" stroke-width="1.6"/><path d="M7 9V6.5a3 3 0 0 1 6 0V9" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/></svg>Pro</span></button>
</p>
<div class="fx-popover" popover id="up-pop">
  <div class="fx-upsell" data-variant="card">
    <span class="fx-upsell__badge"><svg viewBox="0 0 20 20" aria-hidden="true"><rect x="4.5" y="9" width="11" height="8" rx="1.5" fill="none" stroke="currentColor" stroke-width="1.6"/><path d="M7 9V6.5a3 3 0 0 1 6 0V9" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/></svg>Pro tarifida</span>
    <p class="fx-upsell__title">Mijozga eslatmalar özi ketsin</p>
    <ul class="fx-upsell__list"><li>Tölov kunidan 1 kun oldin SMS</li><li>Tuğilgan kun tabrigi Telegramda</li><li>Uçraşuvdan 2 soat oldin eslatma</li></ul>
    <div class="fx-upsell__actions"><a class="fx-btn" data-variant="primary" href="#">Pro tarifiga ötiş</a><span class="fx-upsell__price">oyiga 490 000 söm</span></div>
  </div>
</div>
<section class="fx-upsell" data-variant="locked" aria-labelledby="up-l">
  <div class="fx-upsell__preview" inert aria-hidden="true">
    <table class="fx-table"><thead><tr><th>Menejer</th><th data-type="num">Bitimlar</th><th data-type="num">Tuşum</th><th data-type="num">Konversiya</th></tr></thead>
    <tbody><tr><td>Dilnoza R.</td><td data-type="num">42</td><td data-type="num">186 400 000 söm</td><td data-type="num">31 %</td></tr><tr><td>Bobur T.</td><td data-type="num">35</td><td data-type="num">142 900 000 söm</td><td data-type="num">27 %</td></tr><tr><td>Madina Y.</td><td data-type="num">29</td><td data-type="num">118 300 000 söm</td><td data-type="num">24 %</td></tr></tbody></table>
  </div>
  <div class="fx-upsell__overlay">
    <span class="fx-upsell__lock"><svg viewBox="0 0 20 20" aria-hidden="true"><rect x="4.5" y="9" width="11" height="8" rx="1.5" fill="none" stroke="currentColor" stroke-width="1.6"/><path d="M7 9V6.5a3 3 0 0 1 6 0V9" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/></svg></span>
    <h3 class="fx-upsell__title" id="up-l">Menejerlar reytingi — Biznes tarifida</h3>
    <p class="fx-upsell__text">Kim qança bitim yopgani, tuşum va konversiya — har kuni yangilanadi.</p>
    <div class="fx-upsell__actions"><a class="fx-btn" data-variant="primary" href="#">Tariflarni köriş</a><button class="fx-btn" type="button" data-variant="ghost">14 kun bepul sinaş</button></div>
  </div>
</section>
```

- Qilmang: Qulflangan funksiyani butunlay yaşirmang — foydalanuvçi nima olişini körsin (xiralaşgan namuna).
- Qilmang: Har sahifada upsell banneri qöymang — faqat çegara yaqinlaşganda yoki qulflangan funksiya bosilganda.
- Qilmang: Qulflangan tugmani disabled qilmang — aria-disabled bölsin va bosilganda taklif oçilsin (sababini biliş uçun).

## Video dialog (`videodialog`, beta, 0.29.0 dan)

Muqova rasm va öynatiş tugmasi (4.83): bosilganda video modal oynada (native dialog) oçiladi va özi boşlanadi, yopilganda töxtaydi. Video manbasi faqat oçilganda yuklanadi (iframe data-src yoki video preload="none") — sahifa yengil qoladi. Esc, fon yoki «Yopiş» bilan yopiladi, fokus muqovaga qaytadi. Landing sahifasidagi «2 daqiqada tanişuv» videosi uçun.

- Qaçon: Landing hero blokida mahsulot tanişuv videosi. Yordam markazida «qanday qilinadi» videolari.
- Qaçon emas: Sahifada joyida öynatiş, boşqaruv bilan → `videoplayer`; Rasmlarni kattalaştirib köriş → `lightbox`
- Variantlar: data-ratio=9/16 (standart 16/9)
- Klaviatura: Enter / Boʻsh joy (muqovada) — Videoni oynada oçadi; Esc — Yopadi, video töxtaydi, fokus muqovaga qaytadi; Tab — Oyna içida qoladi
- Tokenlar: --fx-bg-brand-solid, --fx-bg-muted, --fx-bg-surface, --fx-border-color-focus, --fx-border-color-surface, --fx-border-width-default, --fx-border-width-focus, --fx-color-black, --fx-color-white, --fx-control-h-lg, --fx-ease-enter, --fx-ease-exit, --fx-ease-spring, --fx-ease-standard, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-motion-base, --fx-motion-exit-base, --fx-motion-press, --fx-motion-scale-enter, --fx-motion-slow, --fx-radius-circle, --fx-radius-overlay, --fx-radius-pill, --fx-radius-surface, --fx-shadow-lg, --fx-shadow-md, --fx-size-icon-lg, --fx-size-icon-sm, --fx-size-min-target, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-8, --fx-text-on-brand, --fx-text-primary

```html
<div class="fx-videodialog" data-fx-videodialog style="max-inline-size:40rem">
  <button class="fx-videodialog__cover" type="button" commandfor="vd-tanishuv" command="show-modal" aria-label="Videoni köriş: CRM bilan 2 daqiqada tanişuv, 2:14">
    <img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201280%20720%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22hsl(215%2070%25%2072%25)%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22hsl(245%2060%25%2042%25)%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%221280%22%20height%3D%22720%22%20fill%3D%22url(%23g)%22%2F%3E%3Ctext%20x%3D%22640%22%20y%3D%22374%22%20font-family%3D%22sans-serif%22%20font-size%3D%2280%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3ECRM%20bilan%20tanishuv%3C%2Ftext%3E%3Ctext%20x%3D%22640%22%20y%3D%22464%22%20font-family%3D%22sans-serif%22%20font-size%3D%2245%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%20opacity%3D%22.8%22%3E2%20daqiqada%3C%2Ftext%3E%3C%2Fsvg%3E" alt="" width="1280" height="720">
    <span class="fx-videodialog__play" aria-hidden="true"><svg viewBox="0 0 256 256" aria-hidden="true"><path d="M232.4 114.49 88.32 26.35a16 16 0 0 0-16.2-.3A15.86 15.86 0 0 0 64 39.87v176.26A15.94 15.94 0 0 0 80 232a16.07 16.07 0 0 0 8.36-2.35l144.04-88.14a15.81 15.81 0 0 0 0-27Z"/></svg></span>
    <span class="fx-videodialog__caption">2:14 · CRM bilan tanişuv</span>
  </button>
  <dialog class="fx-videodialog__dialog" id="vd-tanishuv" aria-label="CRM bilan 2 daqiqada tanişuv">
    <form method="dialog" class="fx-videodialog__close"><button><svg viewBox="0 0 256 256" aria-hidden="true"><path d="M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z"/></svg>Yopiş</button></form>
    <div class="fx-videodialog__frame"><iframe data-src="https://www.youtube-nocookie.com/embed/aqz-KE-bpKQ" title="CRM bilan tanişuv" allow="autoplay; fullscreen; picture-in-picture" allowfullscreen></iframe></div>
  </dialog>
</div>
```

- Qilmang: Videoni sahifa oçilganda avtomatik boşlamang — faqat bosilganda.
- Qilmang: Muhim ma'lumotni faqat videoda bermang — matn yoki subtitr ham bölsin.
- Qilmang: Muqovaga «Play» belgisisiz rasm qöymang — bosiladigani körinib tursin.

## Video pleyer (`videoplayer`, beta, 0.24.0 dan)

Brauzer videosi ustida öz boşqaruvi: katta ijro tugmasi, progress (suriş), vaqt, ovoz, taglavha (CC) va töliq ekran. Boşqaruv JS bilan yaratiladi — HTMLda faqat <video> (va <track>). Ijro paytida 2,5 soniyadan keyin yaşirinadi; pleyer fokusda bölganda Space/K, ← →, J L, ↑ ↓, M, C, F işlaydi.

- Qaçon: Öz saytingizdagi video (dars, mahsulot tanişuvi, yozuv) — brend uslubidagi boşqaruv bilan.
- Qaçon emas: Faqat ovoz → `audioplayer`; YouTube/Vimeo iframe → `peek`
- Klaviatura: Space, K — Ijro / pauza; ← → — 5 soniya orqaga / oldinga; J, L — 10 soniya orqaga / oldinga; ↑ ↓ — Ovoz ±10 %; M — Ovozni öçiriş / yoqiş; C — Taglavha; F — Töliq ekran; 0–9 — Videoning 0–90 % ga ötiş
- Tokenlar: --fx-bg-overlay, --fx-border-color-focus, --fx-border-width-focus, --fx-ease-standard, --fx-font-size-md, --fx-font-size-xs, --fx-motion-base, --fx-motion-fast, --fx-motion-instant, --fx-motion-press, --fx-motion-shift-sm, --fx-radius-circle, --fx-radius-control, --fx-radius-surface, --fx-size-control-lg, --fx-size-control-md, --fx-size-icon-md, --fx-slider-value, --fx-space-1, --fx-space-2, --fx-space-3, --fx-space-5, --fx-space-6, --fx-text-on-brand

```html
<div class="fx-videoplayer" data-fx-videoplayer aria-label="FoxUI tanişuv videosi">
  <video class="fx-videoplayer__video" preload="metadata" playsinline src="https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.webm">
    <track kind="captions" srclang="uz" label="Özbekça" src="data:text/vtt;charset=utf-8,WEBVTT%0A%0A00:00.000%20--%3E%2000:03.000%0AGul%20ochilmoqda">
  </video>
</div>
```

- Qilmang: Video avtomatik ovozli boşlanmasin — ovozsiz `muted autoplay` faqat bezak uçun.
- Qilmang: Muhim videoga taglavhasiz qöymang — `<track kind="captions">` qöşing (CC tugmasi özi çiqadi).
- Qilmang: Boşqaruvni yaşirib qöyib, klaviatura bilan oçilmaydigan qilmang (fokus uni qaytaradi).

## Saqlangan körinişlar (`views`, beta, 0.23.0 dan)

Röyxat sahifasi tepasida tayyor filtrlar qatori: «Hammasi 248 · Muddati ötgan 12 · Mening 31» — bosilsa jadval şu körinişga ötadi. Tab emas (panel yöq, jadval bitta): tugmalar, tanlangani aria-pressed; sonlar alohida belgi. «+» — yangi köriniş saqlaş (2.99-adjacent, PDP listpage__views). Havola bölsa (köriniş manzilda saqlanadi) — tanlangani aria-current="page".

- Qaçon: Bitta jadvalning tayyor filtrlari (saqlangan körinişlar) orasida tez ötiş.
- Qaçon emas: Har bölimning öz paneli bor → `tabs`; 2–3 ta variantdan bittasi (filtrsiz) → `segment`
- Variantlar: data-tone=error (standart neutral)
- Klaviatura: Tab, Enter, Space — Körinişni tanlaydi
- Tokenlar: --fx-bg-brand-solid, --fx-bg-brand-subtle, --fx-bg-error-subtle, --fx-bg-muted, --fx-border-color-default, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-ease-standard, --fx-fg-error, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-medium, --fx-motion-fast, --fx-radius-badge, --fx-radius-tag, --fx-space-2, --fx-space-3, --fx-space-5, --fx-text-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<div class="fx-views" role="group" aria-label="Saqlangan körinişlar">
  <button class="fx-views__item" type="button" aria-pressed="true">Hammasi <span class="fx-views__count">248</span></button>
  <button class="fx-views__item" type="button" aria-pressed="false">Muddati ötgan <span class="fx-views__count" data-tone="error">12</span></button>
  <button class="fx-views__item" type="button" aria-pressed="false">Mening arizalarim <span class="fx-views__count">31</span></button>
  <button class="fx-views__item" type="button" aria-pressed="false">Tölanmagan <span class="fx-views__count">47</span></button>
  <button class="fx-btn fx-views__add" data-variant="ghost" data-size="sm" type="button">+ Köriniş saqlaş</button>
</div>
```

- Qilmang: Panelli bölimlar uçun işlatmang — u fx-tabs.
- Qilmang: 5–6 tadan köp körinişni qatorga qöymang — qolganini «Köproq» menyusiga.
- Qilmang: Sonni faqat rang bilan farqlamang (muddati ötgan — qizil son, lekin nomi ham aniq).

## Virtual röyxat (`virtuallist`, beta, 0.29.0 dan)

Minglab bandli röyxat (4.137): 10 000 mijoz, mahsulot katalogi, mahallalar — DOMda faqat körinadigan qatorlar va kiçik zaxira çiziladi, aylantiriş silliq qoladi (hozirgaça faqat datagrid'da bor edi). APG listbox: fokus röyxatda (aria-activedescendant), ↑ ↓ PgUp PgDn Home End, harf bosib qidiriş, Enter/Böşliq tanlaydi; köp tanlovda Shift+↑↓ va Ctrl+A. Har bandda aria-setsize / aria-posinset. Ma'lumot içidagi <script type="application/json"> yoki element.fxVirtual.setItems(massiv) bilan.

- Qaçon: Minglab bandli röyxatdan tanlaş: mijoz, mahsulot, manzil. Combobox / tanlov oynasi içidagi uzun röyxat.
- Qaçon emas: Qisqa röyxat (200 tagaça) → `listbox`; Ustunli katta jadval → `datagrid`; Yozib qidirib tanlaş → `combobox`
- Variantlar: data-size=md|sm (standart md); aria-multiselectable=true (standart false)
- Klaviatura: ↑ ↓ — Oldingi / keyingi band; PageUp / PageDown — Bir sahifa; Home / End — Birinçi / oxirgi band; Harf — Şu harfdan boşlanadigan keyingi band; Enter / Boʻshliq — Tanlaydi (köp tanlovda — almaştiradi); Shift + ↑ ↓ — Köp tanlovda: tanlovni kengaytiradi; Ctrl+A — Köp tanlovda: hammasini tanlaydi
- Tokenlar: --fx-bg-muted, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-focus, --fx-border-color-strong, --fx-border-width-default, --fx-border-width-focus, --fx-control-h-md, --fx-control-h-sm, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-semibold, --fx-radius-control, --fx-radius-nav, --fx-space-1, --fx-space-12, --fx-space-3, --fx-text-brand, --fx-text-primary, --fx-text-tertiary

```html
<div class="fx-field" style="max-inline-size:26rem">
  <span class="fx-label" id="vl1-l">Mijozlar bazasi <span class="fx-virtuallist__count" data-fx-virtuallist-count="vl1"></span></span>
  <div class="fx-virtuallist" id="vl1" data-fx-virtuallist data-demo="10000" data-name="mijoz" aria-labelledby="vl1-l"></div>
</div>
<div class="fx-field" style="max-inline-size:26rem;margin-block-start:var(--fx-space-4)">
  <span class="fx-label" id="vl2-l">Yetkazib beriş hududlari (bir neçta)</span>
  <div class="fx-virtuallist" data-fx-virtuallist data-size="sm" aria-multiselectable="true" aria-labelledby="vl2-l" style="--fx-virtuallist-height: 12rem"><script type="application/json">[{"label":"Toşkent şahri","meta":"12 tuman"},{"label":"Toşkent viloyati","meta":"15 tuman"},{"label":"Samarqand","meta":"14 tuman"},{"label":"Buxoro","meta":"11 tuman"},{"label":"Andijon","meta":"14 tuman"},{"label":"Namangan","meta":"11 tuman"},{"label":"Farğona","meta":"15 tuman"},{"label":"Qaşqadaryo","meta":"13 tuman"},{"label":"Surxondaryo","meta":"14 tuman"},{"label":"Jizzax","meta":"12 tuman"},{"label":"Sirdaryo","meta":"8 tuman"},{"label":"Navoiy","meta":"8 tuman"},{"label":"Xorazm","meta":"11 tuman"},{"label":"Qoraqalpoğiston","meta":"16 tuman"}]</script></div>
</div>
```

- Qilmang: 200 tadan kam bandga virtual röyxat qilmang — oddiy listbox yengil va brauzer qidiruvi (Ctrl+F) işlaydi.
- Qilmang: Bandlarni turli balandlikda qilmang — qator balandligi bitta (birinçi qatordan ölçanadi).
- Qilmang: Virtual röyxatda Ctrl+F işlamasligini unutmang — yoniga qidiruv maydoni qöying.

## Sahifa ötişlari (View Transitions) (`vt`, beta, 0.28.0 dan)

View Transitions presetlari (4.28): <html data-fx-vt="fade|axis|slide"> — sahifalararo (MPA) ötiş: fade — öçib-yoniş (M3 fade-through), axis — gorizontal öq böyiça qisqa siljiş (shared axis), slide — mobil stek kabi suriliş; tarix böyiça orqaga ötişda yönaliş teskari, RTL'da közgulanadi. Bir sahifa içida: fxTransition(() => yangilaş, { type: 'back' }). Umumiy element — container transform (4.29): röyxatdagi karta va tafsilot sahifasida bir xil data-vt-name — rasm va sarlavha «uçib» ötadi; bir sahifa içida fxMorph(karta, panel, oçiş). fx-vt-static — ötişda joyida turadigan header. Hammasi prefers-reduced-motion va data-fx-motion="none"da öçadi; qöllanmasa sahifa oddiy almaşadi.

- Qaçon: Köp sahifali sayt yoki kabinetda sahifalar orasida silliq ötiş. Röyxat → tafsilot: karta rasmi va sarlavhasi tafsilot sahifasiga «uçib» ötadi. Bir sahifa içida köriniş almaşinuvi (jadval ↔ kartalar, qadam ↔ qadam).
- Qaçon emas: Panel yoki dialog oçilişi (öz animatsiyasi bor) → `dialog`; Tablar orasida almaşiş → `tabs`
- Variantlar: data-fx-vt=fade|axis|slide (standart fade)
- Tokenlar: --fx-ease-emphasized, --fx-ease-enter, --fx-ease-exit, --fx-ease-sheet, --fx-motion-exit-base, --fx-motion-exit-fast, --fx-motion-exit-slow, --fx-motion-scale-enter, --fx-motion-shift-lg, --fx-motion-slow, --fx-motion-slower

```html
<!-- har ikki sahifada: <html lang="uz" data-fx-vt="axis"> -->
<header class="fx-vt-static" style="padding: var(--fx-space-3) 0"><strong>Mijozlar</strong></header>
<div class="fx-grid" data-min="sm" data-gap="4">
  <a class="fx-card" href="#bitim-12" data-fx-vt data-vt-name="bitim-12" style="color: inherit; text-decoration: none">
    <h3 class="fx-card__title">«Ofis mebeli» bitimi</h3>
    <p class="fx-card__text">18 400 000 söm · muzokara</p>
  </a>
  <a class="fx-card" href="#bitim-13" data-fx-vt data-vt-name="bitim-13" style="color: inherit; text-decoration: none">
    <h3 class="fx-card__title">«Server ijarasi» bitimi</h3>
    <p class="fx-card__text">6 200 000 söm · taklif yuborildi</p>
  </a>
</div>
<button class="fx-btn" type="button" onclick="fxTransition(() => document.querySelector('.fx-grid').classList.toggle('fx-stack'), { type: 'forward' })">Körinişni almaştiriş</button>
```

- Qilmang: data-vt-name'ni sahifada takrorlamang — bir xil nom ikki elementda bölsa ötiş bekor böladi (fx-vt-static ham sahifada bitta).
- Qilmang: Har bir kiçik özgarişni (filtr, hover) View Transition bilan öramang — sahifa yoki köriniş almaşinuvi uçun.
- Qilmang: Animatsiya tugaşini kutib ma'lumot yuklamang: ötiş faqat bezak, DOM darhol yangilanadi.

## Suv belgisi (`watermark`, beta, 0.29.0 dan)

Maxfiy hujjat, hisobot yoki demo ustida takrorlanuvçi xira yozuv (4.144, #49): kim körayotgani va qaçon — skrinşot tarqalsa manbasi bilinadi. Qatlam aria-hidden, siçqonçani ötkazadi (matnni belgilaş va bosiş işlaydi), bosmada ham çiqadi. Matnni foxui.js törga yoyadi; qatlam DevTools'da öçirilsa yoki yaşirilsa qayta qöyiladi. Ekran öquvçi uçun bitta körinmas izoh «Suv belgisi: …».

- Qaçon: Içki moliyaviy hisobot, şartnoma loyihasi, xodim ma'lumoti körinadigan sahifa. Demo / sinov rejimida yaratilgan hujjat («NAMUNA»).
- Qaçon emas: Holatni bildiriş (qoralama, arxiv) → `badge`; Butun sahifa ustidagi ogohlantiriş → `banner`
- Variantlar: data-text=istalgan matn (standart Maxfiy); data-density=low|medium|high (standart medium); data-layer=over|under (standart over); data-tone=neutral|danger (standart neutral)
- Tokenlar: --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-semibold, --fx-space-12, --fx-space-6, --fx-text-error, --fx-text-primary

```html
<article class="fx-card fx-watermark" data-fx-watermark data-text="Maxfiy · Dilnoza Yusupova · 18.10.2026 14:05" style="padding:var(--fx-space-6);max-inline-size:40rem">
  <h3>Oktyabr çoragi — moliyaviy hisobot</h3>
  <p>Umumiy tuşum: <strong>1 850 000 000 söm</strong> (+12 % ötgan çorakka nisbatan). Eng katta bitim — «Samarqand Savdo» bilan, 245 000 000 söm.</p>
  <p>Debitorlik qarzi: 312 000 000 söm, şundan muddati ötgani — 48 000 000 söm (7 mijoz).</p>
  <p>Hujjat faqat rahbariyat uçun. Tarqatiş taqiqlanadi.</p>
</article>
<div class="fx-watermark" data-fx-watermark data-density="high" data-tone="danger" data-text="NAMUNA" style="margin-block-start:var(--fx-space-4);padding:var(--fx-space-6);border:var(--fx-border-width-default) dashed var(--fx-border-color-strong);border-radius:var(--fx-radius-surface);max-inline-size:40rem">
  <p><strong>Hisob-faktura №HF-0451</strong> · «Tong Maktabi» MChJ · 4 200 000 söm</p>
  <p>Demo rejimda yaratilgan — haqiqiy hujjat emas.</p>
</div>
```

- Qilmang: Suv belgisini himoya deb hisoblamang — u faqat ogohlantiradi; maxfiy ma'lumot serverda çeklanadi.
- Qilmang: Yozuvni töq qilmang — matn öqilişi qiyinlaşadi (standart xiralik 9 %).
- Qilmang: Uzun gap yozmang — ism, sana, «Maxfiy» yetarli.

## Vidjet (`widget`, beta, 0.54.0 dan)

Dashboard idişi: taşqi qobiq ikkinçi darajali fonda — sarlavha, izoh, amallar (davr, menyu) va legenda (data-role — grafik seriya rollari: brand, ink, accent; sarlavhada legenda bölsa grafikning öz legendasi yaşiriladi); içida kötarilgan yuza — grafik, jadval, KPI qatori (.fx-widget__kpis) yoki röyxat; pastda izoh va havola. Ikki qavat sarlavhani mazmundan ajratadi — sahifada önlab vidjet tursa ham tartibli. Içki burçak taşqidan qobiq qalinligiça kiçik (konsentrik). data-flush — jadval yuza çetigaça; data-variant="plain" — qobiqsiz; aria-busy — yuklaniş (heroui.pro Widget'dan ilhom, kalibr — FoxUI).

- Qaçon: Dashboard va hisobot sahifalari: grafik, KPI qatori, qisqa jadval yoki röyxat sarlavha bilan. Bir xil körinişdagi köp blokli panel (analitika, admin boş sahifasi).
- Qaçon emas: Bitta raqamli körsatkiç → `stat`; Faqat grafik, sahifa foni oq → `chartcard`; Umumiy mazmunli karta → `card`
- Variantlar: data-variant=plain (standart shell); data-flush=true
- Tokenlar: --fx-bg-muted, --fx-bg-subtle, --fx-bg-surface, --fx-border-color-default, --fx-border-color-surface, --fx-border-width-default, --fx-duration-pulse, --fx-ease-standard, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-semibold, --fx-radius-circle, --fx-radius-control, --fx-radius-overlay, --fx-radius-surface, --fx-shadow-sm, --fx-space-1, --fx-space-12, --fx-space-2, --fx-space-3, --fx-space-4, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary, --fx-viz-accent, --fx-viz-brand, --fx-viz-ink

```html
<div style="display:grid;inline-size:100%;gap:var(--fx-space-5);grid-template-columns:repeat(auto-fit,minmax(min(100%,22rem),1fr))">
<section class="fx-widget" aria-labelledby="w1">
  <header class="fx-widget__head"><div><h3 class="fx-widget__title" id="w1">Tokenlar sarfi</h3><p class="fx-widget__desc">Oxirgi 30 kun</p></div><ul class="fx-widget__legend"><li data-role="ink">Kiruvçi</li><li>Çiquvçi</li></ul></header>
  <div class="fx-widget__body"><figure class="fx-chart" data-fx-chart data-type="line" data-height="180"><figcaption class="fx-sr-only">Tokenlar sarfi, ming</figcaption><table class="fx-chart__data"><thead><tr><th>Kun</th><th>Kiruvçi</th><th>Çiquvçi</th></tr></thead><tbody><tr><th>1-okt</th><td>120</td><td>80</td></tr><tr><th>5-okt</th><td>160</td><td>95</td></tr><tr><th>10-okt</th><td>140</td><td>110</td></tr><tr><th>15-okt</th><td>210</td><td>130</td></tr><tr><th>20-okt</th><td>190</td><td>150</td></tr><tr><th>25-okt</th><td>240</td><td>170</td></tr><tr><th>30-okt</th><td>260</td><td>160</td></tr></tbody></table></figure></div>
</section>
<section class="fx-widget" aria-labelledby="w2">
  <header class="fx-widget__head"><div><h3 class="fx-widget__title" id="w2">Asosiy körsatkiçlar</h3><p class="fx-widget__desc">Oktyabr</p></div><div class="fx-widget__actions"><div class="fx-segment" role="group" aria-label="Davr" data-size="sm"><button class="fx-segment__item" type="button" aria-pressed="true">30 kun</button><button class="fx-segment__item" type="button" aria-pressed="false">Yil</button></div></div></header>
  <div class="fx-widget__body"><div class="fx-widget__kpis">
    <div class="fx-stat"><div class="fx-stat__head"><span class="fx-stat__label">Tuşum</span><span class="fx-delta" data-variant="chip" data-dir="up" data-tone="good">+3,3%</span></div><span class="fx-stat__value">228 mln</span><figure class="fx-chart" data-fx-chart data-type="spark" data-no-table data-height="40"><figcaption class="fx-sr-only">Dinamika</figcaption><table class="fx-chart__data"><thead><tr><th>Kun</th><th>Qiymat</th></tr></thead><tbody><tr><th>1</th><td>5</td></tr><tr><th>2</th><td>7</td></tr><tr><th>3</th><td>6</td></tr><tr><th>4</th><td>9</td></tr><tr><th>5</th><td>8</td></tr><tr><th>6</th><td>12</td></tr><tr><th>7</th><td>14</td></tr></tbody></table></figure></div>
    <div class="fx-stat"><div class="fx-stat__head"><span class="fx-stat__label">Rad etilgan</span><span class="fx-delta" data-variant="chip" data-dir="down" data-tone="bad">−5,9%</span></div><span class="fx-stat__value">42,3%</span><figure class="fx-chart" data-fx-chart data-type="spark" data-no-table data-height="40"><figcaption class="fx-sr-only">Dinamika</figcaption><table class="fx-chart__data"><thead><tr><th>Kun</th><th>Qiymat</th></tr></thead><tbody><tr><th>1</th><td>9</td></tr><tr><th>2</th><td>8</td></tr><tr><th>3</th><td>9</td></tr><tr><th>4</th><td>7</td></tr><tr><th>5</th><td>8</td></tr><tr><th>6</th><td>6</td></tr><tr><th>7</th><td>6</td></tr></tbody></table></figure></div>
    <div class="fx-stat"><div class="fx-stat__head"><span class="fx-stat__label">Faol mijoz</span><span class="fx-delta" data-variant="chip" data-dir="up" data-tone="good">+10,8%</span></div><span class="fx-stat__value">980</span><figure class="fx-chart" data-fx-chart data-type="spark" data-no-table data-height="40"><figcaption class="fx-sr-only">Dinamika</figcaption><table class="fx-chart__data"><thead><tr><th>Kun</th><th>Qiymat</th></tr></thead><tbody><tr><th>1</th><td>4</td></tr><tr><th>2</th><td>5</td></tr><tr><th>3</th><td>5</td></tr><tr><th>4</th><td>7</td></tr><tr><th>5</th><td>8</td></tr><tr><th>6</th><td>8</td></tr><tr><th>7</th><td>10</td></tr></tbody></table></figure></div>
  </div></div>
  <footer class="fx-widget__foot"><span>Yangilandi: bugun 09:40</span><a href="#">Hisobot</a></footer>
</section>
<section class="fx-widget" aria-labelledby="w3">
  <header class="fx-widget__head"><div><h3 class="fx-widget__title" id="w3">Jamoa</h3></div><span class="fx-badge">4 a'zo</span></header>
  <div class="fx-widget__body" data-flush><table class="fx-table" data-density="compact"><thead><tr><th scope="col">Ism</th><th scope="col">Rol</th><th scope="col">Holat</th></tr></thead><tbody><tr><td>Aziz Karimov</td><td>Rahbar</td><td><span class="fx-badge" data-tone="success" data-marker="dot">Faol</span></td></tr><tr><td>Dilnoza Rahimova</td><td>Dizayner</td><td><span class="fx-badge" data-tone="success" data-marker="dot">Faol</span></td></tr><tr><td>Sardor Aliyev</td><td>Dasturçi</td><td><span class="fx-badge" data-tone="warning" data-marker="dot">Ta'tilda</span></td></tr></tbody></table></div>
</section>
<section class="fx-widget" aria-labelledby="w4" aria-busy="true"><header class="fx-widget__head"><h3 class="fx-widget__title" id="w4">Yuklanmoqda…</h3></header><div class="fx-widget__body"></div></section>
</div>
```

- Qilmang: Vidjet içiga yana vidjet qöymang — ikki qavat yetarli.
- Qilmang: Sarlavhani içki yuzaga köçirmang: qobiqda turişi — vidjetning mazmuni.
- Qilmang: Bitta vidjetga ikkita asosiy grafik joylamang — har biri öz vidjetida.

## Köp bosqiçli forma (`wizard`, beta, 0.22.0 dan)

Murakkab formani qadamlarga böladi: Qadamlar, joriy panel, Orqaga/Keyingi/Yuboriş. «Keyingi» joriy qadamni tekşiradi (xato bölsa töxtaydi, qadam «xato» belgisini oladi), qadam almaşganda fokus sarlavhaga ketadi. Oxirgi panel — javoblar xulosasi, har qatorda «Özgartiriş».

- Qaçon: Forma uzun yoki mantiqan bosqiçli (buyurtma, röyxatdan ötiş, sozlaş).
- Qaçon emas: Qisqa forma (5 tagaça maydon) → `input`; Bir xil darajadagi bölimlar → `tabs`
- Klaviatura: Tab — Panel içidagi maydonlar va tugmalar; Enter (maydonda) — Keyingi qadamga (oxirgisida — yuboradi)
- Tokenlar: --fx-border-color-default, --fx-border-color-focus, --fx-border-width-default, --fx-border-width-focus, --fx-font-size-lg, --fx-font-size-sm, --fx-font-size-xs, --fx-font-weight-semibold, --fx-radius-control, --fx-space-1, --fx-space-3, --fx-space-4, --fx-space-6, --fx-text-brand, --fx-text-primary, --fx-text-secondary, --fx-text-tertiary

```html
<form class="fx-wizard" data-fx-wizard action="#">
  <ol class="fx-steps" aria-label="Buyurtma beriş">
    <li class="fx-steps__item" aria-current="step"><span class="fx-steps__label">Mijoz</span></li>
    <li class="fx-steps__item"><span class="fx-steps__label">Tarif</span></li>
    <li class="fx-steps__item"><span class="fx-steps__label">Tasdiq</span></li>
  </ol>
  <section class="fx-wizard__panel">
    <h2 class="fx-wizard__title">Mijoz ma'lumotlari</h2>
    <div class="fx-field"><label class="fx-label" for="wz-ism" data-required>Ism</label><input class="fx-input" id="wz-ism" required placeholder="Aziz Karimov"></div>
    <div class="fx-field"><label class="fx-label" for="wz-tel" data-required>Telefon</label><input class="fx-input" id="wz-tel" type="tel" required placeholder="90 123 45 67"></div>
  </section>
  <section class="fx-wizard__panel" hidden>
    <h2 class="fx-wizard__title">Tarifni tanlang</h2>
    <div class="fx-field"><label class="fx-label" for="wz-tarif">Tarif</label><select class="fx-select" id="wz-tarif"><option>Oylik — 99 000 söm</option><option>Yillik — 990 000 söm</option></select></div>
  </section>
  <section class="fx-wizard__panel" data-review hidden>
    <h2 class="fx-wizard__title">Javoblarni tekşiring</h2>
    <dl class="fx-dl fx-wizard__review" data-variant="divided"></dl>
  </section>
  <div class="fx-wizard__footer">
    <button class="fx-btn" data-variant="ghost" type="button" data-wizard="prev">Orqaga</button>
    <span class="fx-wizard__status" data-wizard-status></span>
    <button class="fx-btn" type="button" data-wizard="next">Keyingi</button>
    <button class="fx-btn" type="submit" data-wizard="submit">Buyurtma beriş</button>
  </div>
</form>
```

- Qilmang: 6 tadan köp qadam qilmang — formani qisqartiring.
- Qilmang: Har qadamda yangi sahifa yuklamang — fokus va kiritilgan ma'lumot yöqoladi.
- Qilmang: Yakuniy xulosasiz yubormang: foydalanuvçi javoblarini bir joyda körsin.

## Yozuv tanlovi (`yozuv`, beta, 0.1.0 dan)

Öquvçi uçun yozuv tanlovi (Qaror 22.10 #4): Yangi (davlat alifbosi: ş ç ö ğ) · Eski lotin · Кирилл. Sahifa yangi alifboda yoziladi; tanlov brauzerda saqlanadi va matn DOM'da brauzerning özida ögiriladi — server, baza va manzillarga tegilmaydi. code, pre, kbd, input, [translate="no"] va [data-yozuv-skip] ögirilmaydi; eski lotindagi blok — data-yozuv-manba="eski" («Yangi»da yangi alifboga ötadi). Ögiriş yadrosi — foxui/yozuv (serverda ham işlatiladi). fx-segment ustiga qurilgan; ixçam variant data-variant="short".

- Qaçon: Matnli sayt (ensiklopediya, blog, maqola) — öquvçi öziga qulay yozuvni tanlaydi. Header yoki maqola tepasida, til tanlovi yonida.
- Qaçon emas: Interfeys tilini (özbek/rus/ingliz) almaştiriş → `langswitch`; Ikki holatli oddiy tanlov → `segment`
- Variantlar: data-variant=full|short (standart full)
- Klaviatura: Tab, Enter, Space — Yozuvni tanlaydi

```html
<div class="fx-segment fx-yozuv" role="group" aria-label="Yozuv" data-fx-yozuv data-yozuv-skip>
  <button class="fx-segment__item" type="button" data-value="yangi" aria-pressed="true"><span class="fx-yozuv__label">Yangi</span><span class="fx-yozuv__label-short">Yangi</span></button>
  <button class="fx-segment__item" type="button" data-value="eski" aria-pressed="false"><span class="fx-yozuv__label">Eski lotin</span><span class="fx-yozuv__label-short">Eski</span></button>
  <button class="fx-segment__item" type="button" data-value="kirill" aria-pressed="false" lang="uz-Cyrl"><span class="fx-yozuv__label">Кирилл</span><span class="fx-yozuv__label-short">Кир</span></button>
</div>
<div class="fx-segment fx-yozuv" data-variant="short" data-size="sm" role="group" aria-label="Yozuv (ixcham)" data-fx-yozuv data-yozuv-skip>
  <button class="fx-segment__item" type="button" data-value="yangi" aria-pressed="true"><span class="fx-yozuv__label">Yangi</span><span class="fx-yozuv__label-short">Yangi</span></button>
  <button class="fx-segment__item" type="button" data-value="eski" aria-pressed="false"><span class="fx-yozuv__label">Eski lotin</span><span class="fx-yozuv__label-short">Eski</span></button>
  <button class="fx-segment__item" type="button" data-value="kirill" aria-pressed="false" lang="uz-Cyrl"><span class="fx-yozuv__label">Кирилл</span><span class="fx-yozuv__label-short">Кир</span></button>
</div>
<p>Toşkent — Özbekistonning poytaxti. Bu yerda çiroyli bağlar, eski şahar va yangi köçalar bor. <code>fx-yozuv</code> va https://foxui.dev tegilmaydi.</p>
<blockquote data-yozuv-manba="eski">Oʻzbekiston Milliy ensiklopediyasidan: «Toshkent — qadimiy shahar». Bu blok eski lotinda yozilgan — «Yangi» tanlansa yangi alifboda oʻqiladi.</blockquote>
```

- Qilmang: Кирилл tugmasini har saytga qöymang — hozir faqat Manbaa'da (Qaror 22.10 #4); boşqa saytlarda faqat Yangi va Eski lotin (kirill tugmasi markup'da bölmasa, çiqmaydi).
- Qilmang: Yorliqlarni ögiriladigan qilmang — har yorliq öz yozuvida turadi (data-yozuv-skip butun tanlovga).
- Qilmang: Kontentni bazada uç yozuvda saqlamang — manba bitta (yangi alifbo), qolgani brauzerda ögiriladi.
- Qilmang: Manzil (slug) va qidiruvni yozuvga boğlamang — slug ASCII (foxui/slug), qidiruv asciiLotin bilan ikkala yozuvni teng köradi.

## Qoidalar

- **FX-TOKEN-01** Komponent va loyiha CSS'ida HEX, rgb(), hsl() yozilmaydi — faqat var(--fx-*) tokenlari, transparent va currentColor. Örniga: Rangni ma'noli tokenga almaştiring: matn — var(--fx-text-*), fon — var(--fx-bg-*), çegara — var(--fx-border-color-*).
- **FX-SHAPE-01** border-radius qölda px bilan yozilmaydi — var(--fx-radius-*) yoki pill formulasi orqali. Örniga: border-radius: var(--fx-radius-surface) (karta), var(--fx-radius-control) (boshqaruv) va h.k.
- **FX-SHAPE-02** Pill şakl 999px yoki 50% bilan emas, komponent qoidasida balandlik / 2 bilan hisoblanadi (--fx-knob-pill orqali). Örniga: border-radius: calc(var(--fx-knob-pill) * var(--_h) / 2 + (1 - var(--fx-knob-pill)) * var(--fx-radius-control))
- **FX-SHADOW-01** box-shadow qölda yozilmaydi — var(--fx-shadow-*). Örniga: box-shadow: var(--fx-shadow-sm) (yoki md/lg).
- **FX-BP-01** @media eni faqat uç rejim çegaralari bilan yoziladi: telefon < 600px ≤ planşet < 840px ≤ kompyuter (keng ekran — 1200px, 1600px). max-width uçun 599.98px / 839.98px. em, rem va boşqa sonlar — yöq. Komponent öz joyiga moslaşsa — @container. Örniga: @media (max-width: 599.98px) — telefon; @media (max-width: 839.98px) — planşet va telefon; @media (min-width: 840px) — kompyuter.
- **FX-SPACE-01** padding, margin, gap — faqat var(--fx-space-*) (4 · 8 · 12 · 16 · 20 · 24 · 32 · 40 · 48) yoki 0. Örniga: padding: var(--fx-space-4); gap: var(--fx-space-2)
- **FX-A11Y-01** Ziçlik boşqaruv balandligini 24px dan (sensorli ekranda 44px dan) pastga tuşirmaydi; şrift ölçamini özgartirmaydi. Örniga: height: max(var(--fx-size-min-target), …)
- **FX-MOTION-01** Animatsiya davomiyligi va egri çiziği var(--fx-motion-*) (xarakterga boğliq) / var(--fx-ease-*) dan; prefers-reduced-motion doim hurmat qilinadi. Örniga: transition: background-color var(--fx-motion-fast) var(--fx-ease-standard)
- **FX-UZ-01** Mahsulot matni yangi alifboda: ö va ğ. Eski yozuvdagi o va g dan keyin tutuq qöyilgan şakl (', ‘, ’) — qöriqçi xatosi. Qöşimça ajratgiçi (Landing'da, Bio'ni) bundan mustasno. Örniga: o + tutuq örniga ö, g + tutuq örniga ğ yozing (yangi alifbo, Qaror 22.10 #3).
- **FX-THEME-01** Loyiha öz brend ranglarini HEX bilan yozmaydi va komponent yoylarini qayta belgilamaydi: rang <html data-fx-theme> (rang kutubxonasi), şakl <html data-fx-personality> (hard | medium | soft) bilan tanlanadi. Örniga: Brendga eng yaqin mavzuni tanlang (npx foxui themes), uslubni init --style bilan; yetişmasa — yangi mavzu sörang, özingiz bezamang.
- **FX-A11Y-02** Har rang mavzusi yoruğ va qoronği rejimda tokens/contrast-pairs.json dagi juftlar böyiça WCAG AA dan ötadi (matn 4,5, UI 3). Örniga: Mavzu yaratganda scripts/theme.mjs işlating; build yiqilsa, poğonani töqroq/oçroq qiling.
- **FX-SELECT-01** Har <select> fx-select klassi bilan (yoki fx-select-wrap içida) yoziladi: oçilganda tizim uslubidagi röyxat — sirt, yoy, soya, tanlangani brend tusida ✓ bilan. Brauzerning standart (kök fonli) röyxati heç qayerda qolmaydi. Örniga: <span class="fx-select-wrap"><select class="fx-select">…</select></span>; ikon/avatar va tavsifli röyxat — data-rich. fx-input bilan select yozilmaydi.
- **FX-PROSE-01** fx-prose içidagi FoxUI komponenti (fx-card va h.k.) içiga yana fx-prose qöyilmaydi: taşqi matn uslubining çegarasi içki fx-prose'ni ham uşlaydi — içki matn oddiy körinadi. Ogohlantiriş, build'ni töxtatmaydi. Örniga: Komponent içidagi matnga komponentning öz matn uslubini bering (masalan, fx-card__body) yoki taşqi konteynerni fx-prose qilmang.
- **FX-SYNC-01** npx foxui sync olgan fayllar (foxui.lock'da xeşi bor) loyihada tahrirlanmaydi: özgariş FoxUI'ning özida qilinadi va keyingi reliz bilan hamma loyihaga birdan keladi. Örniga: Tahrirni qaytaring (npx foxui sync --force) va kerakli özgarişni FoxUI'ga sörov qiling: skrinşot, qayerda, nima kerak.
