Files
GearBox/.planning/phases/20-fab-full-screen-catalog-search/20-02-SUMMARY.md
Jean-Luc Makiola 47e71452ce docs(20-02): complete FAB menu and catalog search overlay plan
- SUMMARY.md with component details and stub documentation
- STATE.md updated with position and decisions
- ROADMAP.md updated with phase 20 plan progress
- REQUIREMENTS.md: CATFLOW-01, CATFLOW-02 marked complete
2026-04-06 08:14:04 +02:00

3.8 KiB

phase, plan, subsystem, tags, requires, provides, affects, tech-stack, key-files, key-decisions, patterns-established, requirements-completed, duration, completed
phase plan subsystem tags requires provides affects tech-stack key-files key-decisions patterns-established requirements-completed duration completed
20-fab-full-screen-catalog-search 02 ui
react
framer-motion
fab
overlay
catalog-search
tags
phase provides
20-01 UIStore FAB/catalog state, useTags hook, useGlobalItems with tag filtering
FabMenu component with animated mini menu
CatalogSearchOverlay with search, tag filtering, result cards
Root layout integration with global FAB visibility
21-add-to-collection-flow
22-manual-add-flow
added patterns
full-screen overlay pattern
FAB mini menu with framer-motion spring animations
created modified
src/client/components/FabMenu.tsx
src/client/components/CatalogSearchOverlay.tsx
src/client/routes/__root.tsx
FAB visible on all authenticated non-public routes instead of collection-only
CatalogSearchOverlay resets search/tags state on close for fresh experience each open
Add button on result cards is a stub for Phase 21 wiring
Omitted Add Manually link from empty state -- premature for Phase 20
FAB mini menu: framer-motion spring animations with staggered entrance
Full-screen catalog overlay: fixed inset-0 z-50 with body scroll lock
CATFLOW-01
CATFLOW-02
11min 2026-04-06

Phase 20 Plan 02: FAB Menu & Catalog Search Overlay Summary

Global FAB with animated mini menu and full-screen catalog search overlay with debounced search, tag chip AND-filtering, and result card grid

What Was Built

FabMenu Component (115 lines)

  • Fixed-position FAB button (bottom-right) with framer-motion rotation animation (+ to x)
  • Mini menu with "Add to Collection" (Package icon) and "Start New Thread" (Search icon) options
  • Conditional "New Setup" option when on setups page
  • Subtle backdrop overlay that closes menu on click
  • Spring animations with staggered entrance (50ms delay between items)
  • Auto-hides when catalog search overlay is open

CatalogSearchOverlay Component (262 lines)

  • Full-screen white overlay (z-50) with slide-up animation
  • Context-aware header showing "Adding to Collection" or "Starting a Thread"
  • Large autofocused search input with 300ms debounce
  • Horizontal scrollable tag chips with active (blue) / inactive (gray) toggle states
  • Result card grid (1/2/3 columns responsive) matching GlobalItemCard badge pattern
  • Skeleton loading grid (6 cards) with pulse animation
  • Empty state with contextual messaging
  • Body scroll lock when overlay is open
  • State reset on overlay close

Root Layout Integration

  • Replaced old single-action collection-only FAB with global FabMenu
  • FAB now visible on all authenticated pages (collection, threads, setups, dashboard, settings, global-items)
  • FAB hidden on login and public profile/setup pages
  • CatalogSearchOverlay rendered globally, manages own visibility via UIStore
  • Removed unused openAddPanel reference from root

Deviations from Plan

Auto-fixed Issues

None -- plan executed exactly as written.

Known Stubs

File Location Stub Resolution
CatalogSearchOverlay.tsx handleAddStub() Add button on result cards does nothing Phase 21 wires add-to-collection and add-to-thread flows
FabMenu.tsx "New Setup" onClick Closes menu but no action Phase 21 or existing setup creation flow

Commits

Task Commit Description
1 7204608 FabMenu and CatalogSearchOverlay components
2 e13f958 Wire into root layout, replace old FAB
3 -- Auto-approved checkpoint (visual verification)

Verification

  • bun run lint -- passes (no errors in new/modified files)
  • bun run build -- succeeds
  • bun test -- service tests pass (UI components are client-only)

Self-Check: PASSED