Frontend dasturlash
1 200 000 so‘moyiga
YozilishPDP UI/UX qo‘llanma · v0.7
Rasmiy brendVeb-sayt, landing va veb interfeys uchun komponentlar: tugmalar, formalar, kartalar, menyular, grafiklar, holatlar, sahifa anatomiyasi va interfeys naqshlari. Ranglar, shrift va tokenlar — «Yadro» to‘plamidan.
Matn va raqam harakati
KPI raqami sanaladi, e’lon chipi yaltiraydi, hero sarlavhasi xiralikdan ochiladi, so‘z almashadi, AI javobi yozilib boradi, fikrlar tasmasi o‘tadi. Har effekt bir marta yoki sekin siklda; ma’no harakatsiz ham to‘liq o‘qiladi. G‘oya — Magic UI va Aceternity UI.
Effektlar va ulanishlar
Tizim qismlari qanday bog‘langanini ko‘rsatadigan jonli nurlar va orbita, tanlangan tarif uchun yorug‘lik hoshiyasi, kursorga ergashadigan yorug‘lik va banner yaltirashi. PDP qoidasiga ko‘ra kartaning atrofida chiziq yo‘q: hoshiya — orqadagi xira yorug‘lik, yorug‘lik — karta fonining o‘zida. G‘oya — Magic UI va Aceternity UI.
Fon naqshlari
Hero, bo‘sh holat, kirish ekrani va promo band uchun tinch fonlar. Uchtasi statik (CSS gradient — rasm yo‘q, og‘irligi nol), uchtasi jonli: miltillovchi to‘r, kataklar va retro to‘r. G‘oya — Magic UI va Aceternity UI; ranglar — faol brend tokenlaridan: qora maydon, brend rangi va aksent.
Jonli fonlar
Promo band, hero, tadbir e’loni va kirish ekrani uchun beshta jonli fon: aurora, to‘lqin, meteorlar, nurlar va zarrachalar. Hammasi CSS yoki kichik canvas (kutubxonasiz), brend ranglarida va matn uchun markazi bo‘sh. G‘oya — Aceternity UI va Magic UI.
Aurora foni
DS banneri, taqdimot muqovasi va hero uchun tasdiqlangan fon: oqib o‘tuvchi xira ranglar va belgi atrofida oq maydon. Brendga qotirilgan — faqat Light: sahifa Dark rejimga o‘tsa ham, aurora yorug‘ qoladi; Dark versiya yo‘q.
Formalar
Forma — foydalanuvchi bilan suhbat. Har bir maydonda ko‘rinib turadigan yorliq, kerak bo‘lsa izoh va tuzatish yo‘lini aytadigan xato matni bo‘ladi. Maydon tugma bilan bir balandlikda: md maydon 44 px — lg tugma, sm maydon 40 px — md tugma. Tuzilma va o‘lchamlar — Untitled UI asosida, maydon ko‘rinishi — dizayner taklifi (Rahimjon Gaziyev, 29.09.2026).
Shu raqamga SMS orqali tasdiqlash kodi keladi
Raqam to‘liq emas: yana 5 ta raqam kiriting
--eco-text-secondary. Yorliq, maydon va izoh orasi — 6 px. Ixtiyoriy maydonga “(ixtiyoriy)” deb yozing — majburiylarga yulduzcha shart emas.md) yoki 40 px (sm), pill — radius --eco-field-radius-affix; ko‘p qatorli textarea — 20 px (--eco-field-radius-multiline), matn 16 px. Chegara yo‘q — maydonni fon ajratadi: odatda --eco-bg-secondary; kulrang yuzada (karta ichida avtomatik) --eco-bg-primary, soyasiz. Prefiks/suffiksli maydon — pill (pastda «Input guruhi»).--eco-brand-button (qalinligi --eco-field-focus-w), oraliqsiz, maydon radiusi bo‘yicha — input, textarea, select, OTP, input guruhi, qidiruv, combobox, sana va chat maydonida bir xil. Xatoli maydonda halqa --eco-focus-ring-error — doimiy, fokussiz ham.--eco-text-placeholder. Yozish boshlanishi bilan yo‘qoladi, shuning uchun yorliq o‘rnini bosmaydi.--eco-text-tertiary, maydonga aria-describedby bilan bog‘lanadi.--eco-text-error-primary. Maydonda aria-invalid="true" turadi, atrofida doimiy 1,5 px --eco-focus-ring-error halqa chiqadi.| O‘lcham | Balandlik | Ichki oraliq | Matn | Yonidagi tugma | Qayerda |
|---|---|---|---|---|---|
sm · .eco-input--sm | 40 px | 8 / 14 px | 16 / 24 | md · 40 px | Filtr paneli, jadval ustidagi qidiruv, zich admin ekranlar |
md · standart | 44 px | 10 / 16 px | 16 / 24 | lg · 44 px | Formalar, mobil ekranlar, ro‘yxatdan o‘tish |
Matn ikkala o‘lchamda 16 px — iOS fokusda sahifani kattalashtirmaydi. Maydon va tugma bir qatorda tursa, o‘lchamni juftlab oling: balandlik teng chiqadi.
O‘zgartirib bo‘lmaydi
Domen to‘liq emas: dilnoza@mail.uz kabi yozing
Domen to‘liq emas: dilnoza@mail.uz kabi yozing
Promokod qo‘llandi: −15%
Avval kursni tanlang
Odatda chegara yo‘q — halqa faqat fokusda va xatoda chiqadi: fokus — maydon atrofida 1,5 px --eco-brand-button, xato — doimiy 1,5 px --eco-focus-ring-error (xato va xato + fokus bir xil ko‘rinadi). Hover — to‘ldirilgan maydonda fon bir pog‘ona to‘qroq; bo‘sh maydon (placeholder) o‘zgarmaydi. Disabled — butun maydon 50 % xira, halqasiz (tugma bilan bir qoida).
Kuzgi qabul: 6 ta yo‘nalish
Natija yozish davomida yangilanadi
Kamida 8 ta belgi: harf va raqam
300 belgigacha
Kuzgi qabul: 6 ta yo‘nalish
Natija yozish davomida yangilanadi
Kamida 8 ta belgi: harf va raqam
300 belgigacha
Select — native <select>: chevron .eco-input-wrap ichidagi oxirgi ikonka, qidiruv ikonkasi — birinchi. Ikonka bosishni to‘smaydi. Parol maydonida oxirgi element — ko‘rsatish tugmasi .eco-input-reveal (aria-pressed, belgi eye ↔ eye-off); maydon disabled bo‘lsa, tugma ham disabled.
Ikonka 20 px, --eco-fg-quaternary, chetdan 16 px; ikonkali maydonda matn 44 px dan boshlanadi. Textarea kamida 128 px, radiusi 20 px (pill emas), pastga cho‘ziladi.
SMS kod shu raqamga keladi
Bir oylik to‘lov
Lotin harflari, raqam va chiziqcha
3 dan 12 oygacha
SMS kod shu raqamga keladi
Bir oylik to‘lov
Lotin harflari, raqam va chiziqcha
3 dan 12 oygacha
100 dan oshmasin
100 dan oshmasin
Prefiks/suffiks — maydon ichida pill; faqat vazifasi bor (tanlanadigan/bosiladigan) qism alohida fon oladi; ikonka — fonsiz; ajratuvchi chiziq yo‘q. Maydon — bitta yumaloq yuza: 44 px (.eco-input-group--sm — 40 px), radius --eco-field-radius-affix (pill); ichki pill chetdan 6 px, balandligi maydondan 12 px kam. Fon kontekstdan: oq yuzada maydon --eco-bg-secondary, ichki pill --eco-bg-primary_alt; kulrang yuzada (karta ichida avtomatik yoki .eco-input-group--on-grey) maydon --eco-bg-primary, pill --eco-bg-secondary. Tanlov — select.eco-input-group__select, tugma — .eco-input-group__btn (--icon — faqat ikonka; telefonda ikonkali tugma nomi yashirinadi). Statik ikonka (globus, qulf, xat) — .eco-input-group__addon--icon, --eco-fg-quaternary, qidiruv ikonkasi kabi. Statik matn («%», «.pdp.uz») — pill; fonsiz kerak bo‘lsa — .eco-input-group__addon--plain.
100 dan oshmasin
100 dan oshmasin
Matnli qo‘shimcha — maydonning ikkinchi <label> i: bosilsa maydon fokus oladi, ekran o‘quvchi uni nom bilan birga o‘qiydi. Select bo‘lsa, guruhga role="group" va aria-labelledby, select’ga aria-label qo‘ying. Fokus — butun guruh atrofida 1,5 px --eco-brand-button (oddiy maydon bilan bir xil); klaviaturada ichki pill (select, tugma) ham shunday halqa oladi. Xato — guruh atrofida doimiy 1,5 px --eco-focus-ring-error halqa va pastda ikonkali xato matni.
indeterminate holati.role="switch".Input <label> ichida — matn ham bosiladi. Yorliq 14 px / 500, izoh — <small> ichida, --eco-text-tertiary; md o‘lchamda ikkalasi 16 px. Checkbox va radio ko‘rinishi, o‘lchamlari va holatlari — pastdagi «Checkbox va radio: anatomiya» blokida. Switch — Untitled UI o‘lchamlari, ko‘rinishi — dizayner taklifi (Rahimjon Gaziyev, 29.09.2026). Belgining o‘zi 16–20 px, shuning uchun mobilda qator balandligi kamida 40 px bo‘lsin.
--md). Chiziqsiz (r107): bo‘sh — neytral fon; tanlangan — to‘la brend tugma rangi (--eco-brand-button: Light #00B533, Dark limon) va markazda --eco-brand-on-button nuqta 6 / 8 px.--eco-brand-button, galochka --eco-brand-on-button: chiziq 10 % o‘lchamdan, uchlari yumaloq. Qisman — xuddi shu qalinlikdagi chiziqcha..eco-check--round 24 px, --lg 28 px — telefonda ro‘yxat, rasm va avatar ustida bir nechtasini tanlash (Figma «Check Box» 24/28). Galochka chizig‘i 1,5/18. --media — rasm ustida: oq 45 % fon va yengil soya (och rasmda ham ko‘rinsin), halqasiz.--ctl-off-bg.--eco-focus-ring. Disabled — fon --eco-bg-disabled, belgilangani kulrang --eco-fg-disabled + fon rangidagi galochka, yorliq --eco-text-disabled. Xato — bo‘sh fon xato rangida (24 %).--ctl-on: var(--btn-p-fg): fon va nuqta tugma matni rangida. Ma’lumot rangi (kalendar) — --ctl-on, --ctl-off-bg, --ctl-mark.--eco-duration-base, --eco-ease-standard), radio nuqtasi 0 dan to‘liq o‘lchamgacha kattalashadi. prefers-reduced-motion — darhol.<label>.| Boshqaruv | Qachon | Namuna |
|---|---|---|
| Checkbox | Bir nechta mustaqil tanlov yoki bitta rozilik; natija forma yuborilganda qo‘llanadi | Qiziqishlar, shartlarga rozilik |
| Radio | 2–5 variantdan bittasi, hammasi ko‘rinib turadi | Dars vaqti |
| Radio-karta | Variantga izoh yoki narx kerak — butun karta bosiladi, ichida o‘sha radio | O‘qish formati |
| Yumaloq checkbox | Telefonda ro‘yxat, rasm yoki avatar ustida bir nechtasini belgilash | Fayllarni tanlash |
| Switch | Darhol kuchga kiradigan sozlama — «Saqlash»ni kutmaydi | Bildirishnomalar |
Bitta radio va bitta checkbox: bo‘limlar o‘z belgisini chizmaydi, rangni --ctl-* o‘zgaruvchilari bilan beradi. Geometriya — Figma «Telegram Design System» (Telegram 7.8.1 asosidagi norasmiy to‘plam, «Selection Controls») nisbatlari, ranglar — PDP tokenlari; Telegram ko‘ki va ikonkalari olinmagan (art direktor, 07.10.2026).
Katak — .eco-input (42 × 44 px, raqam 18 px / 600): fon, fokus, xato va disabled holati maydon bilan bir xil. Oltita katak 3 + 3 guruhda, orada ajratgich — kodni o‘qish va aytish oson. Ajratgich ixtiyoriy: ixcham shaklda 6 katak ketma-ket, izohsiz.
Birinchi katakda autocomplete="one-time-code" — telefon SMS’dagi kodni o‘zi taklif qiladi; hammasida inputmode="numeric". Raqam yozilgach fokus keyingi katakka o‘tadi, Backspace — oldingisiga, ← → — kataklar bo‘ylab; to‘liq kod (nusxa yoki avto-to‘ldirish) birinchi katakdan tarqaladi. Taymer paytida tugma aria-disabled, qolgan vaqt — yonidagi matn. Xatoda har katakda aria-invalid="true", pastki qator xato matniga aylanadi.
inputmode="numeric" raqamli klaviaturani ochadi, autocomplete saqlangan ism va raqamni beradi.| Vaziyat | Matn |
|---|---|
| Majburiy maydon bo‘sh | Ism va familiyangizni kiriting |
| Telefon to‘liq emas | Raqam to‘liq emas: 9 ta raqam kerak, masalan 90 123 45 67 |
| Email xato | Email’da “@” belgisi yo‘q: dilnoza@mail.uz kabi yozing |
| Fayl katta | Fayl 8 MB — 5 MB gacha bo‘lishi kerak. Siqib, qayta yuklang |
| SMS kod mos emas | Kod mos kelmadi. Qayta kiriting yoki yangi kod so‘rang |
| Server javob bermadi | Ulanishda muammo. Ma’lumotlaringiz saqlandi — birozdan so‘ng qayta yuboring |
Slayder
Slayder taxminiy son yoki oraliq uchun: narx, chegirma, ovoz balandligi. Aniq son kerak bo‘lsa — maydon. Asosiy ko‘rinish — bitta tutqich, qadam nuqtalari va qiymat pufagi; ikki tutqichli diapazon va shkala — qo‘shimcha variant. Shakl — dizayner taklifi (Rahimjon Gaziyev, 29.09.2026), ranglar — brend tokenlaridan.
| Qism | O‘lcham | Token |
|---|---|---|
| Sarlavha | 24 px: yorliq 14 / 500, qiymat 14 / 500 o‘ngda | .eco-label, --eco-text-primary |
| Trek | 20 px, pill, halqasiz; sarlavhadan 4 px | --eco-bg-tertiary; kulrang kartada --eco-bg-primary |
| To‘ldirish | Tutqichni 2 px bilan o‘raydi; brend rangi, ikkala rejimda bir xil | --eco-slider-fill |
| Tutqich | 24 × 16 px, pill, oq, halqasiz; yengil soya, qorong‘ida soyasiz | --eco-color-white |
| Qadam nuqtasi | 3 px, har qadamda, opacity 17 %; to‘ldirishda oq, och to‘ldirishda qora | --eco-fg-quaternary, qorong‘ida --eco-fg-tertiary; to‘ldirishda --eco-slider-mark |
| Qiymat pufagi | 28 px, burchak 12, matn 12 / 20; tutqich ustida, strelka 10 px; halqasiz, faqat soya | --eco-bg-primary, qorong‘ida --eco-bg-secondary; matn --eco-text-primary |
| Shkala | 12 / 20, trekdan 4 px pastda (ixtiyoriy) | --eco-text-tertiary |
To‘ldirish — dizayndagi brend rangi, Light va Dark’da bir xil (har brendning o‘z rangi: yashil, limon, sariq, teal, ko‘k yoki feruza). Trek, tutqich va pufak atrofida chiziq yo‘q — faqat soya. Qiymat doim matnda (sarlavha va pufak), shuning uchun och to‘ldirishning trekka nisbatan past kontrasti ma’noni yo‘qotmaydi. Kulrang karta ichida trek sahifa fonini oladi: yorug‘da oq, qorong‘ida qora.
| O‘lcham | Trek | Tutqich | Qayerda |
|---|---|---|---|
| Qalin (asosiy) | 20 px | 24 × 16, oq | media va ovoz, narx filtri, katta sozlamalar |
Ingichka --thin | 6 px | 18 px doira, oq | forma ichida, ilova paneli, shrift testeri, vazifa xossalari |
Hover’da ko‘rinish o‘zgarmaydi — kursor «qo‘l» bo‘ladi. Fokus — tutqich atrofida 2 px --eco-focus-ring, oradan 2 px oraliq; xatoda trek halqasi --eco-border-error_subtle, fokus halqasi --eco-focus-ring-error, izoh o‘rnida xato matni. Disabled: to‘ldirish --eco-fg-disabled, matn --eco-text-disabled, soya yo‘q; guruh ildizida aria-disabled="true", bitta tutqichda .is-disabled. JS bo‘lmasa .eco-range ishlating — bitta tutqichli native slayder, to‘ldirishni brauzer chizadi.
| Klaviatura tugmasi | Natija |
|---|---|
| ← ↓ / → ↑ | Bir qadam kamayadi / oshadi |
| PageDown / PageUp | Oraliqning 10% i qadar |
| Home / End | Eng kichik / eng katta qiymat |
| Tab | Keyingi tutqichga o‘tadi |
Har tutqich — <input type="range">: rol, aria-valuenow, min va max brauzerdan keladi, skript aria-valuetext ga birlikni qo‘shadi. Diapazonda guruh yorlig‘i aria-labelledby bilan, har tutqichda o‘z nomi (aria-label: «Eng kam», «Eng ko‘p»). Tutqichlar bir-birini kesib o‘tmaydi.
<div class="eco-slider eco-slider--steps" data-eco-slider style="--sl-hi: .6; --sl-steps: 10">
<div class="eco-slider__head">
<label class="eco-label" for="volume">Ovoz balandligi</label>
<output class="eco-slider__value" for="volume" aria-live="off">60%</output>
</div>
<div class="eco-slider__control">
<span class="eco-slider__track" aria-hidden="true"></span><span class="eco-slider__fill" aria-hidden="true"></span>
<input class="eco-slider__input" type="range" id="volume" min="0" max="100" step="10" value="60" data-suffix="%">
<span class="eco-slider__tip" aria-hidden="true">60%</span>
</div>
</div>Beyjlar va statuslar
Beyj obyektning holati yoki toifasini qisqa aytadi. Rang shoshilinchlikni bildiradi, ma’noni esa so‘z beradi — shuning uchun beyj hech qachon so‘zsiz bo‘lmaydi. Statuslar lug‘ati barcha PDP mahsulotlari uchun bitta — brend faqat ranglarni almashtiradi.
.eco-badgeNeytral. Tugagan yoki faqat ma’lumot uchun — e’tibor talab qilmaydi.
--successJarayon davom etmoqda yoki muvaffaqiyatli bajarildi — hammasi joyida.
--warningJarayon davom etmoqda yoki foydalanuvchidan harakat kerak.
--infoNavbat boshqa tomonda — foydalanuvchidan hech narsa kerak emas. Ko‘k — faqat holat beyji va nuqtasida (--eco-fg-info-primary); toifa va doska ranglarida ko‘k yo‘q.
--errorJarayon to‘xtadi yoki muammo bor. Sababini yoniga yozing.
--brandOch brend tusi — “Tavsiya” kabi belgilar uchun. Bu status emas, nuqta qo‘yilmaydi.
--solidPDP qo‘shimchasi: to‘liq fon va matn — --eco-badge-solid-bg / -fg komponent tokenlaridan (standart — brend fill va uning siyohi). Faqat “Yangi” uchun, kartada bittadan ko‘p emas.
.eco-badgeNeytral. Tugagan yoki faqat ma’lumot uchun — e’tibor talab qilmaydi.
--successJarayon davom etmoqda yoki muvaffaqiyatli bajarildi — hammasi joyida.
--warningJarayon davom etmoqda yoki foydalanuvchidan harakat kerak.
--infoNavbat boshqa tomonda — foydalanuvchidan hech narsa kerak emas. Ko‘k — faqat holat beyji va nuqtasida (--eco-fg-info-primary); toifa va doska ranglarida ko‘k yo‘q.
--errorJarayon to‘xtadi yoki muammo bor. Sababini yoniga yozing.
--brandOch brend tusi — “Tavsiya” kabi belgilar uchun. Bu status emas, nuqta qo‘yilmaydi.
--solidPDP qo‘shimchasi: to‘liq fon va matn — --eco-badge-solid-bg / -fg komponent tokenlaridan (standart — brend fill va uning siyohi). Faqat “Yangi” uchun, kartada bittadan ko‘p emas.
| Tur | --graystandart | --brand | --success | --warning | --error |
|---|---|---|---|---|---|
Pill.eco-badge | Neytral | Brend | Muvaffaqiyat | Ogohlantirish | Xato |
Badge--badge | Neytral | Brend | Muvaffaqiyat | Ogohlantirish | Xato |
| Tur | --graystandart | --brand | --success | --warning | --error |
|---|---|---|---|---|---|
Pill.eco-badge | Neytral | Brend | Muvaffaqiyat | Ogohlantirish | Xato |
Badge--badge | Neytral | Brend | Muvaffaqiyat | Ogohlantirish | Xato |
--sm · 22 pxFaolFaolZich jadval, avatar va teg yonidamd · 24 px · standartFaolFaolJadval, ro‘yxat, karta--lg · 28 pxFaolFaolSahifa sarlavhasi yonida.eco-badge — standart tur, burchak to‘liq yumaloq. Holat va belgi: karta, ro‘yxat, sahifa sarlavhasi.--badge — burchak 6 px (--lg da 8 px). Jadval va zich ma’lumot ichida, 12 px burchakli tugma va maydonlar yonida. Bitta mahsulotda pill yoki badge — bittasini tanlang.| O‘lcham | Balandlik | Matn | Yon oraliq: pill · badge | Burchak: badge |
|---|---|---|---|---|
--sm | 22 px | text-xs 12/18 · 500 | 8 · 6 px | 6 px |
| md · standart | 24 px | text-sm 14/20 · 500 | 10 · 8 px | 6 px |
--lg | 28 px | text-sm 14/20 · 500, tepa va past 4 px | 12 · 10 px | 8 px |
<!-- Untitled UI → PDP
type: pill-color → .eco-badge · color → --badge
size: sm → --sm · md (standart) · lg → --lg
color: gray (standart) · --brand · --success · --warning · --error; PDP: --solid -->
<span class="eco-badge eco-badge--success eco-badge--dot">Faol</span>
<span class="eco-badge eco-badge--badge eco-badge--sm eco-badge--error eco-badge--dot">Muddati o‘tgan</span>
<span class="eco-badge eco-badge--dot">Arxiv</span>
<span class="eco-badge eco-badge--solid">Yangi</span>Nuqta “bu vaqt o‘tishi bilan o‘zgaradi” degani: Faol → Yakunlangan. Toifa esa obyektning doimiy xususiyati: Oflayn, 8 oy. Toifa beyjiga nuqta qo‘ymang, statusdan nuqtani olib tashlamang. Holat qatorning o‘ng chetida, toifalar sarlavha ostida turadi; foydalanuvchidan harakat kerak bo‘lsa, havola va muddat holat ostida.
Nuqtasiz beyj — toifa yoki metrika. Metrika — son va o‘lchov birligi: “8 kun”, “12 dars”, ball soni. U o‘zgarib turadi, lekin holat emas: ma’lumot beradi, harakat so‘ramaydi — shuning uchun nuqta qo‘yilmaydi. Guruh, sinf yoki oqim nomi — toifa.
Status ranglari band: yashil — “hammasi joyida”, to‘q sariq — “jarayonda”, ko‘k — “kutmoqda”, qizil — “muammo”. Yo‘nalish, fan yoki formatni holat tokenlari bilan bo‘yab bo‘lmaydi, shuning uchun toifaning o‘z to‘plami bor — dizayner bergan avatar xilma-xillik ranglari (--eco-cat-*): qora, yashil, ko‘k, teal, qizilmatn rangi, yashil, to‘q yashil, kulrang, limon — EcoSystem’ning o‘z to‘plami, ko‘k va qizil yo‘q. Vazifasi bitta — bir-biriga o‘xshash narsalarni ro‘yxatda ajratish. Yashil va qizil holat ranglariga o‘xshaydi — bu ochiq savol, dizayner hal qiladi; shu paytgacha toifa beyjida nuqta bo‘lmaydi va yonida doim so‘z turadi.
Bitta kartada ikki xil beyj: chapda toifa (rangli, nuqtasiz), pastda status (semantik rang, nuqtali). Toifaning rangi ro‘yxatni tez o‘qishga yordam beradi, statusnikida esa ma’no bor. Rang kerak bo‘lmasa, toifa neytral .eco-badge bilan qoladi — “Onlayn”, “6 oy” kabi umumiy teglar shunday beriladi.
| Beyj | Sinf | Yorug‘: fon · matn | Qorong‘i: fon · matn |
|---|---|---|---|
| Data Science | --cat-black | black 12 % · black | neutral-50 18 % · neutral-50 |
| Mobil dasturlash | --cat-green | #00A603 12 % · qora 20 % | #39AB37 18 % · oq 20 % |
| Frontend | --cat-blue | #0055FF 12 % · qora 10 % | #5B92FF 18 % · oq 25 % |
| Backend | --cat-teal | #26A49D 12 % · qora 30 % | #61C5BD 18 % · tusning o‘zi |
| UI/UX dizayn | --cat-red | #C80000 12 % · qora 10 % | #FF604F 18 % · oq 25 % |
| Frontend | --cat-blue | green-950 12 % · qora 10 % | green-400 18 % · oq 25 % |
| Backend | --cat-teal | neutral-500 12 % · qora 30 % | neutral-300 18 % · tusning o‘zi |
| UI/UX dizayn | --cat-red | lime-800 12 % · qora 10 % | lime 18 % · oq 25 % |
Jadval — qat’iy xarita: yo‘nalish bilan rang shu yerda bog‘lanadi. Fon — tusning 12 % i (qorong‘ida 18 %), matn — o‘sha tus qoraga yoki oqqa aralashtirilgan (color-mix), foizi har tusda o‘ziniki: matn kontrasti yorug‘da 5,8–6,2 : 1 (qora 14,4 : 1), qorong‘ida 5,2 : 1 dan yuqori.matn kontrasti yorug‘da 4,8–9,7 : 1 (qora 14,4 : 1), qorong‘ida — uchala karta fonida ham 4,5 : 1 dan yuqori. Sinf nomi (--cat-blue, --cat-red) — slot: EcoSystem’da u to‘q yashil va limon.
--eco-cat-* tusida; success, warning, error — faqat holat uchun. Toifaning yashil va qizili holatga o‘xshaydi: holat beyjlari bor ro‘yxatda avval qora, ko‘k va teal oling.qora, to‘q yashil (blue) va kulrang (teal) oling..eco-badge bilan bering.<!-- toifa: rangli, nuqtasiz · status: semantik, nuqtali --> <span class="eco-badge eco-badge--cat-blue">Frontend</span> <span class="eco-badge eco-badge--badge eco-badge--sm eco-badge--cat-black">Data Science</span> <span class="eco-badge eco-badge--success eco-badge--dot">Qabul ochiq</span> // 1) ro‘yxat ma’lum — qat’iy xarita: yangi toifa qo‘shilsa, eskilari o‘z rangida qoladi const CAT = { frontend: 'blue', backend: 'teal', uiux: 'red', mobile: 'green', data: 'black', }; // 2) ro‘yxat ochiq (teg, ko‘nikma, ism) — nomdan barqaror hash, tasodif yo‘q const TINTS = ['black', 'green', 'blue', 'teal', 'red']; function tint(name) { let h = 0; for (const ch of name.trim().toLowerCase()) h = (h * 31 + ch.codePointAt(0)) >>> 0; return TINTS[h % TINTS.length]; } // har ikkalasida ham natija — sinf nomi el.className = 'eco-badge eco-badge--cat-' + (CAT[id] || tint(name));
| Beyj | Sinf | Ma’nosi | Qayerda |
|---|---|---|---|
| Faol | --success --dot | Jarayon davom etmoqda, hammasi joyida. | Guruh, obuna, vakansiya |
| Qabul ochiq | --success --dot | Yozilish mumkin. Qabul yopilishi bilan beyj olib tashlanadi. | Kurslar va yo‘nalishlar |
| To‘langan | --success --dot | To‘lov qabul qilindi. Summa va chek havolasi yonida turadi. | To‘lov, buyurtma |
| Bajarildi | --success --dot | Topshiriq bajarildi va qabul qilindi. Baho yoki natija yonida turadi. | Uy vazifasi, test, topshiriq |
| Kutilmoqda | --info --dot | Navbat bizda: ariza ko‘rib chiqilmoqda. Foydalanuvchidan hech narsa kerak emas. | Qabul arizasi, ishga ariza |
| Tekshiruvda | --warning --dot | Topshirildi, navbat tekshiruvchida. Foydalanuvchidan hech narsa kerak emas; natija chiqqach — “Bajarildi” yoki qaytarish sababi. | Topshirilgan vazifa, hujjat |
| To‘lov kutilmoqda | --warning --dot | Navbat foydalanuvchida. Yoniga doim harakat va muddat qo‘ying: “To‘lash · 25.09 gacha”. | Kurs to‘lovi, buyurtma |
| Muddati yaqin | --warning --dot | 3 kun yoki kamroq qoldi. Aniq sanani yoniga yozing. | Uy vazifasi, to‘lov, ariza |
| Yakunlangan | .eco-badge --dot | Muvaffaqiyatli tugadi, endi e’tibor talab qilmaydi. Kulrang — faol narsalar ro‘yxatda ajralib tursin. | Tugagan kurs, yopilgan tanlov |
| Qoralama | .eco-badge --dot | Hali e’lon qilinmagan, faqat muallif ko‘radi. | Vakansiya, dars |
| Nofaol | .eco-badge --dot | Vaqtincha to‘xtatilgan, qayta yoqish mumkin. “Arxiv” dan farqi — ro‘yxatda qoladi. | Akkaunt, guruh, obuna |
| Bekor qilindi | --error --dot | To‘xtatildi. Kim va nima uchun bekor qilganini yoniga yozing. | Buyurtma, dars, guruhga yozilish |
| Muddati o‘tgan | --error --dot | Muddat o‘tib ketdi. Endi nima qilish kerakligini yoniga yozing. | To‘lov, uy vazifasi |
| Yangi | --solid | Status emas, belgi. 14 kundan keyin avtomatik olib tashlansin. | Katalogdagi yangi kurs, yangi loyiha |
| Tavsiya | --brand | Status emas, belgi. Bir ro‘yxatda ko‘pi bilan bitta. | Katalogdagi kurs, mahsulot |
| Arxiv | .eco-badge --dot | Faqat o‘qish uchun, ro‘yxatlardan yashirilgan. Eng past ahamiyat. | Eski guruh, o‘chirilgan e’lon |
So‘zni o‘zgartirmang: “Faol” hamma loyihada “Faol” — “Aktiv”, “Ishlayapti” yoki “Active” emas. Rang guruhi ham o‘zgarmaydi: yashil — faqat “hammasi joyida”. Yangi status kerak bo‘lsa, avval shu jadvalga qo‘shing.
--eco-badge-solid-bg, standart — brend fill), matn — rejim siyohida. Status — o‘z semantik rangida.--brand — och brend tusi, faqat “Tavsiya” uchun. Brend rangi yashil bo‘lsa, u --success ga juda yaqin — ularni nuqta va so‘z ajratadi: status doim nuqtali, belgi — nuqtasiz. Brend fondagi matn rangini brend tokeni beradi (--eco-text-primary_on-brand): oq yoki qorani qo‘lda tanlamang.
Yo‘nalish
Enter — qo‘shish. O‘quvchi profilidagi ko‘nikmalar.
--eco-bg-secondary (kulrang kartada oq), matn sm 500, balandlik 32 px (xs tugma bilan bir xil).<button aria-pressed>. Bir guruhda bir nechtasini tanlash mumkin; tanlanganlar soni va “Tozalash” yonida turadi. Hech narsa tanlanmasa, “Tozalash” yashiriladi..eco-segment yoki tab ishlating..eco-badge: u bosilmaydi va bosiladigandek ko‘rinmasligi kerak.--xs--smmd--lg
--xl
--2xl
avatar-04avatar-14avatar-13avatar-01avatar-07Rasm foydalanuvchi id sidan hisoblanadi (barqaror hash), shuning uchun Dilnoza hamma joyda — ro‘yxatda, guruhda, izoh ostida — bir xil ko‘rinadi. Avatar ma’no bermaydi: u na status, na rol — yoniga doim ism yozing.
| O‘lcham | Sinf | Initsial | Holat nuqtasi | Qayerda |
|---|---|---|---|---|
| 24 px | --xs | text-xs · 12 | 6 px | Izoh muallifi, zich ro‘yxat, guruh |
| 32 px | --sm | text-sm · 14 | 8 px | Jadval qatori, sarlavhadagi profil |
| 40 px | standart | text-md · 16 | 10 px | Ro‘yxat, xabar, loyiha almashtirgich |
| 48 px | --lg | text-lg · 18 | 12 px | Karta sarlavhasi, mentorlar ro‘yxati |
| 56 px | --xl | text-xl · 20 | 14 px | Profil kartasi |
| 64 px | --2xl | display-xs · 24 | 16 px | Profil sahifasi, reyting |
--xs … --2xl; style="--s: …" bilan o‘z o‘lchamingizni yaratmang: shrift va holat nuqtasi shkaladan chiqib ketadi.--brand): ikki harf, semibold. Odamlar uchun initsialli zaxira yo‘q: rasm yuklanmasa — ikonka avatari. Brend avatarlari — Avatarlar (avatar istisnosi).alt=""; ism yo‘q bo‘lsa, ism alt ichida.aria-label da.aria-label="Bildirishnomalar: 3 ta yangi".eco-avatar__status: avatarning 25 % i, o‘ng pastki burchakda, atrofida fon rangidagi 1,5 px halqa. Yashil — onlayn, sariq — band, ichi bo‘sh doira — oflayn. Fonga nisbatan kontrast kamida 3:1.Beyjlar va statuslar
--eco-chip-accent-bg / -fg (standart — brend aksenti va uning siyohi), chegarasiz.<span>. Tarixga olib borsa, u tugma yoki havola bo‘ladi va fokus halqasini oladi.Avatarlar
Avatar — foydalanuvchining kichik belgisi. Odamlar — 3D avatar (fon rangi rasmning o‘zida); loyiha va agent (AI-mentor, bot, tizim, guruh) — brend tusidagi yaxlit doirada initsial yoki ikonka. Fon doim rangli: gradient (xira shar) va kulrang avatar yo‘q.
Light
010203040506070809101112131415162432404864onlaynguruhDark
010203040506070809101112131415162432404864onlaynguruhOdam — 3D avatar: 16 ta rasm (turli yosh, soch, ko‘zoynak, teri rangi, ro‘mol). Fon rangi rasmning o‘zida — Light va Dark rejimda bir xil, tus tanlanmaydi; doira shaklini .eco-avatar--3d beradi. Joriy foydalanuvchi ham — 3D avatar.
Rasmlar — alohida fayl (/ds/assets/avatars/avatar-01…16.webp, 192 px, fon bilan, har biri ~2,5 KB), loading="lazy". Manba: Figma Community, muallif Arthur Belfort, CC BY 4.0 — atributsiya: /ds/assets/avatars/README.md.
<span class="eco-avatar eco-avatar--3d" aria-hidden="true">
<img src="/ds/assets/avatars/avatar-04.webp" alt="" width="40" height="40" loading="lazy" decoding="async">
</span>
// rasm — foydalanuvchi profilda tanlaydi; tanlamagan bo‘lsa — id dan barqaror hash (pick — pastdagi namunada)
const PICS = Array.from({ length: 16 }, (_, i) => String(i + 1).padStart(2, '0'));
img.src = '/ds/assets/avatars/avatar-' + (user.avatar || pick(PICS, user.id)) + '.webp';
el.className = 'eco-avatar eco-avatar--3d';Light
--tint--tint--tint--tint--accent--inverseDark
--tint--tint--tint--tintLoyiha belgisi (initsial) va odam emas agentlar — AI-mentor (#i-sparkles), bot (#i-bot), tizim, guruh (#i-users) — --tint: brend tusidagi yaxlit doira (--eco-avatar-tint-bg, shaffof emas), initsial va ikonka brend rangida (--eco-avatar-tint-ink). Bitta sinf oltita brendda ishlaydi. Gradient yo‘q.
EcoSystem: tus — malachite 15 %, Light’da yashil #00B533 belgi, Dark’da limon. Loyiha belgisi uchun yana limon doira (--accent, limon 50 %) yashil initsial bilan va qora doira (--inverse, #1F1F1F) limon initsial bilan.
Academy: tus — yashil 15 %, belgi yashil #00B533; Dark rejimda yorqinroq yashil.
Online: Academy bilan bitta — tus yashil 15 %, belgi yashil #00B533; Dark rejimda yorqinroq yashil.
School: tus va belgi — ko‘k #0055FF (Dark rejimda belgi school-blue-300).
University: tus va belgi — teal #26A49D, ikkala rejimda.
Junior: tus va belgi — moviy #00CDDA.
Light
Dark
Har bir odam — joriy foydalanuvchi ham — 3D avatar (16 rasm); guruh, bot va tizim — brend tusidagi ikonka avatari (--tint + #i-users, #i-bot). Initsialli va kulrang zaxira yo‘q. Rasm foydalanuvchi id sidan hisoblanadi (barqaror hash), tasodifiy emas: bir odam hamma joyda bir xil ko‘rinadi.
| Token | Vazifa | Light | Dark |
|---|---|---|---|
--eco-avatar-tint-bg · -tint-ink | Agent va loyiha avatari: brend tusidagi fon va brend rangidagi belgi | ||
--eco-avatar-accent-* · -inverse-* | Faqat EcoSystem: limon va qora doira |
O‘lcham — .eco-avatar shkalasi (--xs 24 … --2xl 64, Beyjlar va statuslar); kadrdagi o‘lcham — --36: 36 px, initsial 12/20, Inter 500, ikonka 16 px.
aria-hidden="true", ism doim yonida matn bilan.--3d). AI-mentor, bot, tizim va guruh — brend tusidagi ikonka avatari (--tint).prefers-reduced-motion ga bog‘liq narsa ham yo‘q.<!-- odam (joriy foydalanuvchi ham): 3D avatar --> <span class="eco-avatar eco-avatar--36 eco-avatar--3d" aria-hidden="true"><img src="/ds/assets/avatars/avatar-07.webp" alt="" width="36" height="36" loading="lazy" decoding="async"></span> <!-- agent: AI-mentor · bot · guruh; loyiha belgisi — initsial (brend tusi) --> <span class="eco-avatar eco-avatar--36 eco-avatar--tint" aria-hidden="true"><svg class="eco-icon"><use href="#i-sparkles"/></svg></span> <span class="eco-avatar eco-avatar--36 eco-avatar--tint" aria-hidden="true"><svg class="eco-icon"><use href="#i-bot"/></svg></span> <span class="eco-avatar eco-avatar--36 eco-avatar--tint" aria-hidden="true"><svg class="eco-icon"><use href="#i-users"/></svg></span> <span class="eco-avatar eco-avatar--36 eco-avatar--tint" aria-hidden="true">AG</span> // tanlov — foydalanuvchi id sidan barqaror hash (har chizilganda tasodifiy emas) function pick(list, id) { let h = 0; for (const ch of String(id)) h = (h * 31 + ch.codePointAt(0)) >>> 0; return list[h % list.length]; }
Kartalar
Karta bitta obyekt — loyiha, kurs, ko‘rsatkich yoki e’lon — haqidagi ma’lumotni bir joyga yig‘adi. Burchak 24 px, chiziq va soya yo‘q — dizayner taklifi (Rahimjon Gaziyev, 28.09.2026); tuzilma Untitled UI asosida; qoidalar — barcha PDP mahsulotlari uchun taklif.
1 200 000 so‘moyiga
Yozilish| Qism | Token / sinf | Qiymat |
|---|---|---|
| Burchak | --eco-radius-4xl | 24 px |
| Ichki oraliq | --eco-spacing-3xl | 24 px |
| Fon | --eco-bg-secondary | Soya va chiziq yo‘q; chegara 1 px transparent |
| Yuqori qator | .eco-badge | Toifa va holat, 2–3 ta |
| Sarlavha | .eco-card__title | 20/30, ko‘pi bilan 2 qator |
| Meta | .eco-card__meta | 14/20, --eco-text-tertiary |
| Qismlar orasi | --eco-spacing-lg | 12 px |
| Amal | .eco-btn (md) | 40 px, pastki qatorda, bitta asosiy |
Ichki oraliq, qatorlar tartibi, sarlavha va harakat qoidalari — taklif, Untitled UI asosida; burchak 24 px va chiziqsiz ko‘rinish — dizayner taklifi (Rahimjon Gaziyev, 28.09.2026). Kartadagi tugma — md (40 px), telefonda ham: kartalar ro‘yxati zich interfeys emas. xs (32 px) va sm (36 px) faqat zich jadval va panellarda, tugmalar orasi kamida 8 px bo‘lsa.
--raised--raisedKurs kartalari matni har xil uzunlikda, lekin narx va tugma bir chiziqda — karta flex-ustun, pastki qator margin-top: auto. Narx har doim “so‘m” va davr bilan: “oyiga”, “1-oy uchun”.
15 080
+8,4%
1 836
+12%
3,2%
+0,6 f.p.
Delta rangi yo‘nalishni emas, ma’noni ko‘rsatadi: qarzdorlar ulushi 0,6 foiz punktga (f.p.) o‘ssa — qizil. Bo‘sh karta — kulrang fon, ikonka, bir qator izoh va bitta harakat; batafsil qoidalar “Holatlar” bo‘limida.
.card-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr));
gap: var(--eco-spacing-3xl); /* 24 px — grid gutter */
}
/* md (768 px) dan tor ekranda — 16 px */
@media (max-width: 767px) { .card-grid { gap: var(--eco-spacing-xl); } }
.card-grid > .eco-card { display: flex; flex-direction: column; }
.card-grid .card-actions { margin-top: auto; } /* tugmalar bir chiziqda */auto-fill oling — yolg‘iz karta butun kenglikka cho‘zilmaydi.Kartalar
--eco-bg-brand-primary, chegara va soya yo‘q, ikonka i-info. Ogohlantirish va xato uchun emas — ular uchun alert (“Holatlar”).<label> ichida haqiqiy <input>). Tanlangani — och brend fon --eco-bg-brand-primary va “Tanlangan” beyji: rang yolg‘iz qolmaydi.overflow: hidden). Rasm ustiga ramka va matn qo‘ymang; odam va stok foto o‘rniga — mahsulotning o‘z tasviri./* Taklif: umumiy CSS’da hali yo‘q — shu ko‘rinishda qo‘shiladi; ranglar faol brenddan */ .eco-card--info { background: var(--eco-bg-brand-primary); border-color: transparent; } .eco-card--selectable:has(input:checked) { background: var(--eco-bg-brand-primary); } .eco-card--selectable:has(input:focus-visible) { outline: 1.5px solid transparent; box-shadow: 0 0 0 2px var(--eco-bg-primary), 0 0 0 3.5px var(--eco-focus-ring); } .eco-card--media { padding: 0; overflow: hidden; } .eco-card__media { aspect-ratio: 16 / 9; object-fit: cover; }
Eslatma bloklari
Callout — matn oqimidagi tinch to‘la yuza: kichik ikonka plitkasi, sarlavha, matn va kerak bo‘lsa bitta havola yoki tugma. Chiziq va soya yo‘q. Ohang faqat ma’no bilan tanlanadi — neytral, brend, info, ogohlantirish, xato, muvaffaqiyat; bezak uchun rang yo‘q. Brend ohangi faol brendga ergashadi, qolganlari oltita brendda bir xil.
Eslatma
Dars yozuvi 24 soat ichida shaxsiy kabinetda paydo bo‘ladi.
Foydali maslahat
Uy vazifasini dars kuni topshiring — mentor javobi tezroq keladi.
Ma’lumot
Jadval har dushanba yangilanadi.
Ogohlantirish
To‘lov muddati o‘tsa, kursga kirish vaqtincha yopiladi.
Xato
Fayl 20 MB dan katta — yuklab bo‘lmaydi.
Tayyor
Barcha topshiriqlar tekshirildi.
Eslatma
Dars yozuvi 24 soat ichida shaxsiy kabinetda paydo bo‘ladi.
Foydali maslahat
Uy vazifasini dars kuni topshiring — mentor javobi tezroq keladi.
Ma’lumot
Jadval har dushanba yangilanadi.
Ogohlantirish
To‘lov muddati o‘tsa, kursga kirish vaqtincha yopiladi.
Xato
Fayl 20 MB dan katta — yuklab bo‘lmaydi.
Tayyor
Barcha topshiriqlar tekshirildi.
Fon — semantik tint tokeni, ikonka — shu ohangning ikonka rangi, plitka — yuza ustidagi oq qatlam (Dark’da ko‘tarilgan kulrang). Sarlavha doim asosiy matn rangida, matn — o‘sha rangning 76 % i: rangli fonda kulrang hex ishlatilmaydi. Brendni almashtirib ko‘ring — faqat brend ohangi o‘zgaradi.
Yangi modul ochildi
«Ma’lumotlar tahlili» moduli endi kurs dasturida. Birinchi dars — keyingi hafta.
| Qism | Qiymat | Token |
|---|---|---|
| Yuza | burchak 16 px, ichki oraliq 16 · 20 px (ixcham — 12 px, 12 · 16 px) | --eco-radius-2xl |
| Plitka | 32 px, burchak 8 px, matndan 12 px | --eco-radius-md |
| Ikonka | 20 px, to‘la (fill) Phosphor | --eco-icon-md |
| Sarlavha | 600 · 16/24 px | --eco-text-primary |
| Matn | 400 · 14/20 px, sarlavhadan 4 px, matn rangining 76 % i | --eco-font-body |
| Harakatlar | matndan 12 px, oraliq 16 px | --eco-spacing-lg |
Eslatma.
Ariza 2 ish kunida ko‘rib chiqiladi.
--compact
__title · __body · __actions
Profil to‘ldirildi
Endi mentorlar sizga yozishi mumkin.
.eco-callout__close
.eco-callout__action yoki .eco-btn--sm. Bitta blokda bitta harakat.| Ohang | Klass | Qachon | Fon · ikonka |
|---|---|---|---|
| Neytral | .eco-callout | Qo‘shimcha izoh, havola, kontekst — ma’no yuki yo‘q. | --eco-bg-secondary |
| Brend | --brand | Maslahat, yangilik, tavsiya: «shunday qilsangiz yaxshiroq». | --eco-bg-brand-primary |
| Info | --info | Qoida, muddat, jarayon haqida faktlar. | --eco-fg-info-primary |
| Ogohlantirish | --warning | Oqibati bor shart: muddat, cheklov, qaytarib bo‘lmaydigan qadam. | --eco-bg-warning-primary |
| Xato | --error | Davom etib bo‘lmaydi: talab bajarilmagan, kirish yopiq. | --eco-bg-error-primary |
| Muvaffaqiyat | --success | Natija tasdig‘i: bosqich tugadi, hammasi tayyor. | --eco-bg-success-primary |
Eski nomlar ishlab turadi: --note → neytral, --tip → --brand, --important → --info; eski belgilash (sarlavha ichidagi doira ikonka) ham to‘g‘ri chiziladi. Yangi sahifalarda yangi nomlarni yozing.
.demo--surface) neytral callout avtomatik oq bo‘ladi; rangli ohanglar o‘z tintida qoladi.role="note", plitkaga aria-hidden="true", yopish tugmasiga aria-label. Shoshilinch xato bo‘lsa — role="alert".HTML — callout
<!-- ohang: (yo‘q) neytral · --brand · --info · --warning · --error · --success; ko‘rinish: --compact; yopish — .eco-callout__close
ikonkalar: notepad-text · sparkles · info · triangle-alert · circle-x · circle-check (-fill) -->
<div class="eco-callout eco-callout--brand" role="note">
<span class="eco-callout__icon" aria-hidden="true"><svg><use href="#i-sparkles-fill"/></svg></span>
<div class="eco-callout__content">
<p class="eco-callout__title">Yangi modul ochildi</p>
<div class="eco-callout__body"><p>Birinchi dars — keyingi hafta.</p></div>
<div class="eco-callout__actions">
<a class="eco-callout__action" href="/kurs">Dasturni ko‘rish<svg aria-hidden="true"><use href="#i-arrow-right"/></svg></a>
</div>
</div>
<button type="button" class="eco-callout__close" aria-label="Yopish"><svg aria-hidden="true"><use href="#i-x"/></svg></button>
</div>Ilova komponentlari
Tablar, progress, jadval, sahifalash, modal, bo‘sh holat va fayl yuklash — Untitled UI’ning ilova komponentlari, PDP tokenlarida. Tuzilma, o‘lcham va holatlar Untitled UI’dan olingan; rang, fokus va kontrast — PDP Design System qoidalari bo‘yicha. Har bir komponent ikki rejimda va 390 px kenglikda ishlaydi. Kanban doska va boshqa ilova bloklari — «Ilova» sahifasida.
Tab bitta sahifa ichidagi ko‘rinishlarni almashtiradi: kontent o‘zgaradi, URL va sahifa — yo‘q. Ikki shakl: underline — sahifa va karta bo‘limlari uchun, pill — kulrang trek ichida, ixcham panel va filtrlar uchun. Pill rangsiz (standart) yoki brend rangida bo‘ladi. Son (yangi vazifalar, xabarlar) tab ichidagi beyjda turadi.
| Tur | Sinf | Ko‘rinish |
|---|---|---|
| Underline | .eco-tabs | Pastda 1 px --eco-border-tertiary; tanlanmagani — --eco-tab-label (qora 70 %, qorong‘ida oq 70 %); tanlangani — --eco-tab-label-strong (sof qora, qorong‘ida oq) va 2 px chiziq: yorug‘da --eco-fg-brand-primary, qorong‘ida --eco-fg-brand-secondary. Chekka 4/12, oraliq 0; hover — faqat matn. |
| Rangsiz pill | --pill · .eco-segment | Trek --eco-bg-secondary: chekka 4/8, oraliq 2, to‘liq pill. Tanlangani — oq pill (--eco-tab-pill-bg, soya --eco-tab-pill-shadow), matn sof qora — ikkala rejimda. Pill tabdan 4 px chiqib turadi. Chegara va halqa yo‘q. |
| Teskari | --inverse | Tanlangani — qora pill (--eco-tab-inverse-bg), matn oq. |
| Brend | --brand | Tanlangani — brend pill’i: --eco-tab-brand-bg va --eco-tab-brand-fg (jadval pastda). |
| Aksent | --accent | Ikkinchi rang: --eco-tab-accent-bg va --eco-tab-accent-fg. EcoSystem — limon, Academy va Online — sariq; boshqa brendlarda --brand bilan bir xil. |
| O‘lcham | --sm · --md · --lg | Pill band: 28 · 36 (standart) · 44 · 56 px; matn Inter 500 14/20 · 14/24 · 16/24 · 18/28. Underline: 34 px (standart) va 44 px (--md). |
| Teng kenglik | --fill | Tablar konteyner enini teng bo‘lib to‘ldiradi (standart — matn eni); sig‘masa qator siljiydi. Segmentda — .eco-segment--fill, ikonka tepada — .eco-segment--stacked. |
| Ikonka bilan | .eco-icon | 16 px, yorliqdan oldin, oraliq 6; rangi — yorliq rangi. |
| Son | .eco-badge | xs 12/18; tanlangan tabda — brend rangida. |
| Fokus | :focus-visible | 2 px --eco-focus-ring, ichkariga — siljiydigan qatorda kesilmaydi. |
| Eski nomlar | --button-border · --button-gray · --button-brand | Ishlaydi: --pill, --pill, --pill --brand. Yangi kodda yangi nomlar. |
Rangli pill — shu brend juftliklari. Tanlangan tab matni doim sof qora yoki oq, dizayndagidek; 4,5 : 1 dan past juftliklar — foydalanuvchi qarori (30.09.2026), build ro‘yxatdan tashqarisini to‘xtatadi.
| Tur | Fon | Matn | Kontrast |
|---|---|---|---|
--brand | #00B533 | #FFFFFF | 2,74 : 1 · Istisno dizayndagidek, qaror 30.09.2026 |
--accent | #BDFF00 | #000000 | 17,47 : 1 · AA |
Klaviatura: ← → — qo‘shni tab, Home / End — birinchi va oxirgi, Tab — panelga o‘tish. Tab tartibida faqat tanlangan tab turadi (tabindex="0", qolganlari -1). Belgilash: role="tablist" va aria-label; har tabda role="tab", aria-selected, aria-controls; panelda role="tabpanel", aria-labelledby, tabindex="0". Filtr yoki parametr tanlovi (panel almashmaydi) — tab emas, .eco-segment. Telefonda tablar sig‘masa, qator siljiydi; 5 tadan ko‘p bo‘lsa — select.
<div class="eco-tabs" role="tablist" aria-label="Kurs bo‘limlari">
<button type="button" class="eco-tab" role="tab" id="t-1" aria-controls="p-1" aria-selected="true">Umumiy</button>
<button type="button" class="eco-tab" role="tab" id="t-2" aria-controls="p-2" aria-selected="false" tabindex="-1">
Darslar <span class="eco-badge">12</span>
</button>
</div>
<div class="eco-tabpanel" role="tabpanel" id="p-1" aria-labelledby="t-1" tabindex="0">…</div>
<div class="eco-tabpanel" role="tabpanel" id="p-2" aria-labelledby="t-2" tabindex="0" hidden>…</div>
<!-- pill: .eco-tabs--pill (+ --inverse | --brand | --accent) · o‘lcham: --sm | --md | --lg · kenglik: --fill -->Chiziq — ro‘yxat, karta, jadval va fayl qatorida. Doira — dashboard’dagi bitta asosiy ko‘rsatkich uchun. Qiymat doim raqam bilan ham yoziladi.
27 MB / 60 MB
60 MB / 60 MB
Xatolik yuz berdi. Qayta urinib ko‘ring.
| Qism | Token / sinf | Qiymat |
|---|---|---|
| Trek | --eco-bg-secondary | 8 px, radius full; kulrang yuzada (karta, fayl qatori) — --eco-bg-tertiary. Chiziqsiz. |
| To‘ldirish | --eco-brand-button | Brend maydoni rangi — tugma bilan bir xil, har brendda o‘zi. Kengligi — --v (masalan, 64%) |
| Sarlavha qatori | __head | Chapda yorliq __label va ixtiyoriy info belgisi 16 px (--eco-fg-quaternary, oraliq 8); o‘ngda foiz __value va holat belgisi __status 20 px. Chiziqdan 12. |
| Matn | .eco-progress-field | Inter 500 14/20: yorliq va foiz — --eco-text-secondary; izoh __hint — --eco-text-tertiary, chiziqdan 8 |
| Holatlar | .is-complete · .is-error | Yuklanmoqda — yuklanish belgisi .eco-loader--sm (Yuklanish); tugadi — belgi --eco-fg-brand-primary; xato — chiziq va belgi --eco-fg-error-primary, izoh o‘rnida xato xabari --eco-text-error-primary |
| Foiz o‘ngda | .eco-progress-row > b | sm 500, --eco-text-secondary; chiziqdan 12. Jadval va fayl qatorida — yorliqsiz. |
| Suzuvchi yorliq | .eco-progress-float > b | sm 500, --eco-bg-primary_alt, radius md, --eco-shadow-lg, chiziqsiz; to‘ldirish uchida, chetdan chiqmaydi. Pastda — --bottom |
| Doira | .eco-progress-circle | xxs 64 · xs 160 (standart) · sm 200 · md 240; halqa qalinligi — 6,4 · 12,8 · 14 · 15,6 px; trek va to‘ldirish — chiziq bilan bir xil tokenlar; qiymat — --p (son) |
| Doira raqami | __v | xxs — Inter 500 14/20; xs, sm, md — display-xs, -sm, -md; izoh Inter 500 xs (md’da sm), --eco-text-tertiary |
Belgilash: role="progressbar", aria-valuenow, aria-valuemin, aria-valuemax va nom — aria-labelledby (yorliqqa) yoki aria-label; izoh — aria-describedby. Holat belgisi role="status" ichida: yuklash tugaganda ekran o‘qigich yashirin matnni («Yuklash tugadi») o‘qiydi; xato xabari — role="alert". Ikkalasi sahifada oldindan turadi, JS faqat matnini almashtiradi. Aylanuvchi belgi prefers-reduced-motion da to‘xtaydi. Info belgisi — bezak; izoh kerak bo‘lsa, tugma va .eco-tooltip. Suzuvchi yorliq ekran o‘qigichdan yashiriladi — qiymat progressbar’ning o‘zida. Davomiyligi noma’lum jarayonga progress emas, skeleton yoki tugmadagi spinner — Holatlar.
<div class="eco-progress-field"> <!-- holat: .is-complete | .is-error -->
<div class="eco-progress-field__head">
<span class="eco-progress-field__label" id="pf-1">Yuklanmoqda
<svg class="eco-progress-field__info" aria-hidden="true"><use href="#i-info"/></svg></span>
<span class="eco-progress-field__value">50%
<span class="eco-progress-field__status" role="status">
<span class="eco-loader eco-loader--sm" aria-hidden="true">…</span></span></span>
</div>
<div class="eco-progress" role="progressbar" aria-labelledby="pf-1" aria-describedby="pf-1-h"
aria-valuenow="50" aria-valuemin="0" aria-valuemax="100" style="--v:50%"><span></span></div>
<p class="eco-progress-field__hint" id="pf-1-h">27 MB / 60 MB</p>
</div>
<div class="eco-progress-circle eco-progress-circle--sm" role="progressbar" aria-label="Davomat"
aria-valuenow="72" aria-valuemin="0" aria-valuemax="100" style="--p:72">
<svg viewBox="0 0 100 100" aria-hidden="true">
<circle cx="50" cy="50" r="45" pathLength="100"/><circle cx="50" cy="50" r="45" pathLength="100"/>
</svg>
<span class="eco-progress-circle__v">72%<small>Davomat</small></span>
</div>Ko‘p obyektni solishtirish va ular ustida amal bajarish uchun: o‘quvchilar, to‘lovlar, arizalar. Sarlavha, saralanadigan ustunlar, belgilash, qator amallari va sahifalash — bitta kartada.
Frontend dasturlash · sentabr oqimi
| Holat | Oxirgi dars | Amallar | |||
|---|---|---|---|---|---|
Bekzod Qodirovbekzod.q@pdp.uz |
Faol | 74% |
21.09.2026 | ||
Dilnoza Karimovadilnoza.k@pdp.uz |
Faol | 82% |
21.09.2026 | ||
Jasur Tursunovjasur.t@pdp.uz |
Qarzdor | 55% |
19.09.2026 | ||
Malika Yusupovamalika.y@pdp.uz |
Ta’tilda | 38% |
02.09.2026 | ||
Shahzoda Rahimovashahzoda.r@pdp.uz |
Faol | 91% |
20.09.2026 |
| Qism | Sinf | Qiymat |
|---|---|---|
| Karta | .eco-table-card | --eco-bg-primary, chiziqsiz va soyasiz, radius xl 12; kulrang yuzada — fon ajratadi |
| Sarlavha qatori | __head | Nom lg 600 va soni — beyj sm; izoh sm, --eco-text-tertiary; o‘ngda sm tugmalar, oraliq 12. Padding 20/24, telefonda 16. |
| Ustun sarlavhasi | th | 44 px: xs 500, --eco-text-tertiary, fon --eco-bg-secondary |
| Saralash | th[aria-sort] > .eco-table__sort | Strelka 16 px --eco-fg-quaternary: o‘sish — tepaga, kamayish — pastga; saralanmagan ustunda — ikki tomonlama belgi |
| Qator | td | Padding 16/24, sm --eco-text-tertiary; avatar (40) bilan 72 px. Asosiy katak — .eco-table__person: nom 500 --eco-text-primary, email ostida. |
| Hover va tanlov | tr | Hover — --eco-bg-primary_hover; belgilangan qator — --eco-bg-secondary |
| Belgilash | .eco-table__check | Checkbox md 20; bosish maydoni 40 × 40 (.eco-table__hit) |
| Amallar | .eco-table__actions | Tertiary ikonka tugma 40, oraliq 4; aria-label ichida obyekt nomi |
| Futer | __foot | Sahifalash; padding 12/24/16 |
| Siljish | __body | Jadval sig‘masa, faqat karta tanasi gorizontal siljiydi — sahifa emas |
Ustun sarlavhasi Untitled UI’da --eco-text-quaternary, bizda — --eco-text-tertiary: yorug‘ rejimda quaternary --eco-bg-secondary ustida 3,98 : 1 beradi, AA emas. Holat — beyj: nuqta va matn, faqat rang emas (Beyjlar). Telefonda (768 px dan tor) ko‘p ustunli jadval qatorlari kartaga aylanadi — Sahifa anatomiyasi; karta ichidagi siljish — planshet va ustuni kam jadvallar uchun. Baholar jurnali — O‘quv komponentlari.
<div class="eco-table-card">
<div class="eco-table-card__head">
<div class="eco-table-card__heading">
<h2 class="eco-table-card__title" id="st-t">
O‘quvchilar <span class="eco-badge eco-badge--sm eco-badge--brand">248 nafar</span>
</h2>
<p class="eco-table-card__desc">Frontend dasturlash · sentabr oqimi</p>
</div>
<div class="eco-table-card__actions">…</div> <!-- sm tugmalar -->
</div>
<div class="eco-table-card__body" tabindex="0" role="region" aria-labelledby="st-t">
<table class="eco-table" aria-labelledby="st-t">
<thead><tr>
<th scope="col" class="eco-table__check">
<label class="eco-table__hit">
<input type="checkbox" class="eco-check eco-check--md" aria-label="Barchasini tanlash">
</label></th>
<th scope="col" aria-sort="ascending">
<button type="button" class="eco-table__sort">O‘quvchi
<svg aria-hidden="true"><use href="#i-arrow-right"/></svg></button></th>
<th scope="col">Holat</th>
<th scope="col"><span class="sr-only">Amallar</span></th>
</tr></thead>
<tbody><tr>
<td class="eco-table__check">…</td>
<td><div class="eco-table__person">
<span class="eco-avatar" aria-hidden="true">DK</span>
<div><b>Dilnoza Karimova</b><span>dilnoza.k@pdp.uz</span></div>
</div></td>
<td><span class="eco-badge eco-badge--sm eco-badge--success eco-badge--dot">Faol</span></td>
<td><div class="eco-table__actions">…</div></td> <!-- tertiary ikonka tugmalar -->
</tr></tbody>
</table>
</div>
<div class="eco-table-card__foot">…</div> <!-- .eco-pagination -->
</div>Jadval va ro‘yxatni sahifalarga bo‘ladi. Har sahifa — haqiqiy havola (?page=5): brauzerning “Orqaga” tugmasi ishlaydi, havolani ulashsa bo‘ladi.
| Qism | Sinf / atribut | Qiymat |
|---|---|---|
| Raqam | .eco-pagination__page | 40 × 40, radius md 8, sm 500 --eco-text-quaternary; oraliq 2 |
| Hover | :hover | --eco-bg-primary_hover, --eco-text-secondary |
| Joriy sahifa | aria-current="page" | Fon --eco-bg-tertiary, halqasiz |
| Oldingi / Keyingi | .eco-btn--secondary.eco-btn--sm | Strelka va matn; birinchi sahifada “Oldingi” — aria-disabled="true" |
| Uzilish | .eco-pagination__gap | “…”, --eco-text-tertiary, aria-hidden |
| Tor konteyner | @container (max-width: 600px) | Raqamlar o‘rnida “Sahifa 5 / 10”; tugmalar faqat ikonka, 40 × 40 — matn ekran o‘qigich uchun qoladi |
| Minimal | --minimal | Chapda “Sahifa 1 / 10”, o‘ngda ikki tugma, oraliq 12 |
Ko‘rsatiladigan raqamlar: birinchi, oxirgi, joriy va uning ikki qo‘shnisi — ko‘pi bilan 7 joy, qolgani “…”. <nav aria-label> nomi sahifadagi har bir sahifalash uchun har xil bo‘lsin. Jadvalda 10 qatordan keyin sahifalash (Sahifa anatomiyasi); yangiliklar lentasi va katalogda — “Yana ko‘rsatish” tugmasi.
<nav class="eco-pagination" aria-label="Arizalar sahifalari">
<a class="eco-btn eco-btn--secondary eco-btn--sm eco-pagination__prev" href="?page=4">
<svg aria-hidden="true"><use href="#i-arrow-left"/></svg><span>Oldingi</span></a>
<ol class="eco-pagination__pages">
<li><a class="eco-pagination__page" href="?page=1">1</a></li>
<li><span class="eco-pagination__gap" aria-hidden="true">…</span></li>
<li><a class="eco-pagination__page" href="?page=5" aria-current="page">5</a></li>
…
</ol>
<p class="eco-pagination__info">Sahifa 5 / 10</p> <!-- faqat tor konteynerda ko‘rinadi -->
<a class="eco-btn eco-btn--secondary eco-btn--sm eco-pagination__next" href="?page=6">
<span>Keyingi</span><svg aria-hidden="true"><use href="#i-arrow-right"/></svg></a>
</nav>Modal ishni to‘xtatib, bitta qaror so‘raydi: tasdiqlash, o‘chirish, qisqa forma. Faqat xabar berish uchun modal ochmang — alert yoki toast yetadi (Holatlar).
Haqiqiy <dialog>, 640 px: Esc yoki “Bekor qilish” yopadi, fokus ochgan tugmaga qaytadi; xira fonli namuna — 320 px.
| Qism | Sinf | Qiymat |
|---|---|---|
| Overlay | .eco-modal-overlay, ::backdrop | --eco-bg-overlay, blur yo‘q; --blur — xira fon, 6 px |
| Panel | .eco-modal | --eco-bg-primary_alt, radius 4xl 24, --eco-shadow-xl, padding 24; chiziqsiz (ikkala rejimda) |
| Kenglik | --xs, --md, --lg, --cover, --full | 320 · 480 (standart) · 640 · 800; cover — chetdan 40, balandlik kontentga qarab; full — butun ekran; cover va full — faqat dialog’da; 640 px dan tor ekranda — 100% − 32 |
| Ikonka | .eco-featured-icon | 40, ikonka 16, halqasiz; o‘chirishda — --error |
| Sarlavha | __title | md 500 · 16/28, ikonkadan 12 pastda |
| Matn | __text | sm · 14/24, --eco-text-tertiary, sarlavhadan 8 pastda |
| Harakatlar | __actions | 20 pastda, oraliq 8, o‘ngda; tugma sm 36 · 14/20, bosish maydoni 40; 640 px dan tor ekranda ustma-ust, to‘liq kenglikda, primary tepada |
| Yopish | __close | Tertiary doira 24, xira ikonka 16, bosish maydoni 40; tepadan 16, o‘ngdan 10 |
| Paydo bo‘lish | eco-modal-in | 8 px ko‘tariladi, 200 ms, --eco-ease-emphasized; “Harakatni kamaytirish” yoqilganda yo‘q |
<dialog> va showModal(). Brauzer fonni inert qiladi (fokus modal ichida qoladi), Esc yopadi, yopilgach fokus ochgan tugmaga qaytadi.aria-labelledby — sarlavhaga, aria-describedby — matnga.autofocus).div bilan qurilsa hammasi qo‘lda: role="dialog", aria-modal="true", fokusni ichkarida ushlash, Esc, fonga inert va yopilgach fokusni qaytarish.24 o‘quvchi ro‘yxati o‘chiriladi.
<button type="button" class="eco-btn eco-btn--secondary"
commandfor="del-dlg" command="show-modal">Guruhni o‘chirish</button>
<dialog class="eco-modal" id="del-dlg" aria-labelledby="del-t" aria-describedby="del-d">
<form method="dialog">
<span class="eco-featured-icon eco-featured-icon--error">
<svg aria-hidden="true"><use href="#i-trash-2"/></svg></span>
<h2 class="eco-modal__title" id="del-t">Guruhni o‘chirasizmi?</h2>
<p class="eco-modal__text" id="del-d">3-guruh va 24 o‘quvchi ro‘yxati o‘chiriladi.</p>
<div class="eco-modal__actions">
<button class="eco-btn eco-btn--tertiary" value="cancel" autofocus>Bekor qilish</button>
<button class="eco-btn eco-btn--primary-destructive" value="delete">O‘chirish</button>
</div>
<button class="eco-btn eco-btn--tertiary eco-btn--icon eco-modal__close" value="cancel" aria-label="Yopish">
<svg aria-hidden="true"><use href="#i-x"/></svg></button>
</form>
</dialog>
<!-- JS bilan: dialog.showModal() · dialog.close() · dialog.returnValue — qaysi tugma bosilgani -->Ro‘yxat yoki jadvalda ko‘rsatadigan narsa yo‘qligini aytadi va keyingi qadamni beradi. Qaysi holatda qanday matn va qaysi tugma — Holatlar bo‘limida; bu yerda komponentning o‘zi.
So‘zni qisqartiring yoki filtrlarni olib tashlang.
Shartnoma va pasport nusxasini yuklang — menejer 1 ish kuni ichida tekshiradi.
| Qism | Sinf | sm · md |
|---|---|---|
| Fon naqshi | .eco-empty__art | Bezaksiz: halqa, halo va gradient yo‘q — faqat ikonka plitkasi |
| Ikonka | .eco-featured-icon--modern | 40 · 48: --ic-tile — oq yuzada --eco-bg-secondary, kulrang yuzada oq; chiziq va soya yo‘q |
| Sarlavha | __title | md 600 · lg 600, --eco-text-primary |
| Izoh | __text | sm · md, --eco-text-tertiary; blok kengligi 352 · 512 |
| Harakatlar | __actions | Secondary va primary, oraliq 12; izohdan 24 · 32 pastda |
sm — jadval, karta va panel ichida; md — butun sahifa bo‘sh bo‘lganda. Asosiy harakat bitta; ikkinchisi faqat muqobil yo‘l bo‘lsa: “Filtrlarni tozalash” va “Topshiriq qo‘shish”. Sarlavhada so‘rovni takrorlang, izohda keyingi qadamni ayting.
<div class="eco-empty"> <!-- butun sahifa uchun: eco-empty eco-empty--md -->
<div class="eco-empty__art">
<span class="eco-featured-icon eco-featured-icon--modern eco-featured-icon--md">
<svg aria-hidden="true"><use href="#i-search"/></svg></span>
</div>
<h3 class="eco-empty__title">“Kotlin” bo‘yicha topshiriq topilmadi</h3>
<p class="eco-empty__text">So‘zni qisqartiring yoki filtrlarni olib tashlang.</p>
<div class="eco-empty__actions">
<button type="button" class="eco-btn eco-btn--tertiary">Filtrlarni tozalash</button>
<button type="button" class="eco-btn eco-btn--primary">Topshiriq qo‘shish</button>
</div>
</div>Drop zona va fayllar ro‘yxati. Zona ichida haqiqiy <input type="file"> butun maydonni qoplaydi: bosish, sudrab tashlash va klaviatura (Tab, keyin Enter yoki Space) JavaScript’siz ishlaydi. Formadagi ixcham variant — Formalar.
maket-bosh-sahifa.png
texnik-topshiriq.pdf
loyiha-arxivi.pdf
| Qism | Sinf / holat | Qiymat |
|---|---|---|
| Zona | .eco-dropzone | --eco-bg-secondary, chiziqsiz, radius xl 12, padding 16/24, oraliq 12 |
| Ikonka | .eco-featured-icon--modern --md | 40, #i-upload |
| Matn | __text, __hint | sm --eco-text-tertiary, “Yuklash uchun bosing” — 600 --eco-text-brand-secondary; izoh xs: format va hajm chegarasi |
| Hover | :hover | Fon --eco-bg-secondary_hover |
| Sudrash | .is-dragover | 2 px --eco-border-brand, fon --eco-bg-brand-primary; JS dragenter / dragleave’da qo‘yadi |
| Fokus | input:focus-visible | Butun zona atrofida 2 px --eco-focus-ring, offset 2 |
| O‘chirilgan | input[disabled] | --eco-bg-disabled, --eco-border-disabled, --eco-text-disabled; sababi izohda |
| Fayl qatori | .eco-file | Radius xl, padding 16, oraliq 12, fon --eco-bg-secondary, chiziqsiz; xato — oq fon va 2 px --eco-border-error |
| Nom va holat | __name, __meta | Nom sm 500 --eco-text-secondary; hajm sm tertiary; holat — ikonka va matn (success / error rangida) |
| Progress | .eco-progress-row | 8 px, foiz o‘ngda |
| O‘chirish | __del | Tertiary ikonka tugma 40, tepa-o‘ng burchakdan 8 |
Format va hajmni fayl tanlanishi bilan tekshiring va nima qilishni ayting: “Fayl 14 MB — 10 MB gacha siqing”. Holat faqat rangda emas: ikonka va matn bor. Yuklash tugagani va xatoni ekran o‘qigichga ayting — ro‘yxat yonida role="status" qatori; har bir foizni aytmang.
<span class="eco-label" id="up-l">Loyiha fayllari</span>
<label class="eco-dropzone">
<input type="file" class="eco-dropzone__input" multiple accept=".svg,.png,.jpg,.jpeg,.pdf"
aria-labelledby="up-l" aria-describedby="up-h" title="">
<span class="eco-featured-icon eco-featured-icon--modern eco-featured-icon--md">
<svg aria-hidden="true"><use href="#i-upload"/></svg></span>
<span>
<span class="eco-dropzone__text"><b>Yuklash uchun bosing</b> yoki sudrab olib keling</span>
<span class="eco-dropzone__hint" id="up-h">SVG, PNG, JPG yoki PDF (maks. 10 MB)</span>
</span>
</label>
<ul class="eco-files">
<li class="eco-file"> <!-- xato: eco-file is-error -->
<span class="eco-featured-icon eco-featured-icon--modern eco-featured-icon--md">
<svg aria-hidden="true"><use href="#i-file-text"/></svg></span>
<div class="eco-file__body">
<p class="eco-file__name">texnik-topshiriq.pdf</p>
<p class="eco-file__meta"><span>1,2 MB</span>
<span class="eco-file__status eco-file__status--ok">…Yuklandi</span></p>
<div class="eco-progress-row">…</div>
</div>
<button type="button" class="eco-btn eco-btn--tertiary eco-btn--icon eco-file__del"
aria-label="texnik-topshiriq.pdf faylini o‘chirish">…</button>
</li>
</ul>Grafiklar
Grafiklarning o‘z tokenlari bor: oltita toifa rangi va ikkita besh pog‘onali shkala. Birinchi seriya har doim brend rangi, qolgan beshtasi — shu brendning o‘z ranglari, qora va kulranglar; rejimni tokenning o‘zi almashtiradi. Har bir grafik bitta savolga javob beradi: bitta seriya ajratiladi, qiymat to‘g‘ridan-to‘g‘ri yoziladi, to‘r deyarli ko‘rinmaydi.
Tartib qat’iy: seriyalar --eco-chart-1 dan boshlab ketma-ket olinadi va qayta aylanmaydi. 1-seriya — faol brendning rangi (--eco-bg-brand-solid oilasi), 2–6 — shu brendning o‘z ranglari, qora va kulranglar (EcoSystem: yashil, qora, limon, kulrang). Ko‘rsatilgan brend: PDP EcoSystemPDP SchoolPDP UniversityPDP OnlinePDP Junior.
Qorong‘i rejim fon #141414
#BDFF00lime · brend15,3 : 1#F0F0F0neutral-10016,2 : 1#00C508malachite7,9 : 1#767676neutral-5004,1 : 1#C7C7C7neutral-30010,9 : 1#424242neutral-7001,8 : 1--eco-chart-seq-1…5 · kam → ko‘p--eco-chart-div-1…5 · pasayish ↔ o‘sish+12,4%−3,2%
Yorug‘ rejim fon #FFFFFF
#00B533malachite-button · brend2,7 : 1#222222neutral-90015,9 : 1#B5F500lime-light1,3 : 1#767676neutral-5004,5 : 1#C7C7C7neutral-3001,7 : 1#E9FED8brand-tint1,1 : 1--eco-chart-seq-1…5 · kam → ko‘p--eco-chart-div-1…5 · pasayish ↔ o‘sish+12,4%−3,2%
Faqat o‘z ranglari. Seriyalar — brendning o‘z ranglari, qora (Dark’da oq) va kulranglar; boshqa brend rangi (EcoSystem’da ko‘k, sariq, teal, moviy) ishlatilmaydi. Qora — asosiy rang: kulrangni faqat «boshqa» va fon uchun qoldiring. Bir-biriga yaqin ikki yashil yonma-yon turmaydi. Toifali seriya doim shu palitradan olinadi; ketma-ket shkala (yashil zina) — faqat tartiblangan kattalik uchun: issiqlik xaritasi, faollik kalendari, zichlik. Yig‘ish har bir brend va rejimda oltita seriyaning har bir juftligini tekshiradi (OKLab ΔE ≥ 0,10). Yorug‘ rejimda oq fonda limon, och kulrang va brend tusi 3 : 1 ga yetmaydi, shuning uchun rang yolg‘iz belgi emas: har bir seriya yorliq yoki to‘g‘ridan-to‘g‘ri izoh bilan chiqadi.
2026-yil, yanvar–avgust · ming kishi
| Oy | Mobil ilova | Veb-kabinet | Telegram-bot |
|---|---|---|---|
| Yanvar | 312 | 186 | 124 |
| Fevral | 298 | 204 | 138 |
| Mart | 344 | 231 | 152 |
| Aprel | 356 | 262 | 171 |
| May | 372 | 248 | 164 |
| Iyun | 318 | 276 | 158 |
| Iyul | 402 | 309 | 196 |
| Avgust | 468 | 334 | 241 |
Seriyalar tartib bilan olindi: 1 — mobil ilova, 2 — veb-kabinet, 3 — Telegram-bot. Nom va oxirgi qiymat chiziq uchida, legenda — faqat kalit. Kursorni yuriting yoki grafikni tanlab ← → (Home, End) bosing: chiziq eng yaqin oyni topadi, tooltip avval qiymatni, keyin nomni ko‘rsatadi (sichqoncha va klaviaturada bir xil). Tooltip — qo‘shimcha: har bir qiymat jadvalda ham bor.
2026-yil, yanvar–sentabr · ajratilgan: Telegram, bir yilda +18%
Instagram4 820
Telegram+18%3 960
Sayt2 740
Do‘st tavsiyasi1 380
YouTube1 150
Qo‘ng‘iroq markazi620
Ko‘rgazmalar410
Sentabr 2026 · oltita usul, jami 4 820 to‘lov
Manbalar — nominal toifa, ular seriya emas: barcha ustunlar bitta neytral rangda (--eco-fg-quaternary) fonga yumshatilgan, ostida 100% trek; hikoyadagi bittasi brend tugmasi rangida va o‘sish belgisi bilan. Nom chap ustunda, qiymat o‘ng ustunda, shuning uchun o‘q kerak emas. Donut — faqat ulush uchun va ko‘pi bilan 6 bo‘lak, har biriga to‘g‘ridan-to‘g‘ri yorliq; halqa 12px, bo‘laklar uchi yumaloq, orasida fon oralig‘i. Yettinchi usul paydo bo‘lsa — “Boshqa”ga yig‘iladi va neytral rangda chiqadi. Yaqin qiymatlarni solishtirish kerak bo‘lsa, ustun tanlang.
1–21 sentabr · hafta kuni × soat · 100% — eng faol soat
Sentabr, avgustga nisbatan · foiz · o‘q o‘rtada, 0 = o‘zgarishsiz
Ikkala shkala ham 5 pog‘ona. Ketma-ket (--eco-chart-seq-1…5) — bitta o‘lchov: issiqlik xaritasi, xarita, zichlik; 1 — eng kam, 5 — eng ko‘p. Yorug‘ rejimda qiymat ortgani sayin to‘qlashadi, qorong‘ida esa yorishadi: ikkala holatda ham eng kam qiymat fonga yaqin turadi. Qarama-qarshi (--eco-chart-div-1…5) — ikki yo‘nalish: pasayish qizilda, o‘sish yashilda, 3-pog‘ona esa nol atrofi va fonga yaqin turadi. Kamalak, qizil–yashil ketma-ket shkala va 5 tadan ortiq pog‘ona ishlatmang. Rang yolg‘iz qolmaydi: har bir qatorda ishora bilan qiymat, katakchalar uchun — kalit va jadval. Aniq son kerak bo‘lsa, jadval bering.
1 284
+12,4% (yaxshi)avgustga nisbatan
6,1%
−0,8 f.p. (yaxshi)avgustga nisbatan
1,24 mln so‘m
−3,2% (yomon)avgustga nisbatan
Katta raqam oddiy (proportional) shaklda, tabular-nums — faqat o‘q, jadval va ustunlarda. Sparkline — 12 oy, neytral chiziq (seriya emas), joriy oy nuqtasi 1-seriya rangida. Status rangi faqat farqda: rang = yo‘nalish × yaxshimi (tark etish kamaysa — yashil, to‘lov kamaysa — qizil). Muvaffaqiyat, ogohlantirish va xato ranglari holat uchun, seriya uchun emas; ular doim strelka hamda +/− bilan chiqadi.
--eco-border-tertiary, uzluksiz. Vertikal to‘r va punktir yo‘q.| Qoida | Nima qilinadi | Token |
|---|---|---|
| Tartib qat’iy | 1-seriya — har doim faol brendning rangi, qorong‘i va yorug‘ rejimda o‘z pog‘onasi bilan. Keyingilari 2, 3, … tartibida olinadi; boshqa joydan boshlanmaydi va qayta aylanmaydi | --eco-chart-1…6 |
| Faqat o‘z ranglari | 2–6 — shu brendning o‘z ranglari, qora (qop-qora emas, biroz ochroq) va kulranglar. Boshqa brend rangi (masalan, EcoSystem’da ko‘k) ishlatilmaydi; bir-biriga yaqin tuslar yonma-yon turmaydi | --eco-chart-2…6 |
| Ko‘pi bilan 6 | Yettinchi seriya bo‘lmaydi: naqsh yoki to‘g‘ridan-to‘g‘ri yorliq bering, “Boshqa”ga yig‘ing yoki ikkinchi grafikka bo‘ling | --eco-chart-6 |
| Neytral — seriya emas | Fon ustunlar, “Boshqa” va sparkline chizig‘i neytral rangda. Ular legendaga kirmaydi va seriya hisoblanmaydi | --eco-fg-quaternary |
| Ma’no faqat rangda emas | Har bir seriyada yorliq yoki to‘g‘ridan-to‘g‘ri izoh; katakchali grafikda kalit va jadval. Faqat rang bilan farqlanadigan grafik chiqmaydi | — |
| Status rangi — holat uchun | Muvaffaqiyat, ogohlantirish va xato ranglari faqat holatni (farq, ogohlantirish, xato) bildiradi. Seriya rangi sifatida ishlatilmaydi | --eco-text-success-primary, --eco-text-error-primary |
| Ketma-ket shkala | Bitta o‘lchov, 5 pog‘ona: issiqlik xaritasi, xarita, zichlik. Kamalak yo‘q | --eco-chart-seq-1…5 |
| Qarama-qarshi shkala | Ikki yo‘nalish, o‘rtasi neytral: pasayish ↔ o‘sish. Nol nuqtasi aniq ko‘rsatiladi | --eco-chart-div-1…5 |
| Element | Qoida | Token |
|---|---|---|
| Chiziq va nuqta | Chiziq 2px, uchlari yumaloq. Nuqta r = 4px va 2px fon halqasi, faqat oxirgi va tanlangan nuqtada. To‘ldirish — faqat bitta seriyali grafikda, 10% | --eco-chart-1…6, --eco-bg-primary |
| Ustun | Qalinligi 10–16px, uchlari yumaloq; to‘plangan qismlar orasida 2–3px fon oralig‘i, chiziq (stroke) yo‘q; ostida 100% trek | --eco-chart-1, --eco-fg-quaternary |
| Katakcha | Issiqlik xaritasida 4px yumaloq, orasida 2px fon oralig‘i; 5 pog‘ona, har biri 20% | --eco-chart-seq-1…5 |
| To‘r va asos | 1px, faqat gorizontal, uzluksiz | --eco-border-tertiary, --eco-border-secondary |
| Matn | O‘q yozuvi — IBM Plex Mono, 11px, oy nomlari katta harfda, tabular-nums; yorliq 13px, qiymat 15px/600. Matn hech qachon seriya rangida emas | --eco-text-tertiary, --eco-text-primary |
| Fon | Grafik --eco-bg-primary ustida turadi. Yorug‘ rejimda limon, och kulrang va brend tusi oq fonda ham 3 : 1 dan past — ular yorliq bilan chiqadi | --eco-bg-primary, --eco-bg-secondary |
| Raqam formati | 1 284 · 12,4% · 1,24 mln so‘m · 21.09.2026 | — |
Grafiklar
PDP Hackathon · 4-jamoa · 100 ballik
Frontend · 3-guruh · 100 ballik
9-A · Matematika · 5 ballik
Dasturiy injiniring · 2-kurs · 100 ballik · GPA
Python asoslari · 12-oqim · 100 ballik
Robototexnika · 2-guruh · 3 yulduzli
Sentabr–yanvar · ulush, % · ajratilgan: a’lo
| Oy | A’lo | Yaxshi | Qoniqarli |
|---|---|---|---|
| Sentabr | 38% | 44% | 18% |
| Oktabr | 41% | 43% | 16% |
| Noyabr | 45% | 41% | 14% |
| Dekabr | 43% | 42% | 15% |
| Yanvar | 49% | 39% | 12% |
To‘plangan ustun — bir butunning qismlari vaqt yoki guruh bo‘yicha qanday o‘zgarayotganini ko‘rsatadi. Har qator 100%; ulush va mutlaq sonni bitta grafikda aralashtirmang. Qismlar ko‘pi bilan 4 ta, tartibi hamma qatorda bir xil; hikoyadagi qism asosda (chapda), uning qiymati qator oxirida yoziladi, qolgani — jadvalda. Qismlar — toifa palitrasidan, tartib bilan: 1 — brend rangi, 2 — qora (Dark’da oq), 3 — limon (Dark’da malaxit). Ketma-ket shkala (yashil zina) qismlar uchun ishlatilmaydi: yonma-yon yaqin yashillar ajralmaydi. Ustun 14px, qismlar orasida 3px fon oralig‘i, tashqi uchlari yumaloq.
Yanvar–dekabr · mln so‘m · ustun balandligi — tushum
2025+13,6% (yaxshi)
479 mln so‘m
Yillik tushum, 2024-yilga nisbatan
2025+2,1 f.p. (yaxshi)
59%
Foyda ulushi — tushumdan
| Oy | Tushum | Foyda | Xarajat |
|---|---|---|---|
| Yanvar | 34 | 20 | 14 |
| Fevral | 28 | 15 | 13 |
| Mart | 45 | 29 | 16 |
| Aprel | 30 | 17 | 13 |
| May | 34 | 19 | 15 |
| Iyun | 30 | 17 | 13 |
| Iyul | 38 | 22 | 16 |
| Avgust | 41 | 24 | 17 |
| Sentabr | 52 | 32 | 20 |
| Oktabr | 47 | 28 | 19 |
| Noyabr | 44 | 26 | 18 |
| Dekabr | 56 | 35 | 21 |
Bitta seriyali maydon — 10% to‘ldirish; to‘plangan maydonda qatlamlar orasida 2px fon oralig‘i. Kursor yoki ← → bilan har nuqta o‘qiladi.
Ustun uchi 6px yumaloq, asosi to‘g‘ri; qo‘shni ustunlar va qismlar orasida 2–3px fon oralig‘i. Hikoyadagi bitta ustun — brend rangida, qolgani neytral.
Raqam ekranga kirganda noldan sanaladi; animatsiya o‘chirilgan bo‘lsa — darhol yakuniy qiymat.
GitHub uslubidagi to‘r: ustun — hafta, qator — kun; 4 pog‘ona ketma-ket shkaladan, bo‘sh kun — fon tusi. Kichik ekranda to‘r gorizontal aylanadi va oxirgi haftadan boshlanadi.
Bosqichlar bitta rangda; o‘tishdagi foiz — oldingi bosqichga nisbatan. Eng katta yo‘qotish — hikoya: sarlavha yoki izohda ayting.
Pufak maydoni — uchinchi o‘lchov (radius emas, maydon proporsional). Radar — 3–8 o‘q va ko‘pi bilan 2–3 seriya; aniq taqqoslash uchun ustun yaxshiroq.
Treemap — ierarxik ulush, katak maydoni qiymatga teng; tus kuchi tartibni ko‘rsatadi. Sharshara — boshlang‘ich va yakuniy jami orasidagi har bir o‘zgarish: o‘sish brend rangida, kamayish qarama-qarshi shkalaning qizilida.
Ikkinchi o‘q — faqat birliklar har xil bo‘lganda (dona va %). O‘ng o‘q 0 dan boshlanmaydi — buni ostidagi izohda ayting; har bir o‘q sarlavhada o‘z seriyasi bilan nomlanadi.
Progress — bitta raqam va maqsad; vertikal chiziq — vaqt bo‘yicha qayerda bo‘lishimiz kerak edi. Bullet — o‘lchagich o‘rniga: ixcham, qatorma-qator taqqoslanadi.
Tasma qalinligi — oqim hajmi. Barcha tasmalar neytral, hikoyadagi bitta yo‘l — brend rangida; tugun nomi va qiymati yonida.
Bosqich — trek, bajarilgan qismi brend rangida; muhim sana — romb. «Bugun» chizig‘i — yagona vertikal chiziq.
Reyting — ustunli grafikning ro‘yxat shakli: o‘rin raqami, nom, ustun va qiymat bir qatorda. Yetakchi — brend rangida.
Taqdimot va bannerlar uchun: bitta raqam — PDP Display 500, harf oralig‘i −4%; grafik raqamni bezamaydi, uni isbotlaydi (100 katakli to‘r, trend, ikki ustun).
Karta o‘lchami uch holatda ham bir xil — sahifa sakramaydi. Yuklanish skeleti grafik shaklini takrorlaydi; xato — sabab va bitta harakat.
Chip turlari
Chip — kichik, ixcham boshqaruv elementi. Ko‘rinishi bir xil (neytral fon, pill yoki 8 px burchak, chiziqsiz), lekin vazifasi to‘rt xil: amalni taklif qiladi, ro‘yxatni filtrlaydi, kiritilgan qiymatni ko‘rsatadi yoki tayyor javobni beradi. Vazifani aralashtirmang — bitta qatorda bitta tur. Asos — .eco-chip (Beyjlar va statuslar); holatni bildiruvchi yorliq — beyj, chip emas. G‘oya — Material Design 3 «Chips» va Apple HIG «Token fields».
Rich tooltip va submenyu
Oddiy tooltip bir qator nom beradi (Tugmalar). Atama, cheklov yoki hisob-kitob tushuntirilishi kerak bo‘lsa — rich tooltip: sarlavha, ikki-uch qator matn va ixtiyoriy havola. Menyuda bir guruh amal juda ko‘payib ketsa — ichma-ich submenyu, faqat bir daraja. G‘oya — Material Design 3 «Rich tooltips», «Cascading menus» va Apple HIG «Popovers».
Buyruqlar va qidiruv
Ko‘p bo‘limli CRM’da sichqoncha bilan menyu izlash sekin. Buyruqlar paneli (⌘K) sahifa, o‘quvchi va amalni bitta qidiruvda topadi; combobox — uzun ro‘yxatdan qidirib tanlash; Kbd — tezkor tugma yorlig‘i. G‘oya — shadcn/ui (Command, Combobox, Kbd), shakl va ranglar — PDP tokenlari.
Sana tanlash
Dars kuni, topshiriq muddati va hisobot davri — CRM’ning eng ko‘p ishlatiladigan maydonlari. Bitta kalendar uch ko‘rinishda: ochiq kalendar, maydon ostida ochiladigan sana tanlash va tayyor davrli oraliq tanlash. G‘oya — shadcn/ui (Calendar, Date Picker), ranglar — PDP tokenlari: tanlangan kun — brend maydoni va oq raqam, oraliq — brend tusi.
Panellar va qatlamlar
Ro‘yxatdan chiqmasdan yozuvni ko‘rish (Sheet), ism ustida qisqa ma’lumot (Hover card), o‘ng tugma menyusi (Context menu) va bir nechta fon jarayonining natijasi (Toast to‘plami). G‘oya — shadcn/ui (Sheet, Drawer, Hover Card, Context Menu, Sonner), yuzalar — .eco-menu va .eco-modal bilan bir xil: oq qatlam, soya, chiziqsiz.
Ma’lumotlar jadvali
CRM’ning asosiy ekrani — o‘quvchi, to‘lov va guruhlar ro‘yxati. Jadval kartasiga (Ilova komponentlari) asboblar qatori qo‘shiladi: qidiruv, faset filtrlar (har qiymat yonida soni), ko‘rinadigan ustunlar, tartiblash, qatorlarni tanlash va ommaviy amallar paneli. G‘oya — shadcn/ui Data Table.
Jadval sozlamalari
CRM xodimi kun bo‘yi jadval bilan ishlaydi: kimga ko‘p qator bir ekranda kerak, kimga — keng va o‘qishga oson. Uch zichlik, qator ichida qo‘shimcha ma’lumot (sahifani tark etmasdan) va gorizontal aylantirishda joyida qoladigan birinchi ustun. Qidiruv, filtr, ustunlar tanlovi va ommaviy amallar — Ma’lumotlar jadvali. G‘oya — IBM Carbon (Data table), Gravity UI (TableColumnSetup).
Bu bo‘lim hozircha faqat EcoSystem uchun yozilgan. Ko‘rish uchun yuqoridagi brend almashtirgichda EcoSystem’ni tanlang — boshqa loyihalarga tasdiqdan keyin qo‘shiladi.
Tuzilma komponentlari
Kurs dasturi, papka tuzilmasi, ro‘yxatdan o‘tish bosqichlari, e’lonlar tasmasi va ikki-uch ustunli ish joyi — beshta komponent. G‘oya — shadcn/ui (Accordion, Carousel, Resizable) va Magic UI (File Tree); hammasi klaviatura bilan boshqariladi, «Harakatni kamaytirish»da darhol o‘zgaradi.
Maydon naqshlari
Maydon anatomiyasi va holatlari — Formalarda (yorliq, izoh, xato matni, prefiks va suffiks). Bu yerda — ulardan yig‘iladigan naqshlar: maydon ichidagi tugma va holat, belgi hisoblagichi, maydonlar guruhi va yo‘nalishi, joyida va umumiy xatolar, tekshiruv vaqti. G‘oya — shadcn/ui (Input Group, Field) va Apple HIG «Entering data».
Teg maydoni
Kurs teglari, filtrdagi yo‘nalishlar, CRM’dagi mijoz belgilari — bir nechta qiymat, har biri maydon ichida teg bo‘lib turadi. Yozganda ro‘yxat qisqaradi, yo‘q qiymatni yaratish mumkin, Backspace oxirgi tegni olib tashlaydi. Bitta qiymat — combobox. G‘oya — IBM Carbon (Multiselect), Gravity UI (Select multiple), Atlassian (Select).
Bu bo‘lim hozircha faqat EcoSystem uchun yozilgan. Ko‘rish uchun yuqoridagi brend almashtirgichda EcoSystem’ni tanlang — boshqa loyihalarga tasdiqdan keyin qo‘shiladi.
Asboblar paneli
Matn muharriri, jadval va fayl ko‘rinishida bir xil turdagi amallar bir qatorga yig‘iladi. Toggle guruh — bir nechta mustaqil yoqib-o‘chirgich, split tugma — asosiy amal va uning variantlari, asboblar paneli — ≤ 3 guruh, menyu paneli — faqat hujjat muharrirlarida. Bitta tanlov (ko‘rinish, davr) — segment, birlashgan tugmalar — Tutash tugmalar guruhi. G‘oya — shadcn/ui (Toggle Group, Menubar), M3 (Split button, Toolbars), Apple HIG (Toolbars).
Joyida tahrirlash
CRM’da ko‘p ish — bitta qiymatni tuzatish: guruh nomi, telefon, izoh, holat. Buning uchun alohida forma ochilmaydi: qiymat shu joyda tahrirlanadi va Enter bilan saqlanadi. Bir nechta maydonli sozlamalar sahifasida esa o‘zgarish boshlanishi bilan yuqorida saqlash paneli chiqadi — «Saqlash» va «Bekor qilish» doim bir joyda. Qaror qoidasi — Sozlamalar («darhol yoki Saqlash»), chiqishda so‘rash — Modallik. G‘oya — Atlassian Design System (Inline edit) va Shopify Polaris (Contextual save bar).
Holat ko‘rsatkichlari
Holat faqat rang bilan aytilsa, rangni ajratmaydigan odam (har 12 erkakdan biri) va qora-oq chop etilgan hisobot uni ko‘rmaydi. Shuning uchun holat — uch belgi birga: shakl (ikonka yoki geometrik belgi), rang va so‘z. Beyjlar va statuslar lug‘ati — Beyjlar va statuslar, bildirishnomalar — Bildirishnomalar markazi. G‘oya — IBM Carbon (Status indicators) va Atlassian (Lozenge).
Saqlangan ko‘rinishlar
CRM ro‘yxatini har kuni bir xil filtr bilan ochishadi: «Qarzdorlar», «Bugungi arizalar», «Mening guruhlarim». Saqlangan ko‘rinish — ro‘yxat ustidagi tab: filtr, saralash va qidiruv bitta nom ostida. Filtr o‘zgarsa, «Ko‘rinishni saqlash» chiqadi. Jadval asboblari va ommaviy amallar — Ma’lumotlar jadvali, qidiruv — Qidiruv. G‘oya — Shopify Polaris (Index filters).
Raqam maydoni
Chiptalar soni, guruhdagi o‘rinlar, dars soati, chegirma foizi — chegarasi ma’lum kichik son. Odam raqamni yozishi ham, −/+ bilan bittadan o‘zgartirishi ham mumkin. Katta yoki aniq son (narx, telefon, karta) — oddiy maydon. G‘oya — IBM Carbon (Number input) va Gravity UI (NumberInput).
Bu bo‘lim hozircha faqat EcoSystem uchun yozilgan. Ko‘rish uchun yuqoridagi brend almashtirgichda EcoSystem’ni tanlang — boshqa loyihalarga tasdiqdan keyin qo‘shiladi.
Baho va fikr
Kurs va dars sahifasi, tadbirdan keyingi so‘rov, o‘qituvchi kabineti — hamma joyda bir xil savol: «qanday bo‘ldi?». Yulduz bahosi kiritish va ko‘rsatish uchun, baholar taqsimoti, tavsiya shkalasi (NPS, 0–10) va bir bosishli «Foydali bo‘ldimi?». Katta so‘rovnoma — Ilova Forms. G‘oya — Ant Design va MUI (Rating), shadcn/ui (Questionnaire), Vercel Geist (Feedback).
Bu bo‘lim hozircha faqat EcoSystem uchun yozilgan. Ko‘rish uchun yuqoridagi brend almashtirgichda EcoSystem’ni tanlang — boshqa loyihalarga tasdiqdan keyin qo‘shiladi.
Teskari sanoq va muddat
Qabul yopilishi, ochiq eshiklar kuni, topshiriq muddati — odam ikki narsani bilishi kerak: qancha vaqt qoldi va aniq qaysi kun, soat nechagacha. Katta sanoq — landing va qabul sahifasi uchun, kichik muddat yorlig‘i — ro‘yxat, karta va kabinet uchun. Sana formati — Yozish qoidalari, tadbir sahifasi — Tadbir sahifasi.
Bu bo‘lim hozircha faqat EcoSystem uchun yozilgan. Ko‘rish uchun yuqoridagi brend almashtirgichda EcoSystem’ni tanlang — boshqa loyihalarga tasdiqdan keyin qo‘shiladi.
Video dars pleyeri
Kurs sahifasidagi dars videosi: tabiiy <video> ustida o‘z boshqaruvi — bo‘limli vaqt chizig‘i, tezlik, subtitr, sifat, to‘liq ekran, bo‘limlar ro‘yxati va dars matni, oxirida «Keyingi dars» kartasi. Klaviaturada YouTube’dagi kabi tugmalar. G‘oya — kurs platformalari va Apple HIG (Playing video).
Bu bo‘lim hozircha faqat EcoSystem uchun yozilgan. Ko‘rish uchun yuqoridagi brend almashtirgichda EcoSystem’ni tanlang — boshqa loyihalarga tasdiqdan keyin qo‘shiladi.
Galereya va ko‘ruvchi
Tadbir suratlari, talabalar ishlari, portfolio: rasmlar to‘rda, bosilganda to‘liq ekran ko‘ruvchida — oldingi va keyingi, hisoblagich, izoh, kattalashtirish. Orqa sahifa ko‘ruvchi ochiqligida ishlamaydi, yopilganda fokus bosilgan rasmga qaytadi. G‘oya — Gravity UI (FilePreview), Polaris (MediaCard), Apple Photos.
Bu bo‘lim hozircha faqat EcoSystem uchun yozilgan. Ko‘rish uchun yuqoridagi brend almashtirgichda EcoSystem’ni tanlang — boshqa loyihalarga tasdiqdan keyin qo‘shiladi.
Kirish sahifalari
Kirish sahifasi — mahsulotning birinchi ekrani: bitta vazifa, bitta asosiy tugma, ortiqcha narsa yo‘q. Asosiy usul — telefon va SMS kod, e-pochta va parol — ikkinchi yo‘l. Ikki maket: kulrang fonda markaziy karta (ilova, CRM) va ikki ustun (brend paneli bilan — sayt, kabinet). G‘oya — shadcn/ui Blocks (login, signup), maydonlar — Formalar, matnlar — Yozish qoidalari.
Ariza: savol sahifalari
Kursga yozilish, qabul yoki grant arizasi — bir uzun forma emas, qisqa savol sahifalari: har sahifada bitta savol (yoki bir-biriga bog‘liq 2–3 maydon), oxirida «Javoblarni tekshiring» va tasdiq sahifasi. Odam bitta narsaga e’tibor beradi, xato kamayadi, mobilda o‘qish oson. G‘oya — GOV.UK Design System (Question pages, Check answers, Confirmation pages, Dates); maydonlar — Formalar, xatolar — Maydon naqshlari, ko‘p kunlik ariza — Vazifalar ro‘yxati.
Kurs sahifasi
To‘liq sahifa shabloni — faqat mavjud komponentlardan yig‘ilgan: majburiy bloklar (shapka, hero, raqamlar, CTA band, footer), akkordeon, 3D avatarlar, kartalar, tugmalar va fon naqshlari. Tartib — Sahifa anatomiyasi dagi «Landing» maketi. Namuna 1280 px kenglikda chiziladi va kichraytiriladi; «To‘liq ekranda ochish» — kontent kengligida jonli sahifa, «Telefon» — 390 px.
Qabul sahifasi
Qabul yoki grant e’loni — odam bir qarashda bilishi kerak: nima qilish kerak, qaysi hujjat va qachongacha. Sahifa uch savolga javob beradi: qadamlar (Qadam-baqadam yo‘l), hujjatlar (Vazifalar ro‘yxati) va muddatlar (vaqt chizig‘i). Asosiy tugma — ariza oqimiga.
Tadbir sahifasi
Ochiq eshiklar kuni, master-klass yoki hakaton — bitta sahifa: qachon, qayerda, nima bo‘ladi va qanday yoziladi. Dastur — vaqt chizig‘i (Faollik qoidasi: uzuq, och, tugun markazidan), ro‘yxat — Formalar, xarita o‘rnida — token plitkasi (tashqi xarita va rasm yo‘q).
Yangiliklar va maqola
Ikki bog‘liq shablon: ro‘yxat (asosiy material, filtr chiplari, kartalar, doira sahifalash) va maqola (720 px o‘qish ustuni, iqtibos, muallif, ulashish, o‘xshash materiallar). Muqovalar — token maydonlari va fon naqshlari, tashqi rasm yo‘q; chiplar — Chip turlari, sahifalash — Ilova komponentlari.
Aloqa va filiallar
Odam bu sahifaga bitta savol bilan keladi: «qayerga yozay yoki boray?». Avval tezkor kanallar (telefon, Telegram, e-pochta), keyin filiallar — shahar filtri, «hozir ochiq» holati, manzil va mo‘ljal, — oxirida murojaat formasi. Holat — Holat ko‘rsatkichlari, filtr — Chip turlari, forma — Formalar.
Xato sahifalari
Eski havola, server nosozligi, rejali texnik ishlar yoki ruxsat yo‘qligi — har biriga o‘z sahifasi. Hammasi bir xil tuzilishda: shapka va footer joyida, sarlavha nima bo‘lganini aytadi, bitta jumla — sabab va keyingi qadam, pastda — davom etish yo‘llari. Bezak, hazil va «Oops» yo‘q. Kontent ichidagi xato va bo‘sh holat — Holatlar. G‘oya — GOV.UK (Page not found, Service unavailable) va Vercel Geist (Error).
Bu bo‘lim hozircha faqat EcoSystem uchun yozilgan. Ko‘rish uchun yuqoridagi brend almashtirgichda EcoSystem’ni tanlang — boshqa loyihalarga tasdiqdan keyin qo‘shiladi.
Email asoslari
Tranzaksion va axborot xatlari uchun yagona asos: 600 px ustun, jadval maketi, inline stillar va tizim shriftlari zaxirasi. Ranglar — EcoSystem tokenlaridan, build vaqtida HEX ga aylanadi; qorong‘i rejim — Apple Mail, iOS va Outlook’da o‘z palitrasi bilan, Gmail inversiyasida logotip buzilmaydi. Tayyor shablonlar — Email shablonlari, imzo — Email imzosi, tekshiruv — Email: tekshiruv. G‘oya — Good Email Code (Parcel), Litmus, Can I Email, MJML va Maizzle chiqishi.
Bu bo‘lim hozircha faqat EcoSystem uchun yozilgan. Ko‘rish uchun yuqoridagi brend almashtirgichda EcoSystem’ni tanlang — boshqa loyihalarga tasdiqdan keyin qo‘shiladi.
Email shablonlari
Ro‘yxatdan o‘tish, parol, ariza, to‘lov, dars, sertifikat, tadbir va haftalik dayjest — talaba, ota-ona va hamkor eng ko‘p oladigan xatlar. Har biri — yuborishga tayyor HTML va qo‘lda yozilgan matn varianti, o‘zbek, rus va ingliz tilida. Matnlar — namuna: ism, raqam va havolalar o‘rniga mahsulot o‘z ma’lumotini qo‘yadi ({{name}} kabi o‘zgaruvchilar — jadvalda). Asos va qoidalar — Email asoslari.
Bu bo‘lim hozircha faqat EcoSystem uchun yozilgan. Ko‘rish uchun yuqoridagi brend almashtirgichda EcoSystem’ni tanlang — boshqa loyihalarga tasdiqdan keyin qo‘shiladi.
Email imzosi
Ism, lavozim, aloqa va logotip — boshqa hech narsa: banner, iqtibos, ijtimoiy tarmoq ikonkalari va emoji yo‘q (brendbuk 7.10). Maydonlarni to‘ldiring, «Imzoni nusxalash»ni bosing va pochta dasturining imzo oynasiga qo‘ying. Har imzoning matn varianti ham bor — oddiy matnli xat va telefon uchun.
Bu bo‘lim hozircha faqat EcoSystem uchun yozilgan. Ko‘rish uchun yuqoridagi brend almashtirgichda EcoSystem’ni tanlang — boshqa loyihalarga tasdiqdan keyin qo‘shiladi.
Email: tekshiruv
Xat brauzerda emas, o‘nlab pochta dasturida ochiladi — har birining o‘z cheklovi bor. Quyidagi ro‘yxat har yangi shablon va katta o‘zgarishdan oldin bajariladi; matritsa — qaysi dasturda nimaga qarash kerakligi. DS’dagi 56 fayl build’da avtomatik tekshiriladi: hajm, role="presentation", til, mavzu uzunligi.
Bu bo‘lim hozircha faqat EcoSystem uchun yozilgan. Ko‘rish uchun yuqoridagi brend almashtirgichda EcoSystem’ni tanlang — boshqa loyihalarga tasdiqdan keyin qo‘shiladi.
Karta turlari
Karta shaklini emas, mazmuni va fonini o‘zgartiradi. Burchak 24 px va ichki oraliq 24 px har bir rolda bir xil; oddiy karta — --eco-bg-secondary, aksent karta — qora yoki brend aksenti rangida, u ekranda bittadan oshmaydi.
890 000 so‘m oyiga
Yozilish
92,4%
ishtirokchi
o‘quvchi
talaba
o‘quvchi
o‘quvchi
62%
Burchak 24 px — dizayner taklifi (Rahimjon Gaziyev, 28.09.2026). Rollar, fonlar va harakatlar — taklif. Anatomiya, o‘lchamlar va uch daraja (base, interactive, raised) “Kartalar” bo‘limida, bu yerda takrorlanmaydi.
| Rol | Mazmun | Asosiy harakat | Aksent |
|---|---|---|---|
| Kurs | Format, muddat, nom, loyiha, narx — so‘m va davr bilan | “Yozilish” — primary, pastki qatorda | Yo‘q; aksent rangi faqat tugmada |
| Dars | Holat, mavzu, vaqt, o‘qituvchi, xona yoki onlayn havola | “Darsga qo‘shilish” — secondary; dars boshlanishiga 10 daqiqa qolganda primary | “Bugun” yoki “Jonli” beyji |
| Loyiha | Loyiha avatari 52 px, nom, bir qator tavsif | Butun karta — bitta havola | Yo‘q; rangni loyiha avatari beradi |
| KPI | Ikonka, delta, katta raqam, izoh va davr | Yo‘q; kerak bo‘lsa — hisobotga havola | Delta beyji: rang ma’noni bildiradi, yo‘nalishni emas |
| E’lon | Loyiha, sana, sarlavha, 1–2 qator matn | Butun karta — maqolaga havola | Qora brend maydoni va suv belgisi; ekranda bitta |
| Mentor | Avatar 64 px, ism, yo‘nalish va tajriba, loyihalar | “Xabar yozish” — secondary | Yo‘q |
| Yutuq | Ikonka, turi, kurs nomi, sana va ball | “Yuklab olish” — aksent siyohidagi tugma | Brend aksenti foni, bitta siyoh; ekranda bitta |
| Profil | Kimligi (o‘quvchi, talaba, tinglovchi), avatar 56 px, ism, guruh yoki sinf, 2–3 ko‘rsatkich qatorlarda | “Profilni ochish” — secondary | Yo‘q; ko‘rsatkichlar oraliq bilan ajraladi — chiziq va ichki karta yo‘q |
| Progress | Davr, nom va guruh, katta foiz, progress chizig‘i, “15 / 24” hisobi | Yo‘q; kerak bo‘lsa — “Davom etish” havolasi | Chiziq brend rangida; foiz raqam bilan ham yoziladi |
| Shoshilinch | Muddat beyji, vazifa nomi, aniq muddat: “bugun, 18:00” | “Topshirish” — primary, bitta | Ogohlantirish foni, brend rangi emas; muddati o‘tgan bo‘lsa — xato rangi. Ekranda bitta |
| Ro‘yxat | Sarlavha va soni, 3–5 qator: nom va vaqt; joriy qator — oq fon | Butun ro‘yxatga havola | Yo‘q |
| Bo‘sh holat | Ikonka, nima yo‘qligi, keyingi qadam | Bitta secondary tugma | Yo‘q; kulrang fon, chegarasiz |
Yangi rol kerak bo‘lsa, avval shu o‘n ikkitasidan birini moslang. Bo‘sh, yuklanish va xato holatlari qoidalari — “Holatlar” bo‘limida.
data-theme="dark" qo‘ying — matn, havola va tugma o‘zi qorong‘i rejimga o‘tadi.--eco-brand-on-accent) — boshqa rang aksent ustida o‘qilmaydi.<!-- E’lon: qora maydon, ichida qorong‘i rejim --> <a class="eco-card eco-card--interactive eco-card--brand" data-theme="dark" href="/yangiliklar/demo-day">…</a> <article class="eco-card eco-card--accent">…</article> /* Taklif: umumiy CSS’da hali yo‘q — shu ko‘rinishda qo‘shiladi; ranglar faol brenddan */ .eco-card-list { --card-focus: var(--eco-focus-ring); } /* fokus — tashqi rejimdan */ .eco-card--brand { position: relative; overflow: hidden; background: var(--eco-color-black); } .eco-card--brand:focus-visible { --focus-c: var(--card-focus); } .eco-card--accent { --eco-text-primary: var(--eco-brand-on-accent); --eco-focus-ring: var(--eco-brand-on-accent); background: var(--eco-brand-accent); border-color: transparent; }
Frontend dasturlash
UI/UX dizayn
Kuzgi qabul ochildi
92,4%
Dilnoza Aliyeva
Frontend dasturlash
Karta turlari
Sertifikat
O‘quv dasturini tamomlagani uchun
PDP Hackathon · 4-jamoa
Frontend · 3-guruh
9-A · Matematika
Dasturiy injiniring · 2-kurs
Python asoslari · 12-oqim
Robototexnika · 2-guruh
Dildora ErgashevaRahbar
Jasur Toshpulatovmentor
Jasur Toshpulatovmentor
Jasur Toshpulatovo‘qituvchi
Jasur Toshpulatovo‘qituvchi
Jasur Toshpulatovmentor
Jasur Toshpulatovustoz
pdp.uz/verify/{ID}).Brend usullari
Nuqtali to‘r, ulanish nurlari, gradient, suv belgisi va “bloom” — EcoSystem sahifasini birinchi qarashdayoq tanitadigan beshta usul. Har biri belgining bir qismidan olingan va o‘z chegarasiga ega: chegaradan chiqsa, bezak matnga xalaqit bera boshlaydi.
PDP EcoSystem
Bitta PDP ID — sakkizta loyiha
Academy, Online, University va boshqa loyihalarga bitta PDP ID bilan kiring.
To‘r qadami belgiga bog‘langan: sahifadagi belgi 216 px bo‘lsa, X = 24 px, to‘r ham 24 px. X moduli — Figma’dagi logotip konstruksiyasidan.
| Parametr | Qiymat |
|---|---|
| Qadam | X = belgi kengligi / 9. Belgisiz joyda 16 · 24 · 32 px |
| Nuqta | 2 px; 32 px qadamda — 3 px |
| Rang | --eco-text-primary, opacity 8–16 %, asosiysi 12 % |
| So‘nish | Radial niqob (mask): to‘r bir burchakdan chiqib, chetga qarab yo‘qoladi |
| Qayerda | Hero, bo‘sh holat, bo‘lim foni, muqova |
| Qayerda emas | Jadval, forma, uzun matn, karta ichi |
green-600.PDP EcoSystem · 2026/27
Yangi o‘quv yili: sakkiz loyiha, bitta yo‘l
Ranglar va to‘xtash nuqtalari — Figma: #F2FFC7 0 % · #BDFF00 22 % · #00C508 58 % · #013A04 100 %. Kodda faqat var(--eco-gradient). Qora sarlavha 0–58 % oralig‘ida ≥ 8 : 1; to‘q uchida 1,4 : 1 gacha tushadi. Tor ekranda sarlavha gradient ostiga tushadi.
PDP University · 2026/27 o‘quv yili
PDP University · 2026/27 o‘quv yili
Rangli doira — yadro: u doim kadr ichida to‘liq qolishi kerak.
Rangli doira — yadro: u doim kadr ichida to‘liq qolishi kerak.
--eco-text-primary rangida. Rangli belgi suv belgisi bo‘lmaydi — u logotip.Tizimda “harakatni kamaytirish” yoqilgan — belgi darhol yakuniy holatda ko‘rinadi.
Sahifada bir marta: yuklanishda yoki belgi birinchi ko‘ringanda. Jami 1,2 s dan oshmaydi. Davomiylik va egri chiziqlar — Harakat bo‘limidagi tokenlar.
Brend usullari
Brend usullari
Junior brendbuki: 5.3 3D va illyustratsiya, 5.5 Naqsh
Brend usullari
Online brendbuki: 5.4 Brend elementlari va naqsh
Brend usullari
School brendbuki: 5.4 Naqsh va imzo
Brend usullari
Illyustratsiyalar
Bitta obyekt — bitta g‘oya: kitob, noutbuk, kalendar, qulf, bo‘sh quti. Shakllar brend geometriyasidan (doira, pill, halqa bo‘lagi, belgidagi nuqtalar va nurlar), chiziqsiz, ranglar — faqat tokenlar, shuning uchun Light va Dark’da o‘zi almashadi. Ular bo‘sh holat, xabar va onboarding ekranida matnni qo‘llab-quvvatlaydi — o‘rnini bosmaydi. Personaj va 3D qahramon yo‘q (brendbuk, «Foto va illyustratsiya»). Katta muqova va bannerlar uchun — 3D obyektlar. G‘oya — Atlassian, GitLab Pajamas, SAP Fiori, Wikimedia Codex, Carbon, Dropbox va Slack.
Bu bo‘lim hozircha faqat EcoSystem uchun yozilgan. Ko‘rish uchun yuqoridagi brend almashtirgichda EcoSystem’ni tanlang — boshqa loyihalarga tasdiqdan keyin qo‘shiladi.
3D obyektlar
O‘n bitta shisha shakl — halqa, prujina, shar, kub, kristall, yulduz. Ular banner, hero, video muqovasi, taqdimot, SMM va sertifikatga hajm va kayfiyat beradi; mahsulot ichidagi holatlar uchun — tekis illyustratsiyalar. Shakllar mavhum: personaj, maskot va real buyum (telefon, raketa) yo‘q. Manba — Figma Community «3D Elements Pack — 3D Shapes»; litsenziya tekshiruvi brend egasida — tashqi nashrdan oldin aniqlansin.
Bu bo‘lim hozircha faqat EcoSystem uchun yozilgan. Ko‘rish uchun yuqoridagi brend almashtirgichda EcoSystem’ni tanlang — boshqa loyihalarga tasdiqdan keyin qo‘shiladi.
Holatlar
Bo‘sh ro‘yxat, yuklanish, xato, muvaffaqiyat, oflayn va yopiq kontent — foydalanuvchi eng ko‘p adashadigan joylar. Har bir holat uchun komponent va matn qolipi bitta: nima bo‘lganini ayting va keyingi qadamni bering. Har bir ma’lumot ekranida uchtasi majburiy: skeleton, amalli bo‘sh holat va qayta urinishli xato.
Kursga yozilganingizdan keyin dars jadvali va vazifalar shu yerda chiqadi.
Kursga yozilganingizdan keyin dars jadvali va vazifalar shu yerda chiqadi.
So‘zni qisqartiring yoki filtrlarni olib tashlang. Mobil dasturlashda 4 ta kechki guruh bor.
So‘zni qisqartiring yoki filtrlarni olib tashlang. Mobil dasturlashda 4 ta kechki guruh bor.
Birinchi marta — boshlashga undang: nima paydo bo‘lishini ayting va primary tugma bering. Natija yo‘q — yordam: so‘rovni takrorlang, qanday kengaytirishni ayting, secondary tugma bering. Ikkalasida ham bitta ikonka, bitta qator izoh, bitta harakat.
Kurslar yuklanmoqda
Kurslar yuklanmoqda
Skeleton yakuniy maketni takrorlaydi: rasm, ikki qator matn, beyj. Ro‘yxat va kartalar ustiga spinner qo‘ymang — foydalanuvchi nima yuklanayotganini ko‘rmaydi; butun sahifa yoki harakat kutishi uchun — Yuklanish belgisi. Kutayotgan tugmaga aria-busy="true" va holatni aytadigan aria-label qo‘ying: “To‘lov yuborilmoqda”.
Raqam to‘liq emas: +998 dan keyin 9 ta raqam kiriting.
Raqam to‘liq emas: +998 dan keyin 9 ta raqam kiriting.
To‘lov o‘tmadi.
Kartada mablag‘ yetarli emas — 1 200 000 so‘m kerak. Boshqa karta tanlang yoki balansni to‘ldiring.
To‘lov o‘tmadi.
Kartada mablag‘ yetarli emas — 1 200 000 so‘m kerak. Boshqa karta tanlang yoki balansni to‘ldiring.
Server hozir javob bermayapti. Kiritgan ma’lumotlaringiz saqlangan — bir daqiqadan keyin qayta urinib ko‘ring.
Xato kodi 503 · 21.09.2026, 14:32
Xatoni u sodir bo‘lgan joyga eng yaqin joyda ko‘rsating. Maydon xatosi — maydon ostida, aria-invalid va aria-describedby bilan. Sahifa xatosi — kontent tepasida, role="alert". Butun ekran — faqat sahifa umuman ochilmasa; xato kodi yordam xizmatiga murojaat uchun.
Oddiy toast 4 soniya, “Bekor qilish” bo‘lsa 8 soniya turadi; hover va focus’da taymer to‘xtaydi. Ekran pastida, bir vaqtda bittadan. role="status" — ekran o‘quvchi ham eshitadi.
Oddiy toast 4 soniya, “Bekor qilish” bo‘lsa 8 soniya turadi; hover va focus’da taymer to‘xtaydi. Ekran pastida, bir vaqtda bittadan. role="status" — ekran o‘quvchi ham eshitadi.
Menejerimiz 2 ish kuni ichida +998 90 123 45 67 raqamiga qo‘ng‘iroq qiladi.
Ariza raqami: TL-20417
Menejerimiz 2 ish kuni ichida +998 90 123 45 67 raqamiga qo‘ng‘iroq qiladi.
Ariza raqami: TL-20417
Toast — orqaga qaytarsa bo‘ladigan kichik amallar uchun: saqlash, qo‘shish, o‘chirish. To‘lov, ariza, ro‘yxatdan o‘tish kabi muhim natija esa toast’da yo‘qolib ketmasin — shaklning o‘rnida qoladi va keyin nima bo‘lishini aytadi.
Internet aloqasi yo‘q.
Oxirgi saqlangan ma’lumot ko‘rsatilmoqda (14:32). Aloqa tiklansa, sahifa o‘zi yangilanadi.
Javobingiz qurilmada saqlandi — internet qaytganda o‘zi yuboriladi.
Internet aloqasi yo‘q.
Oxirgi saqlangan ma’lumot ko‘rsatilmoqda (14:32). Aloqa tiklansa, sahifa o‘zi yangilanadi.
Javobingiz qurilmada saqlandi — internet qaytganda o‘zi yuboriladi.
Siz o‘quvchi sifatida kirgansiz. Mentor huquqi kerak bo‘lsa, filial administratoriga yozing.
Yopiq elementni xira qilib yashirmang: matn kontrasti 4,5:1 dan past tushmasin. Qulf ikonkasi va “qachon ochiladi” matni yetarli.
| Holat | Komponent | Matn qolipi | Misol |
|---|---|---|---|
| Bo‘sh · birinchi marta | Ikonka + primary | Bu yerda nima bo‘ladi + birinchi qadam | “Hali kursingiz yo‘q” · Kurs tanlash |
| Bo‘sh · natija yo‘q | Ikonka + secondary | So‘rov + qanday kengaytirish | “… bo‘yicha kurs topilmadi” · Filtrlarni tozalash |
| Yuklanish | .eco-skeleton, .eco-loader--sm | Matn yo‘q; 10 s dan keyin izoh | “Odatdagidan uzoqroq davom etmoqda” |
| Maydon xatosi | .eco-field.is-error | Nima noto‘g‘ri + to‘g‘ri format | “Raqam to‘liq emas: 9 ta raqam kiriting” |
| Sahifa xatosi | .eco-alert--error | Nima bo‘lmadi. Nega. Endi nima qilish kerak. | “To‘lov o‘tmadi. Kartada mablag‘ yetarli emas…” |
| Butun ekran xatosi | Ikonka + Qayta urinish + kod | Nima bo‘lmadi + ma’lumot xavfsizmi | “Kiritgan ma’lumotlaringiz saqlangan” |
| Muvaffaqiyat · kichik | .eco-toast + Bekor qilish | Nima bajarildi, o‘tgan zamonda | “Dars jadvalga qo‘shildi” |
| Muvaffaqiyat · muhim | Joyida tasdiq | Natija + keyin nima bo‘ladi, qachon | “2 ish kuni ichida qo‘ng‘iroq qilamiz” |
| Oflayn | .eco-alert--warning | Aloqa yo‘q + nima saqlandi | “Javobingiz qurilmada saqlandi” |
| Qulf · ruxsat yo‘q | Qulf ikonkasi + sabab | Nega yopiq + qanday ochiladi | “Vazifani topshirgach ochiladi” |
| Ma’lumot | .eco-alert--brand | Nima o‘zgardi + nimaga ta’sir qiladi | “Yangi davr boshlandi: baholar qaytadan hisoblanadi” |
| Qaytarib bo‘lmaydigan amal | .eco-modal + --primary-destructive | Savol + nima yo‘qoladi + “qaytarib bo‘lmaydi” | “… o‘chiriladi. Bu amalni qaytarib bo‘lmaydi.” |
To‘lov o‘tmadi.
Kartada mablag‘ yetarli emas. Boshqa karta tanlang.
Holatlar
Ro‘yxat, jadval, grafik yoki karta ma’lumotni serverdan olsa, asosiy ko‘rinishdan tashqari uchta holat ham chiziladi va dasturlanadi: skeleton bilan yuklanish, amalli bo‘sh holat va qayta urinishli xato. Uchalasidan biri bo‘lmasa, ekran tayyor emas — maket ham, kod ham qabul qilinmaydi.
PDP Hackathon · 4-jamoa
Frontend · 3-guruh
9-A · Matematika
Dasturiy injiniring · 2-kurs
Python asoslari · 12-oqim
Robototexnika · 2-guruh
Vazifalar yuklanmoqda
PDP Hackathon · 4-jamoa
Frontend · 3-guruh
9-A · Matematika
Dasturiy injiniring · 2-kurs
Python asoslari · 12-oqim
Robototexnika · 2-guruh
Vazifalar yuklanmoqda
PDP Hackathon · 4-jamoa
Frontend · 3-guruh
9-A · Matematika
Dasturiy injiniring · 2-kurs
Python asoslari · 12-oqim
Robototexnika · 2-guruh
PDP Hackathon · 4-jamoa
Frontend · 3-guruh
9-A · Matematika
Dasturiy injiniring · 2-kurs
Python asoslari · 12-oqim
Robototexnika · 2-guruh
PDP Hackathon · 4-jamoa
Frontend · 3-guruh
9-A · Matematika
Dasturiy injiniring · 2-kurs
Python asoslari · 12-oqim
Robototexnika · 2-guruh
Aloqa uzildi. Sahifadagi boshqa ma’lumotlar ishlayveradi.
PDP Hackathon · 4-jamoa
Frontend · 3-guruh
9-A · Matematika
Dasturiy injiniring · 2-kurs
Python asoslari · 12-oqim
Robototexnika · 2-guruh
Aloqa uzildi. Sahifadagi boshqa ma’lumotlar ishlayveradi.
Yangi vazifa berilganda shu yerda ko‘rinadi.
Dars jadvali o‘zgardi
Payshanba kungi dars 19:00 ga ko‘chirildi.
Kuzgi mavsum
Yangi davr boshlandi: baholar va davomat shu davr uchun qaytadan hisoblanadi.
Baholar saqlandi
PDP Hackathon · 4-jamoa · 24 ishtirokchi
To‘lov muddati yaqin
3 kun qoldi · PDP ID — bepul
Sinxronizatsiya xatosi
Telegram bilan ulanish uzildi — xabarlar hozircha yuborilmaydi. Qayta urinib ko‘ring.
Dars jadvali o‘zgardi
Payshanba kungi dars 19:00 ga ko‘chirildi.
Kuzgi mavsum
Yangi davr boshlandi: baholar va davomat shu davr uchun qaytadan hisoblanadi.
Baholar saqlandi
PDP Hackathon · 4-jamoa · 24 ishtirokchi
To‘lov muddati yaqin
3 kun qoldi · PDP ID — bepul
Sinxronizatsiya xatosi
Telegram bilan ulanish uzildi — xabarlar hozircha yuborilmaydi. Qayta urinib ko‘ring.
Alert — yuza, ramkasiz va soyasiz, burchagi 24: ikonka, sarlavha, qisqa tavsif va ixtiyoriy CTA. Kulrang sahnada alert oq, oq sahnada — kulrang (yuza zinasi). Ohang fon bilan emas, ikonka, sarlavha va CTA rangi bilan beriladi. Ma’lumot (info) uchun alohida rang yo‘q: u faol brend rangi — .eco-alert--brand (sarlavha --eco-text-brand-secondary, ikonka --eco-fg-brand-primary). CTA: neytral alertda .eco-btn--tertiary, brend alertida .eco-btn--secondary — neytral fon va brend matni: ayrim brendlarda tugma rangi muvaffaqiyat yashiliga yaqin, bitta rang ikki ma’no bermasin; success, warning va error alertida .eco-btn--primary — rangini alert beradi. Rang faqat qo‘shimcha signal: ikonka shakli va sarlavha nima bo‘lganini o‘zi aytadi. Dizayner taklifi (Rahimjon Gaziyev, 29.09.2026). Xato — role="alert", qolganlari — role="status".
Anvar Rahimov va uning barcha baholari o‘chiriladi. Bu amalni qaytarib bo‘lmaydi.
Anvar Rahimov va uning barcha baholari o‘chiriladi. Bu amalni qaytarib bo‘lmaydi.
--primary-destructive), “Ha” emas. Ochilganda fokus “Bekor qilish”da.Komponent, o‘lchamlar va klaviatura — Ilova komponentlari → Modal.
--primary-destructive), “Ha” emas. Ochilganda fokus “Bekor qilish”da.Komponent, o‘lchamlar va klaviatura — Ilova komponentlari → Modal.
Yuklanish (Loader)
Sahifa ochilayotganda yoki harakat bajarilayotganda ko‘rsatiladigan belgi. EcoSystem’da u logotip belgisidan yig‘ilgan: o‘zak, 11 katta va 11 kichik nuqta, ingichka nurlar — nuqtalar markazga yaqinlashib-uzoqlashadi, butun belgi sekin aylanadi. Boshqa brendlarda — o‘sha nafas, faqat brend rangidagi nuqtalar. Ro‘yxat va kartalar uchun — skeleton.
Majburiy bloklar
Foydalanuvchi bir PDP loyihasidan boshqasiga o‘tganda ham o‘zini bitta uyda his qilishi kerak. Shapka, footer, hero, raqamlar, CTA, breadcrumb, qidiruv va filtr, jarayon qadamlari, savol-javob va fikr bloki har bir loyihada shu tuzilishda bo‘ladi — loyiha faqat mazmunni almashtiradi. Tablar va sahifalash — Ilova komponentlari bo‘limida. Namunalar jonli va o‘z kengligiga moslashadi; katta ekranda Mobil tugmasi ularni 390px da ko‘rsatadi.
PDP ekotizimi6 loyiha
pdp.uz — ekotizim bosh sahifasiMajburiy
aria-current.Ixtiyoriy
Mobilda
--lg).Majburiy
tel: havola), email.aria-label bilan.Ixtiyoriy
Mobilda
Frontend dasturlashni noldan o‘rganing
8 oy, haftasiga 3 dars, mentor va real loyihalar. Kurs oxirida — portfolio va ishga tavsiya.
Majburiy
h1, ≤ 2 qator.Ixtiyoriy
Mobilda
--eco-text-display-md), 3 qatorgacha.01.09.2026 holatiga · namuna raqamlar
Majburiy
Ixtiyoriy
Mobilda
Birinchi dars — bepul
Yo‘nalish tanlashda ikkilanyapsizmi? Sinov darsiga keling — mentor bilan birga qaror qilasiz.
Majburiy
--eco-bg-brand-solid), ustida faqat brend siyohi — matn va teskari tugma (--eco-text-primary_on-brand).Ixtiyoriy
Mobilda
--lg); ichki bo‘shliq 24px.PDP Hackathon · 4-jamoa
24 ishtirokchi · Katta zal · Kuzgi mavsum
Majburiy
nav aria-label="Sahifa yo‘li" ichida ol.aria-current="page".Ixtiyoriy
Mobilda
Majburiy bloklar
Natija: 24 ishtirokchi
Majburiy
role="status" bilan e’lon qilinadi; hech narsa topilmasa — “natija yo‘q” bo‘sh holati.Ixtiyoriy
Mobilda
Majburiy
aria-current="step"; tugaganlari “Bajarildi”.Ixtiyoriy
Mobilda
PDP ID — ekotizimdagi yagona hisob. Bir marta ro‘yxatdan o‘tasiz va Academy, Online, University, School hamda Junior’ga shu hisob bilan kirasiz.
Ilova yoki bank kartasi orqali, har oyning 5-sanasigacha. Kvitansiya shaxsiy kabinetda saqlanadi.
Kabinetning bosh sahifasida. Jadval o‘zgarsa, Telegram va SMS orqali xabar keladi.
Telefon raqamingizni kiriting — tasdiqlash kodi SMS orqali keladi. Kod kelmasa, 2 daqiqadan keyin qayta so‘rang.
Majburiy
details / summary yoki button[aria-expanded]; butun qator bosiladi, balandligi ≥ 48px.Ixtiyoriy
details name).Mobilda
Uch loyihaning talabalari bitta jamoada ishladi. Biz uchun eng kuchli nomzodlar shu yerdan chiqdi.
Majburiy
Ixtiyoriy
Mobilda
Sahifa anatomiyasi
Landing va’dadan harakatga olib boradi, kabinet “kimman → asosiy raqamlar → bugun nima → tafsilot” tartibida o‘qiladi, maqola esa o‘qish uchun quriladi. Sxemalar zonalar tartibi va nisbatini belgilaydi; rang va mazmun — loyihaniki.
Zonalar orasi 96px (--eco-spacing-9xl), mobilda 64px (--eco-spacing-7xl). Mobilda tartib o‘zgarmaydi: ustunlar faqat bitta ustunga tushadi. Asosiy CTA mobilda 44–48px (.eco-btn--lg yoki --xl) va to‘liq kenglikda.
--eco-bg-primary va --eco-bg-secondary almashinadi — uchinchi fon qo‘shilmaydi.max-width: 65ch — ekran qancha keng bo‘lmasin, qator 60–75 belgidan oshmaydi.Yangiliklar · 21.09.2026 · 3 daqiqa
Kuzgi qabul boshlandi: 12 yo‘nalish, 05.10 gacha
Frontend dasturlash, Backend · Node.js va UI/UX dizayn yo‘nalishlari bo‘yicha yangi guruhlar 5-oktabrdan boshlanadi. Ariza qoldirganlar bepul sinov darsiga taklif qilinadi va mentor bilan birga o‘z darajasini aniqlaydi.
Qator 60–75 belgidan oshmasa, ko‘z keyingi qatorga adashmay o‘tadi. Shuning uchun ustun kengligi ekranga emas, belgilar soniga bog‘lanadi: max-width: 65ch.
| Kenglik | Navigatsiya | Grid | Sidebar (kabinet) | Jadvallar |
|---|---|---|---|---|
| 1440xl · ≥ 1280 | To‘liq menyu, loyiha almashtirgich, UZ/RU, CTA | 12 ustun · gutter 24 · konteyner 1280 | 248px, doim ochiq | Barcha ustunlar, qator 56px |
| 1024lg · ≥ 1024 | Menyu 4 punktgacha, qolgani “Yana” ichida | 12 ustun · gutter 24 · chekka 32 | 72px: faqat ikonkalar (tugma 40px) + tooltip | Ikkinchi darajali ustunlar yashiriladi |
| 768md · ≥ 768 | Logotip, almashtirgich, burger; CTA shapkada qoladi | 8 ustun · gutter 24 · chekka 32 | Chapdan drawer, overlay bilan | Gorizontal scroll, birinchi ustun qotiriladi |
| 390< 768 | Logotip, almashtirgich belgisi va burger; til va CTA menyu ichida; 56px | 4 ustun · gutter 16 · chekka 16 | Pastki tab bar: 4–5 punkt, har biri ≥ 48px | Har qator — karta: asosiy qiymat va holat |
Breakpoint’lar — Untitled UI asosida: xs 600 · sm 640 · md 768 · lg 1024 · xl 1280 · 2xl 1536. xs va sm da ustun, gutter va chekka o‘zgarmaydi — ular komponent ichidagi moslashuv uchun. To‘liq jadval — Oraliq va shakl bo‘limida.
Sahifa anatomiyasi
Dushanba, 28-sentabr · Kuzgi mavsum
Xush kelibsiz, Rahimjon!
--eco-bg-secondary; brend maydoni yoki surat shart emas.--eco-spacing-xl … 3xl); zichroq qilmang.Interaktiv holatlar
Hover, fokus, bosilgan, tanlangan va o‘chirilgan — bu holatlar tugma, chip, ro‘yxat qatori va kartada bir xil qonun bilan ishlaydi. Material Design 3 bunga shaffof «holat qatlami» (8–16 %) beradi; PDP’da esa holat — tayyor tonal qadam: rangli maydon to‘qroq tusga, neytral maydon bir pog‘ona to‘qroqqa, fonsiz element neytral fonga o‘tadi. Yangi token yo‘q — hammasi mavjud --eco-bg-*_hover va tugma tokenlaridan.
Moslashuvchan maket
Bir xil ekran telefonda, planshetda, noutbukda va keng monitorda ochiladi, yana brauzer oynasi istalgan kenglikka toraytiriladi. Shuning uchun maket qurilma turiga emas, to‘rtta oyna sinfiga qarab quriladi: har sinfda navigatsiya turi, panellar soni va ustunlar oldindan kelishilgan. Sinflar — mavjud breakpoint’lar (Oraliq va shakl) ustidagi qoidalar, yangi qiymat emas. G‘oya — Material Design 3 «window size classes» va Apple HIG «size classes».
Yozish qoidalari
Tugma, sarlavha, xato va bo‘sh holat matni — foydalanuvchi eng ko‘p o‘qiydigan matn. U bir xil ovozda, sodda o‘zbek tilida va bir xil atamalar bilan yozilsa, odam ekranni o‘rganmaydi — tanib oladi. Qoidalar o‘zbekcha matn uchun; ruscha va inglizcha tarjima shu ma’noni saqlaydi. G‘oya — Apple HIG «Writing» va Material Design 3 «Content design».
Mikromatn kutubxonasi
Tugma, maydon, xato, bo‘sh holat, push, to‘lov va dars matnlari — o‘zbekcha (manba), ruscha va inglizcha bir qatorda, qayerda ishlatilishi, eng ko‘p uzunligi va ohangi bilan. Matnni nusxalang yoki butun kutubxonani JSON va CSV qilib oling. Ovoz va qoidalar — Yozish qoidalari, sana, son va pul — Sana, raqam va pul, imlo — Imlo va tinish belgilari. G‘oya — GOV.UK, Shopify Polaris, Atlassian va Microsoft Style Guide.
Onboarding va ruxsatlar
Yangi foydalanuvchi ilovani o‘rganish uchun emas, dars jadvalini ko‘rish yoki vazifa topshirish uchun ochadi. Shuning uchun onboarding — slaydlar to‘plami emas: standart qiymatlar bilan darhol ishlaydigan ekran, kerak joyda bitta maslahat va ixtiyoriy «boshlash ro‘yxati». Ruxsat (bildirishnoma, kamera, joylashuv) — faqat o‘sha funksiya ishlatilayotganda so‘raladi. G‘oya — Apple HIG «Onboarding» va «Privacy».
Qidiruv
Qidiruv paneli — mahsulotdagi hamma kontentga yagona kirish nuqtasi: kurs, dars, mentor, fayl. Bosilganda qidiruv ko‘rinishi ochiladi: so‘nggi so‘rovlar, takliflar va qamrov chiplari, yozilgan sari natijalar. Bo‘lim ichidagi filtr (jadval ustidagi qidiruv) — alohida, kichik maydon; buyruqlar palitrasi (⌘K) — dasturchilar va adminlar uchun alohida komponent. G‘oya — Material Design 3 «Search» va Apple HIG «Searching».
Ma’lumot kiritish
Har bir qo‘lda yoziladigan maydon — xato ehtimoli va telefon klaviaturasida bir necha soniya. Ma’lumot tizimda bo‘lsa — oldindan to‘ldiriladi, variantlar oz bo‘lsa — tanlovga aylanadi, uzun matn — o‘zi saqlanadi. Maydon anatomiyasi, holatlar va xato matni — Formalar bo‘limida; bu yerda — maydonlar orasidagi qarorlar va vaqt tanlagich. G‘oya — Apple HIG «Entering data» va Material Design 3 «Time pickers».
Modallik
Modal oyna orqadagi ekranni to‘sadi va javob kutadi. Bu kuchli vosita: muhim qaror, qisqa alohida vazifa yoki ma’lumot yo‘qolishidan himoya uchun. Qolgan hamma narsa — joyida, toast’da yoki modalsiz yon varaqda. Bu bo‘lim qaysi qatlamni tanlash va uni qanday yopishni belgilaydi; komponentlarning o‘zi — Ilova komponentlari (modal) va UI-kit bloklari (varaq). G‘oya — Apple HIG «Modality» va Material Design 3 «Dialogs», «Sheets».
Sozlamalar
Har bir yangi sozlama — kimdir bir marta qaror qilmagan savol. Shuning uchun standart qiymat ko‘pchilikka mos tanlanadi, Sozlamalar sahifasida esa faqat kamdan-kam o‘zgaradigan narsalar qoladi: profil, bildirishnomalar, til va rejim, xavfsizlik, ruxsatlar. Ro‘yxatni saralash yoki ko‘rinishni almashtirish — o‘sha ekranning o‘zida. G‘oya — Apple HIG «Settings».
Ma’lumot vizualizatsiyasi
Grafik turi ma’lumotdan emas, savoldan tanlanadi: «qancha?», «qanday o‘zgardi?», «kim ko‘proq?». Sarlavha xulosani aytadi, rang — faqat ajratish uchun, aniq qiymat kerak bo‘lsa — jadval. Palitra, grafik turlari va KPI plitka — Grafiklar bo‘limida; bu yerda — qaror va o‘qish qoidalari. G‘oya — Apple HIG (Charts, Charting data, Gauges) va Material Design 3.
Inklyuziv til
PDP o‘quvchilari — 7 yoshli boladan katta yoshdagi mutaxassisgacha, Toshkentdan Nukusgacha, o‘zbek va rus tilida, turli imkoniyat va daromad bilan. Matn, misol va rasm hech kimni chetda qoldirmasin: to‘g‘ridan-to‘g‘ri murojaat, oddiy til, faqat kerakli shaxsiy savol. Ovoz, imlo va lug‘at — Yozish qoidalari, texnik talablar — Foydalanish qulayligi. G‘oya — Apple HIG «Inclusion».
Vazifalar ro‘yxati
Qabul arizasi, grant yoki o‘qishni ko‘chirish — bir o‘tirishda tugamaydi: hujjat skaneri, to‘lov, shartnoma. Vazifalar ro‘yxati qaysi qism tayyor, qaysi biri qolganini ko‘rsatadi; odam istalgan tartibda to‘ldiradi va keyin qaytadi. Bitta o‘tirishda tugaydigan oqim uchun — Ariza: savol sahifalari, birinchi kun qadamlari — Onboarding. G‘oya — GOV.UK Design System (Task list).
Cookie va rozilik
Sayt zarur cookie’lardan tashqari (analitika, reklama) narsani faqat odam rozi bo‘lgandan keyin yoqadi. Banner — sahifa tepasida, oqim ichida (ekranga yopishmaydi), ikki teng tugma bilan; tanlovdan keyin o‘sha joyda tasdiq. Sozlamani istalgan vaqtda o‘zgartirish — footer’dagi «Cookie sozlamalari» sahifasi. Shaxsiy ma’lumot so‘rash tamoyillari — Onboarding va ruxsatlar, Inklyuziv til. G‘oya — GOV.UK Design System (Cookie banner, Cookies page).