Skip to content

UI komponenty

Stav dokumentu: Živý inventář — tabulky níže sledují hotovo / inline / plán; při extrakci komponent aktualizujte sloupec „Stav“.

Mapa React komponent pro veřejný web. Plán rozhraní editora je výhradně v 32-admin.md. Tabulka níže slouží jako wishlist a přehled, kde dnes daný blok reálně žije v repu (často ještě inline v route, ne jako extrahovaná komponenta).

Kontext: produktové moduly jsou v 10-product-spec.md, zadání katalogu a karty v 12-katalog-a-karta-byliny.md, tematické featury v tasks/, „bloky" detailu jako úkoly v 24-engineering-roadmap.md §Fáze 3, obsahová pravidla v 30-content-guidelines.md. Žádný z těch dokumentů nepojmenovává konkrétní React komponenty — to dělá tenhle soubor.

Pravidlo extrakce

Bloky zatím držíme inline v route, dokud:

  1. se neopakují ve dvou+ místech (např. výpis × detail), nebo
  2. nepřibyde formulář v rozhraní editora (32-admin.md), který má sdílet stejný UI primitive (např. RegionPicker).

Adresář pro extrahované komponenty: app/components/ (existuje např. dekorace nature-decor.tsx; většina UI zatím zůstává inline v routách).

Stavové štítky

  • hotovo — existuje jako samostatný soubor v app/components/.
  • inline — funguje, ale žije přímo v souboru route.
  • plán — zatím žádný kód.

Veřejný web

KomponentaStavKde žije / poznámka
HerbCardhotovoapp/components/herb-card.tsx — používá app/routes/byliny.tsx; viz téma v 27-soft-nature-ui.md.
HerbDetailinlineCelý route app/routes/byliny.$slug.tsx (default export).
HerbFiltersinlineapp/routes/byliny.tsx<Form method="get"> se search + měsíc + region + checkboxy pm (více hodnot, OR) + téma (12-katalog-a-karta-byliny §1.10).
HerbGalleryčástečněapp/routes/byliny.$slug.tsx — hero prvního snímku v horní kartě + sekce „Obrázky“ pro další; partitionHerbImages v app/lib/herb-images.ts. Externí URL nebo R2 /media/…; upload z UI — 32-admin.md.
RitualGuideStepshotovoapp/components/ritual-guide-steps.tsx — krokovač postupu na ritualy.$slug (více kroků), sessionStorage, volitelný celý seznam; viz tasks/ritualy-knihovna-a-pruvodce.md.
HarvestCalendarplánFiltr „měsíc sběru" už existuje jako <select>; vizuální kalendář — viz tasks/sezona-kalendarovy-pohled.md (kontext tasks/done/sezonnost-a-kalendar.md).
ScientificEvidenceBlockinlinebyliny.$slug.tsx — sekce „Vědecké poznatky (12-katalog-a-karta-byliny §1.8)".
SpiritualUseBlockinlinebyliny.$slug.tsx — sekce „Tradiční / spirituální využití (12-katalog-a-karta-byliny §1.7)".
ProcessingMethodCardinlinebyliny.$slug.tsx — sekce „Způsoby zpracování…“ (12-katalog §1.6); ikony slugů z app/lib/processing-method-meta.ts. Rozcestník a detail metod: zpracovani.tsx, zpracovani.$slug.tsx.
SafetyWarningBlockinlinebyliny.$slug.tsx — sekce „Bezpečnost (12-katalog-a-karta-byliny §1.11)".
TopicBadgeplánTémata/symptomy — viz tasks/symptomy-a-temata.md a tasks/done/stitky-tvrzeni-a-typy-dukazu.md.
EvidenceBadgeplánDnes „Úroveň evidence: …" je jen text uvnitř ScientificEvidenceBlock.
RegionSelectorinlinebyliny.tsx<select name="region"> plněný z getCatalogFilterOptions.
MonthSelectorinlinebyliny.tsx<select name="month"> s MONTH_LABELS.

Lokální helpery, které ve wishlistu nejsou

HelperKdeK čemu
Sectionhotovoapp/components/herb-detail-section.tsx — wrapper sekce detailu (<h2> + akcentovaný shell); importuje app/routes/byliny.$slug.tsx.
EmptyHinthotovoapp/components/herb-detail-section.tsx — „Zatím bez údajů" placeholder.

Rozhraní editora (AdminLayout, formuláře CRUD, upload, purge cache): 32-admin.md §8.