# Design parity — Kompress mockup vs current storefront Tracks the gap between the imported Claude Design mockup (`Kompress-eshop.html`, project `eshop` on claude.ai/design) and the live storefront. The home page body (featured grid + right rail) and the medical‑blue accent are **done**; this file lists everything else from the mockup that is still missing or only half‑wired, so it can be picked up incrementally. Constraints for all items: **htmx + Alpine + PenguinUI + Tailwind tokens only.** Express colors with the existing design tokens (`bg-primary`, `bg-surface-alt`, `border-outline`, `dark:*` …) — never inline hex — so light **and** dark both work. PenguinUI is copy‑paste: lift markup out of `penguinui-components//…` (read‑only, never `{% include %}`'d) and adapt at the use‑site. Legend: 🟢 backend already exists, only UI missing · 🟡 partial · 🔴 net‑new. --- ## A. Global chrome (`assets/views/base.html`) These affect every page, so they live in `base.html`, not the home template. > **✅ Implemented (pass 2)** — A1–A6 are now built in `base.html`, with i18n keys > added to `assets/i18n/{sk,en}/main.ftl` (`top-contact`, `search-button`, > `welcome`, `brand-subtitle`, `footer-*`, `hotline`, …). Verified: `/`, `/shop`, > `/login`, `/register`, `/cart`, `/search?q=` all 200, no render errors. > The `Kontakt` / `Mapa stránky` top-bar links and the footer info links point to > `#` until real pages exist. ### A1. Top utility bar — ✅ done Mockup: thin white bar above the header, right‑aligned links *Kontakt* · *Mapa stránky*. - New `
` strip at the very top of `base.html`, `border-b border-outline bg-surface text-xs text-on-surface/70`. - Links to a future `/kontakt` and `/sitemap` (or existing pages). - Low effort, no backend. ### A2. In‑header search bar — ✅ done Mockup: full‑width search input with a magnifier icon + blue **Hľadať** submit button, centered in the header. - **Backend already exists**: `GET /search` (`src/controllers/shop.rs:353`, `run_search` at `:90`, fragment `assets/views/shop/_search.html`). Just needs a header form: `
` with `name="q"`, optionally `hx-get="/search" hx-trigger="keyup changed delay:300ms"` for live results. - Copy markup from `penguinui-components/navbar/with-search.html` and/or `penguinui-components/text-input/search-input.html`. - Medium effort — mostly wiring the existing endpoint into the header layout. ### A3. Logo lockup with subtitle — ✅ done Mockup: rounded blue tile with a "+" cross glyph + **KOMPRESS** + uppercase subtitle *zdravotnícke potreby*. - Current logo is a plain text wordmark in `base.html`. Add the icon tile (`bg-primary text-on-primary`, `rounded-radius`) and the muted subtitle line. - Cross SVG is in the mockup (two rounded ``s). Low effort. ### A4. Account button (two‑line) — ✅ done Mockup: person icon + stacked *Vitajte* / *Prihláste sa* (or the customer name when logged in). - Logged‑in/out state already available via `logged_in_customer` / `customer_name` and the existing `partials/profile_menu.html`. - Restyle the login link / profile menu trigger into the two‑line button. Low effort. ### A5. Cart button with text label — ✅ done Mockup: cart icon + red count badge + stacked *Košík* / *N produktov* label. - The icon + cookie‑driven badge already exist in `base.html` (`cartCount()` JS). Add the text label beside it; pluralize "produkt/produkty/produktov" (mirror the mockup's `plural()` helper, or add an i18n key). - Low effort. ### A6. Footer — ✅ done Mockup: 4‑column footer (brand blurb · Informácie · Účet · Kontakt) + copyright bar. - **No footer exists anywhere** (`grep "`. - Static links; reuse the same i18n keys as the nav. Low effort, high visual payoff. --- ## B. Listing layout (`shop/category.html`, `shop/_product_grid.html`) The mockup's body is really a **category/listing** layout. The home page borrows its look; the real listing pages should adopt the rest. ### B1. Breadcrumbs — 🟢 Mockup: *Domov › Zdravotnícke › {kategória}* with chevron separators. - **Already implemented** on category pages: `breadcrumbs` loop in `assets/views/shop/category.html:12`. Just needs the mockup's chevron styling and to be surfaced on more pages (e.g. product detail, optionally a "Domov" crumb on home). - Copy from `penguinui-components/breadcrumbs/breadcrumb-with-chevron.html`. - Low effort (restyle existing). ### B2. Category banner card — 🔴 Mockup: white card with a 148px image placeholder + category description paragraph + **Viac ›** link, shown above the product list. - Per‑category copy/image. Needs a `description` (and optional banner image) field on the category model, or static copy keyed by slug for now. - Render as the app card idiom (`border border-outline bg-surface-alt dark:…`). - Medium effort (model field) or low (static placeholder first). ### B3. Sort control ("Zoradiť podľa") — 🟢 Mockup: styled `