Empty și error states sunt design surface, nu accidente

Day-0 e singura ocazie să convertești un utilizator. Un ecran gol cu "no items" eșuează. Signature card cu CTA accent trebuie să simtă "uite ce poți face acum". Erorile apar inline pe element, niciodată ca toast — utilizatorul vede direct ce trebuie reparat.

Această pagină catalogează pattern-urile pentru toate suprafețele Phase 7, pentru ca implementarea RN să refolosească un singur EmptyHero și ErrorCard.

Empty states day-0 invitation

Pattern: signature card (border ink + offset shadow), icon chip în accent-soft, headline 1-line, explanation 2-line, accent CTA. Sub-link opțional pentru rute alternative.

distributor_owner

Produse

0 produse · day-0
Catalogul tău e gol

Adaugă primul produs ca să poată fi văzut de retailerii legați.

+ Adaugă produs
Catalog · distribuitor
fără produse
retailer_owner

Catalog

niciun distribuitor legat
Cataloagele apar după ce te legi

Cere o legătură cu un distribuitor. Ai nevoie de IDNO-ul lui.

Cere o legătură
Catalog · retailer
fără linkuri
retailer_worker

Coș Vitafor

0 produse
Coșul e gol

Mergi la catalog și adaugă produse cu tap-ul rapid +.

Deschide catalogul
Coș
fără linii
retailer_owner

Comenzile mele

0 comenzi
Nu ai plasat nicio comandă încă

Răsfoiește un catalog și trimite primul coș. Apare aici cu starea live.

Răsfoiește cataloage
Comenzi
day-0
retailer_owner

Locații

0 locații
Adaugă prima locație

Adresele de livrare apar aici. Una poate fi implicită (pre-selectată în coș).

+ Locație nouă
Locații
fără adrese
distributor_owner

Parteneri

0 retaileri legați
Aștepți primii retaileri

Cere o legătură către un retailer cunoscut sau așteaptă să-ți trimită ei o cerere.

Cere o legătură
Link inbox
day-0
distributor_owner

Facturi

0 facturi emise
Niciuna încă

Facturile apar aici după ce livrezi comenzi. Apoi tapezi "Emite factura".

Vezi comenzile
Facturi
fără emise
retailer_worker

Acasă

prima ta zi
Bun venit, Maria

Întreabă-l pe proprietar dacă au fost legați distribuitori. Apoi vei putea comanda.

Verifică legăturile
Acasă · worker
first run
Implementare RN: un singur component <EmptyHero icon ctaPrimary ctaSecondary /> reutilizat la 8+ rute. Iconul vine din Lucide, textele din i18n.

Error states inline, nu toast

Pattern: card cu border accent, cod eroare mono (audit trail), headline acționabil (ce s-a întâmplat), p explicativ (ce poți face), CTAs rezolvă problema. Network/offline = banner sus, non-blocking.

retailer_owner

Coș Vitafor

linie cu eroare
failed-precondition
Lapte Sec 12% — stoc insuficient

Cerere: 6 buc · disponibile: 4 buc. Schimbă cantitatea sau elimină linia pentru a trimite.

Setează la 4
Șterge linia
Stoc insuficient · submitOrder
retailer_owner

Coș Vitafor

link între timp blocat
failed-precondition
Vitafor a pus pe pauză legătura

Nu poți trimite comanda până nu reia. Coșul rămâne salvat — poți reveni oricând.

Vezi legătura
Salvează coșul
Link paused · blocking
retailer_worker

Comandă #1296

acțiune indisponibilă
🔒
permission-denied
Doar proprietarul poate anula

Rolul tău (Vânzător) nu permite anularea. Cere proprietarului Andrei Gîrlea să o facă.

Înapoi
Permission denied · worker action
distributor_owner

Lapte Sec 12%

arhivare blocată
failed-precondition
Nu poți arhiva — produsul e în comenzi active

Apare în 2 comenzi nefinalizate: #1294 (Magazin Central), #1293 (Bakal Vasile). Finalizează-le sau anulează-le mai întâi.

Vezi comenzile
Archive blocked · archiveProduct
retailer_owner

Cere o legătură

IDNO existent
already-exists
Ai deja o cerere pentru acest distribuitor

Vitafor SRL · cerere trimisă acum 5 zile · expiră în 25 zile. Așteaptă răspunsul sau anulează cererea curentă.

Vezi cererea
Anulează cererea
Already exists · requestDistributorLink
retailer_owner

Comenzi

conexiune slabă
Fără conexiuneDatele afișate pot fi învechite. Reîncearcă când ești online.
Offline · banner + skeleton
distributor_owner

Cere o legătură

IDNO inexistent
?
not-found
Niciun retailer cu acest IDNO

Verifică cifrele cu partenerul. IDNO-ul are 13 cifre (sau 10 pentru întreprinderi individuale).

Înapoi
Not found · IDNO invalid
distributor_owner

Emite factură

ordine de execuție
failed-precondition
Comanda nu e încă livrată

Factura se poate emite doar pentru comenzi în starea livrată. Această comandă e în expediată.

Marchează livrată
Înapoi
Wrong state · issueInvoice
Implementare RN: componentul <ErrorCard code title body ctas /> primește codul Firebase (failed-precondition, permission-denied, not-found, already-exists, aborted) și-l afișează în UPPER mono accent. Toast-urile rămân doar pentru confirmări pozitive (comandă trimisă, plată înregistrată).