List row

Rândul de listă al telefonului (<1024px) — un singur rând pentru setări, meniuri și valori, grupat pe un card alb .list-group, sub o etichetă .t12. Variantele spun ce stă în dreapta: .link, .value, .control, static, .danger. Contract: components/list-row.json. Gazdele: ecranul, foaia, meniul.

Markup canonic · components/list-row.json

sursa = JSON · generat de scripts/build-catalog.py
Notificări
Facturi neîncasate 3
Încasat42.180,00 Lei

Anatomia · un rând, un card, o etichetă

Calul de povară al ecranului de telefon. Pe desktop aceleași joburi sunt împărțite între .field.horizontal (setări), .popover-item (meniuri) și .tbl (înregistrări); pe telefon toate sunt un singur rând, grupat pe un card alb. Un singur rând înseamnă un singur loc care poate deriva.

Notificări
Firma
Dublin Software SRLCUI RO42118903 · J40/1234/2019
PlanPro
Următoarea factură1 oct 2026
Setări
ecranul Setări: .list-section × 3 + grupul .danger — toate rândurile sunt .list-row
.list-section = eticheta .t12 (în ink, nu fog) + .list-group (alb, --c-rule-card, --r-lg, overflow:hidden). Rândul: min 56px, padding 0 20 (10 20 cu .has-sub), hairline --c-rule-soft între rânduri, fără pe ultimul. Interior: .ic.lg opțional (fog) · .list-row-body cu .list-row-title (15/22) și .list-row-sub (13/18 fog) · apoi ce spune varianta: .badge.sm.neutral + chevron, .list-row-value, .switch. Tot rândul e ținta de atins — de aceea e <button>, <a> sau <label>, niciodată un div cu un buton înăuntru.

Variantele · după ce stă în dreapta

.value cu trei sau mai multe cifre e o listă; una-două cifre-erou sunt .kpi (KPI card). Înregistrările cu mai multe câmpuri nu sunt rânduri — sunt Data list (WIP).

.list-row.link · merge undeva · a / button · contor + chevron
.list-row.value · etichetă–cifră · div · titlul trece pe fog
Încasat42.180,00 Lei
Cheltuit18.640,00 Lei
Profit23.540,00 Lei
.list-row.control · setare binară · label + .switch · salvează instant
static · informație · div · .has-sub pentru două rânduri
Dublin Software SRLCUI RO42118903 · J40/1234/2019
Andrei DimaAdministrator
.list-row.danger · distructiv · button · ink 600, singur în grupul lui
VariantăCe eElementDreapta
.linkmerge undeva<a> / <button>contor .badge.sm.neutral + chevron (.ic.lg chevron-right, ultimul copil)
.valueetichetă–cifră<div>.list-row-value — 600 tabular; titlul trece pe fog
.controlsetare binară<label>.switch — salvează instant, ecranul n-are CTA
staticinformație<div>nimic; .has-sub pentru două rânduri
.dangerdistructiv<button>nimic; text și icon ink 600, singur în propriul .list-group

Densitatea · o mărime, nu o clasă nouă

Aceeași regulă ca la .badge.sm în sidebar: densitatea e o mărime din contract, cu required_in, nu o variantă cu nume propriu.

.list-group · 56 · pe ecran
.list-group.sm · 44 · în .sheet
Acțiuni factură
.list-group = rânduri de 56 (ecran). .list-group.sm = rânduri de 44 (foaie), obligatorie în .sheet — list-row.json → sizes.scale[".list-group.sm"].required_in, deci auditul o cere. În foaie grupul își pierde cardul (foaia e suprafața) și rândurile se aliniază la 6px, ca titlul.

Stări

.selected · :disabled · focus
.selected — fundal --c-pink-tint, chevronul devine check în --c-accent-deep (ca .check-item.card). :disabled / .disabled — text și icon pe --c-mist, fără hover. Hover pe .link — --c-bej-05, treapta de hover a rândurilor de listă; chevronul trece pe ink. Focus — inelul comun, outline 2px --c-fog, în interior.

Perechea de pe desktop

Nu .list-row pe desktop pentru joburi care au deja componentă. Aliasuri deprecate: .flow-menu-row → .list-row · .flow-menu-ic → un .ic simplu · .flow-menu-gap → al doilea .list-group · .flow-steps-label → .t12. Poartă aceleași reguli prin selectori grupați; se scot la următorul major.

JobulDesktop ≥1024Mobil <1024
Rând de setare.field.horizontal + .switch.list-row.control
Rând de meniu.popover-item.list-row în .sheet (.list-group.sm)
Destinație de navigare.sidebar a.list-row.link în .mobile-menu
Etichetă–cifră.tbl cu două coloane, .kpi.list-row.value (3+), .kpi (1–2)
Înregistrare cu mai multe câmpuri.tbl.data-list — WIP

Reguli ferme

Ținta e rândul

button / a / label — tot rândul se atinge. Nu .btn în rând (excepție: .switch pe .control).

Chevronul

Ultimul .ic (chevron-right, .ic.lg), fără clasă proprie.

Contorul

.badge.sm.neutral pe orice rând, .mobile-menu inclus (rândurile de acolo sunt .list-row obișnuite, pe carduri albe). .filled.pink doar în .tabbar, unde contorul e un pip peste glifă, nu la capăt de rând.

Distructivul

.danger — ink 600, niciodată roșu, singur în grupul lui.

În foaie

.list-group.sm (44). Nu 56 în .sheet.

Eticheta de grup

.t12 în ink, în .list-section.

Nu în locul tabelului

Înregistrările cu mai multe câmpuri sunt .data-list (WIP), nu rânduri.

Nu al doilea radius

Nu radius sau padding propriu pe .list-group — e forma de listă a cardului.