Home hero becomes a 450px flex row with a pinned 240x450 category rail (ShellCategoryMenu `pinned` mode) left of the 960px center-cropped carousel; hovering a top-level category expands the mega-menu over the carousel. The header no longer collapses on scroll, and its category dropdown is now hover-only on non-home pages. OpenSpec change: openspec/changes/pin-home-category-menu BREAKING CHANGE: the header logo/search/cart bar no longer auto-hides past 200px of scroll, and the home page no longer shows the header category dropdown (it is pinned in the hero row instead).
1.9 KiB
1.9 KiB
Tasks
1. CategoryMenu pinned mode
- 1.1 Add a
pinnedboolean prop toapps/mall/components/shell/CategoryMenu.vue; whenpinnedis true, render.catmenuin-flow (position: relative; top: auto; width: 240px) instead of the absolute 960px dropdown, and keep the default (dropdown) rendering unchanged for the header use - 1.2 In pinned mode, keep the
.lvl1sidebar at 240px wide and 450px tall, and reposition the.subflyout asposition: absolute; left: 240px; top: 0; width: ~700px; height: 450pxso it overlays the carousel area to the right; keep existing hover state, links, and i18n untouched
2. Home hero row
- 2.1 In
apps/mall/pages/index.vue, change the.heroblock to a flex row:<ShellCategoryMenu pinned />followed byUiCarousel; fix the row height at 450px so the sidebar and carousel align - 2.2 Ensure banner images center-crop horizontally at the new ~950px carousel width (fixed 450px height,
object-fit: cover— verifyUiCarouselalready applies this, adjust if not); do not modify the mock SVG assets
3. Header cleanup
- 3.1 In
apps/mall/components/shell/SiteHeader.vue, remove thecollapsedref, the scroll listener, and thev-show="!collapsed"on.hdr-top; reduceshowMenutomenuOpen && !isHomeso the header mega-menu is hover-only and suppressed on the home page, where the category menu is pinned in the hero row instead (perspecs/frontend-mall/spec.md; decision confirmed during apply)
4. Verification
- 4.1 Run
pnpm --filter @vmall/mall buildand confirm it passes - 4.2 Start the mall dev server and verify in a real browser: home shows the pinned sidebar left of the cropped carousel with no hover; scrolling past 200px keeps both the header and sidebar visible; hovering a top-level category expands the panel over the carousel; a non-home page (e.g.
/search) shows the hover dropdown and no pinned sidebar