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 a admin. Slouží jako wishlist a zároveň jako 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 a
mvp-*.md, „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 (web × admin, list × detail), nebo
- nepřibyde admin formulář, 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 | inline | app/routes/byliny.tsx — <Link> v mřížce karet (jméno, latinsky, krátký souhrn); 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 (MVP1 §1.10). |
HerbGallery | inline | app/routes/byliny.$slug.tsx — sekce „Obrázky (MVP1 §1.9)". Zatím externí URL, R2 přijde s adminem. |
HarvestCalendar | plán | Filtr „měsíc sběru" už existuje jako <select>; vizuální kalendář (MVP3) zatím ne. |
ScientificEvidenceBlock | inline | byliny.$slug.tsx — sekce „Vědecké poznatky (MVP1 §1.8)". |
SpiritualUseBlock | inline | byliny.$slug.tsx — sekce „Tradiční / spirituální využití (MVP1 §1.7)". |
ProcessingMethodCard | inline | byliny.$slug.tsx — sekce „Způsoby zpracování na kartě byliny (MVP1 §1.6)". |
SafetyWarningBlock | inline | byliny.$slug.tsx — sekce „Bezpečnost (MVP1 §1.11)". |
TopicBadge | plán | Témata/symptomy přijdou s MVP2 (13-mvp-2.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 | byliny.$slug.tsx (private) | Wrapper sekce detailu (<h2> + obsah). Kandidát na extrakci, jakmile vznikne admin detail. |
EmptyHint | byliny.$slug.tsx (private) | „Zatím bez údajů" placeholder. |
Admin
Celá admin sekce je zatím plán — neexistuje žádná /admin* route, viz 24-engineering-roadmap.md §Fáze 5.
| Komponenta | Stav | Poznámka |
|---|---|---|
AdminLayout | plán | Po napojení Cloudflare Access (Fáze 5). |
HerbForm | plán | CRUD bylin. |
EvidenceForm | plán | CRUD vědeckých důkazů. |
SpiritualUseForm | plán | CRUD spirituálního použití. |
ProcessingMethodForm | plán | CRUD vazby bylina ↔ způsob zpracování. |
ImageUploader | plán | Upload do R2 (viz 21-tech-spec.md §9). |
RegionPicker | plán | Sdílený s RegionSelector na webu (kandidát na společný primitive). |
TopicPicker | plán | Pojede s tématy v MVP2. |
PlantPartPicker | plán | Číselník částí rostliny — seed je v migracích. |
SafetyWarningForm | plán | Strukturovaná editace safety_warnings. |
PublishStatusBadge | plán | is_published na řádku v /admin/byliny. |
CachePurgeButton | plán | Volá /api/admin/cache-purge (23-api-and-routes.md §3). |