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:
- se neopakují ve dvou+ místech (např. výpis × detail), nebo
- 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
| Komponenta | Stav | Kde žije / poznámka |
|---|---|---|
HerbCard | hotovo | app/components/herb-card.tsx — používá app/routes/byliny.tsx; viz téma v 27-soft-nature-ui.md. |
HerbDetail | inline | Celý route app/routes/byliny.$slug.tsx (default export). |
HerbFilters | inline | app/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. |
RitualGuideSteps | hotovo | app/components/ritual-guide-steps.tsx — krokovač postupu na ritualy.$slug (více kroků), sessionStorage, volitelný celý seznam; viz tasks/ritualy-knihovna-a-pruvodce.md. |
HarvestCalendar | plán | Filtr „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). |
ScientificEvidenceBlock | inline | byliny.$slug.tsx — sekce „Vědecké poznatky (12-katalog-a-karta-byliny §1.8)". |
SpiritualUseBlock | inline | byliny.$slug.tsx — sekce „Tradiční / spirituální využití (12-katalog-a-karta-byliny §1.7)". |
ProcessingMethodCard | inline | byliny.$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. |
SafetyWarningBlock | inline | byliny.$slug.tsx — sekce „Bezpečnost (12-katalog-a-karta-byliny §1.11)". |
TopicBadge | plán | Témata/symptomy — viz tasks/symptomy-a-temata.md a tasks/done/stitky-tvrzeni-a-typy-dukazu.md. |
EvidenceBadge | plán | Dnes „Úroveň evidence: …" je jen text uvnitř ScientificEvidenceBlock. |
RegionSelector | inline | byliny.tsx — <select name="region"> plněný z getCatalogFilterOptions. |
MonthSelector | inline | byliny.tsx — <select name="month"> s MONTH_LABELS. |
Lokální helpery, které ve wishlistu nejsou
| Helper | Kde | K čemu |
|---|---|---|
Section | hotovo | app/components/herb-detail-section.tsx — wrapper sekce detailu (<h2> + akcentovaný shell); importuje app/routes/byliny.$slug.tsx. |
EmptyHint | hotovo | app/components/herb-detail-section.tsx — „Zatím bez údajů" placeholder. |
Rozhraní editora (AdminLayout, formuláře CRUD, upload, purge cache): 32-admin.md §8.