Japanese Selection¶
The Japanese Selection is the first curated collection — a merchandising tier that sits orthogonal to the 16 botanical families on The Fruit Atlas. It groups the 8 Japanese premium imports (Miyazaki Mango, Okimi Strawberry, Awa Strawberry, Sumo Citrus, Japanese Kumquat, Loquat, Japanese Passion Fruit, Fuji Apple) behind a single gift-grade narrative.
Each Japanese fruit keeps its botanical family (Sumo Citrus is still Rutaceae; Fuji is still Rosaceae). The selection is a parallel, marketing-first grouping that surfaces everywhere a customer is browsing.
Curated collections vs botanical families¶
| Botanical family | Curated collection | |
|---|---|---|
| Source of truth | FruitRecord.family on lib/fruit-taxonomy.ts |
COLLECTIONS on lib/curated-collections.ts |
| Cardinality | 1 fruit → exactly 1 family | 1 fruit → 0 or many collections |
| Accent colour | --primary (magenta) |
--fp-sticker (amber) on the hover border and CTA |
| Routing | /atlas/{family-key} |
/{collection-key} (currently /japanese-selection) |
The curated-collection model is intentionally small right now — one entry. It's there so that future gift tiers (e.g. a winter hamper collection) can be added without touching callers.
lib/curated-collections.ts¶
The helper exports:
COLLECTIONS— typed record keyed byCollectionKey.getCollectionFruits(key)— returns theFruitRecord[]in taxonomy order.getCollectionSlugs(key)— returns aSet<string>of slugs for fast lookups.
The Japanese predicate is a hardcoded slug set rather than a premium: true flag, because premium is necessary but not sufficient — a hypothetical non-Japanese premium fruit should not silently land on the selection.
Where the collection surfaces¶
| Surface | File | What renders |
|---|---|---|
| Dedicated landing page | app/japanese-selection/page.tsx |
Full-bleed dark hero + 4×2 fruit grid + "Why these are different" 3-up |
| Home band | components/home/JapaneseSelection.tsx |
4 headliner fruits (Miyazaki / Sumo / Awa / Kinkan) |
| Atlas index | app/atlas/page.tsx |
Sticker-amber "Curated Collections" band above the 16-family grid |
| Header nav | components/layout/Header.tsx |
"Japanese" link between Build a box and Subscribe |
| Mobile drawer | components/layout/MobileNav.tsx |
Sparkles-icon entry in DRAWER_LINKS |
| Shop filter | app/shop/page.tsx |
?collection=japanese-selection chip in sticker amber |
WooCommerce product_cat — pending production seed¶
The Japanese Selection is currently a frontend-only grouping. To surface it as a proper WooCommerce category on the shop (alongside the existing Boxes / Fruits / Merchandise / Subscribe terms), the japanese-selection product_cat term needs to be seeded on A2 production and the 8 products assigned to it.
The seeding script lives at infra/wp/scripts/seed-japanese-selection-cat.sh. It is not run automatically — per the production-deploy guardrail, any A2 write needs explicit go-ahead. Invoke once, then never again:
A2_PASSPHRASE=... python infra/a2/a2.py run "$(cat infra/wp/scripts/seed-japanese-selection-cat.sh)"
Once the term is live:
- The shop filter chip can migrate from the
?collection=japanese-selectionquery-param strategy to a standard/shop/japanese-selectioncategory route. - The mega-menu / mobile drawer can deep-link into the category page instead of the marketing landing page when that's the user's intent.
- Order exports and reporting naturally segment by
product_cat.
Until that deploy happens, the in-memory filter in app/shop/page.tsx keeps the chip working without depending on the Woo term.
Copy + accent¶
All Japanese-Selection surfaces use the sticker-amber accent (var(--fp-sticker) = #faaf3f) rather than the default magenta, so the selection reads as a distinct, gift-adjacent sub-brand. The pill copy is "Japanese Selection" on dark backgrounds and "Curated Collection" when the collection is one of several entries in a list.