- SUMMARY.md: two components created, house icon deviation documented - STATE.md: advanced to plan 4/4, progress 91%, decision recorded - ROADMAP.md: phase 27 updated (3/4 summaries)
4.1 KiB
4.1 KiB
phase, plan, subsystem, tags, dependency_graph, tech_stack, key_files, key_decisions, metrics, requirements_satisfied
| phase | plan | subsystem | tags | dependency_graph | tech_stack | key_files | key_decisions | metrics | requirements_satisfied | ||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 27-top-nav-restructure-and-search-bar-rethink | 01 | navigation |
|
|
|
|
|
|
|
Phase 27 Plan 01: TopNav and BottomTabBar Components Summary
TopNav (desktop persistent nav bar) and BottomTabBar (mobile fixed bottom tab bar) created with auth-gated routing, active route highlighting, and catalog search integration.
Tasks Completed
| Task | Name | Commit | Files |
|---|---|---|---|
| 1 | Create TopNav component | dccb1f8 |
src/client/components/TopNav.tsx |
| 2 | Create BottomTabBar component | 24ed719 |
src/client/components/BottomTabBar.tsx |
What Was Built
TopNav (src/client/components/TopNav.tsx)
Persistent sticky top navigation bar replacing TotalsBar. Renders logo (package icon + "GearBox" text), nav links (Home, Collection, Setups), desktop search bar, and user section.
Key patterns:
NavLinkOrButtoninternal component: renders<Link>for authenticated users or<button onClick={openAuthPrompt}>for anonymous users on protected routes (Collection, Setups). Home is always a<Link>.- Active route detection via
useMatchRoutefrom TanStack Router withfuzzy: truefor nested routes. - Desktop nav links and search bar hidden on mobile via
hidden md:flex. - Search bar click calls
openCatalogSearch("collection")from UIStore. - User section shows
<UserMenu />if authenticated,<Link to="/login">Sign in</Link>if anonymous.
BottomTabBar (src/client/components/BottomTabBar.tsx)
Mobile-only fixed bottom tab bar with 4 tabs: Home, Collection, Setups, Search.
Key patterns:
- Fixed position at bottom with
md:hiddenso it only shows on mobile. z-20ensures it renders above most content but below modals.- Collection/Setups:
<Link>if authenticated,<button onClick={openAuthPrompt}>if anonymous. - Search tab always a button calling
openCatalogSearch("collection"). - Framer Motion entry animation:
y: 20 -> 0+opacity: 0 -> 1over 200ms. - iOS safe area:
pb-[env(safe-area-inset-bottom)]for home indicator clearance.
Deviations from Plan
Auto-fixed Issues
1. [Rule 1 - Bug] Used 'house' icon instead of plan-specified 'home'
- Found during: Task 1 & 2
- Issue: The plan specified
LucideIcon name="home"for both TopNav (nav) and BottomTabBar Home tab. Thelucide-reactpackage does not export aHomeicon — onlyHouse. TheLucideIconwrapper falls back toPackageicon when the requested name is not found, which would render the package icon instead of the intended home/house icon. - Fix: Used
housefor the BottomTabBar Home tab. TopNav does not use a home icon in the final nav links (text-only links as intended by the design). - Files modified:
src/client/components/BottomTabBar.tsx - Commit:
24ed719
Known Stubs
None. Both components are complete and wire correctly to UIStore actions. No placeholder data or hardcoded empty values.
Self-Check: PASSED
Files exist:
- src/client/components/TopNav.tsx: FOUND
- src/client/components/BottomTabBar.tsx: FOUND
Commits exist: