Skip to content

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 by CollectionKey.
  • getCollectionFruits(key) — returns the FruitRecord[] in taxonomy order.
  • getCollectionSlugs(key) — returns a Set<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-selection query-param strategy to a standard /shop/japanese-selection category 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.