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:

  1. se neopakují ve dvou+ místech (web × admin, list × detail), nebo
  2. 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

KomponentaStavKde žije / poznámka
HerbCardinlineapp/routes/byliny.tsx<Link> v mřížce karet (jméno, latinsky, krátký souhrn); 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 (MVP1 §1.10).
HerbGalleryinlineapp/routes/byliny.$slug.tsx — sekce „Obrázky (MVP1 §1.9)". Zatím externí URL, R2 přijde s adminem.
HarvestCalendarplánFiltr „měsíc sběru" už existuje jako <select>; vizuální kalendář (MVP3) zatím ne.
ScientificEvidenceBlockinlinebyliny.$slug.tsx — sekce „Vědecké poznatky (MVP1 §1.8)".
SpiritualUseBlockinlinebyliny.$slug.tsx — sekce „Tradiční / spirituální využití (MVP1 §1.7)".
ProcessingMethodCardinlinebyliny.$slug.tsx — sekce „Způsoby zpracování na kartě byliny (MVP1 §1.6)".
SafetyWarningBlockinlinebyliny.$slug.tsx — sekce „Bezpečnost (MVP1 §1.11)".
TopicBadgeplánTémata/symptomy přijdou s MVP2 (13-mvp-2.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
Sectionbyliny.$slug.tsx (private)Wrapper sekce detailu (<h2> + obsah). Kandidát na extrakci, jakmile vznikne admin detail.
EmptyHintbyliny.$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.

KomponentaStavPoznámka
AdminLayoutplánPo napojení Cloudflare Access (Fáze 5).
HerbFormplánCRUD bylin.
EvidenceFormplánCRUD vědeckých důkazů.
SpiritualUseFormplánCRUD spirituálního použití.
ProcessingMethodFormplánCRUD vazby bylina ↔ způsob zpracování.
ImageUploaderplánUpload do R2 (viz 21-tech-spec.md §9).
RegionPickerplánSdílený s RegionSelector na webu (kandidát na společný primitive).
TopicPickerplánPojede s tématy v MVP2.
PlantPartPickerplánČíselník částí rostliny — seed je v migracích.
SafetyWarningFormplánStrukturovaná editace safety_warnings.
PublishStatusBadgeplánis_published na řádku v /admin/byliny.
CachePurgeButtonplánVolá /api/admin/cache-purge (23-api-and-routes.md §3).