style: shop settings cards stay --surface-dim gray (drop white override)
Last batch promoted .shop-settings.well to a content-card and along the way overrode the background to --surface-base (white) — fox prefers the familiar light-gray slab. Drop the background-color + border + dark-mode overrides; .well already sets --surface-dim and its dark-mode rule, both of which I'm now letting through unchanged. Kept: the rhythm + shape upgrades that actually fixed the "wells butting together" problem — radius-lg, elevation-1 shadow, var(--space-5) padding, var(--space-5) margin-bottom between sections. Styleguide entry note updated to match.
This commit is contained in:
parent
5aa6d1e756
commit
41d525aa1d
9 changed files with 572 additions and 71 deletions
|
|
@ -319,6 +319,28 @@ picker is Phase 2).
|
|||
| `tests/test_models.py` | `TestTagSuggestPureFunctions` — 11 unit tests over tokenize / stem / cluster |
|
||||
| `tests/test_functional.py` | `test_suggest_clusters_renders_candidates`, `test_apply_suggestion_creates_tag_and_attaches_products`, `test_dismiss_suggestion_adds_to_stopwords`, `test_apply_suggestion_rejects_empty_input` |
|
||||
|
||||
### Phase 2.6 — tag-detail facet sidebar + 6-sentence SERP excerpt (shipped 2026-05-15)
|
||||
|
||||
Operator feedback after Phase 2.5: tag-detail SERP rows were truncating
|
||||
at ~200 chars (Google-snippet feel) but printableprompts product
|
||||
descriptions are 4-8 sentences of classroom context that all matter to
|
||||
the shopper. Also missing: a way to narrow within a tag (e.g. "math
|
||||
products under $5") without going back to a flat grid.
|
||||
|
||||
| Surface | Change |
|
||||
|---------|--------|
|
||||
| `models/product.py` | New `_strip_markdown(text)` module helper. `excerpt()` now consumes it; new `excerpt_sentences(n=6, max_chars=1500)` splits on `.!?` and joins the first N — strips markdown first, caps at 1500 chars as a safety floor for terminator-free descriptions |
|
||||
| `views/shop.py` | New `_price_range_from_request(request)` → `(min_cents, max_cents)`. New `_filter_by_price_range(products, min_cents, max_cents)` applies inclusive bounds. Wired into `shop_tag_detail` and `_build_home_layout_context` (filtered shop home / search). `shop_tag_detail` now passes `facet_tags = tags_by_popularity(...)` (all tags, no limit) for the sidebar |
|
||||
| `templates/shop_tag.j2` | Layout split into `.tag-detail-layout` grid (sidebar 220px + content 1fr at ≥800px, single column below). Sidebar `<form method="get">` wraps three sections: Sort dropdown, Price min/max number inputs, full Categories list with `.facet-tag-active` highlighting. Top `.tag-chip-strip-mobile` retained for mobile (sidebar hidden <800px). SERP row now calls `product.excerpt_sentences(6)` |
|
||||
| `static/css/common.css` | New `.tag-detail-layout` + `.facet-nav` + `.facet-section` + `.facet-tag-list` + `.facet-price-range` + dark-mode overrides. Grid-only per house style |
|
||||
| `tests/test_models.py` | New `TestProductExcerpt` — 13 unit tests over `_strip_markdown`, `excerpt`, `excerpt_sentences` (sentence count, terminator variety, markdown stripping, safety cap) |
|
||||
| `tests/test_functional.py` | `test_tag_detail_renders_facet_sidebar`, `test_tag_detail_price_filter_narrows_grid`, `test_tag_detail_excerpt_renders_six_sentences` — all green |
|
||||
|
||||
Capability-driven: sidebar is plain HTML + GET form. JS auto-submits the
|
||||
sort `<select>` on change; without JS, the same Apply button submits
|
||||
everything. No new JS file. No breaking change to existing chip filter
|
||||
flow or the search route.
|
||||
|
||||
### Phase 2.5 — product page polish: description wrap + price-history toggle (shipped 2026-05-15)
|
||||
|
||||
Two product-page bugs surfaced while shopping printableprompts:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue