`, add mobile-only bottom padding so content isn't obscured by the fixed bottom tab bar:
```typescript
```
`pb-16` (64px) accounts for the bottom tab bar height on mobile. `md:pb-0` removes it on desktop.
**Do NOT change:** CandidateDeleteDialog, ResolveDialog, CatalogSearchOverlay, AddToCollectionModal, AddToThreadModal, Toaster, AuthPromptModal, OnboardingWizard, ConfirmDialog, ExternalLinkDialog, or any other existing modal/dialog code.
cd /home/jean-luc-makiola/Development/projects/GearBox && grep -c "TopNav" src/client/routes/__root.tsx && grep -c "BottomTabBar" src/client/routes/__root.tsx && ! grep -q "TotalsBar" src/client/routes/__root.tsx && echo "no-totalsbar" && grep -c 'hidden md:block' src/client/routes/__root.tsx && grep 'isPublicRoute' src/client/routes/__root.tsx | grep -c '/setups"' && grep -c 'pb-16 md:pb-0' src/client/routes/__root.tsx
- __root.tsx imports `TopNav` from `../components/TopNav` (not TotalsBar)
- __root.tsx imports `BottomTabBar` from `../components/BottomTabBar`
- __root.tsx does NOT contain `TotalsBar` anywhere
- __root.tsx does NOT contain `isDashboard` or `totalsBarProps` variables
- __root.tsx renders `` (no props)
- __root.tsx renders ``
- FabMenu is wrapped in ``
- isPublicRoute includes `location.pathname === "/setups"`
- Root div has `pb-16 md:pb-0` classes for mobile bottom padding
- All existing modals/dialogs remain unchanged
Root layout uses TopNav instead of TotalsBar, BottomTabBar is rendered for mobile, FAB is hidden on mobile, /setups is a public route, and mobile bottom padding prevents content occlusion.
Task 2: Remove hero section from landing page
src/client/routes/index.tsx
src/client/routes/index.tsx
Modify `src/client/routes/index.tsx` to remove the hero section (per D-09, D-10, D-11).
**Changes:**
1. **Delete the `HeroSection` function entirely** (lines ~35-72 in current file). This includes the heading "Discover Gear", subtitle, search bar div, and "Go to Collection" link.
2. **Remove unused imports:**
- Remove `{ Search } from "lucide-react"` — only used by HeroSection
- Remove `{ Link } from "@tanstack/react-router"` — only used by HeroSection's "Go to Collection" link (check if Link is used elsewhere in the file first; it is not)
- Remove `useAuth` import — only used to pass `isAuthenticated` to HeroSection
- Remove `useUIStore` import — only used to get `openCatalogSearch` for HeroSection
3. **Update LandingPage function** to remove HeroSection render and unused variables:
```typescript
function LandingPage() {
return (
);
}
```
4. **Keep unchanged:** `PopularSetupsSection`, `RecentItemsSection`, `TrendingCategoriesSection`, `SectionSkeleton`, all discovery hooks imports, `GlobalItemCard` import, `PublicSetupCard` import, and the `createFileRoute` route definition.
cd /home/jean-luc-makiola/Development/projects/GearBox && ! grep -q "HeroSection" src/client/routes/index.tsx && echo "no-hero" && ! grep -q "Discover Gear" src/client/routes/index.tsx && echo "no-heading" && ! grep -q "lucide-react" src/client/routes/index.tsx && echo "no-lucide-direct" && grep -c "PopularSetupsSection" src/client/routes/index.tsx && ! grep -q "useAuth" src/client/routes/index.tsx && echo "no-useAuth" && ! grep -q "useUIStore" src/client/routes/index.tsx && echo "no-useUIStore"
- src/client/routes/index.tsx does NOT contain `HeroSection` (function definition or usage)
- src/client/routes/index.tsx does NOT contain `Discover Gear` heading text
- src/client/routes/index.tsx does NOT contain `Go to Collection` link text
- src/client/routes/index.tsx does NOT import from `lucide-react`
- src/client/routes/index.tsx does NOT import `useAuth`
- src/client/routes/index.tsx does NOT import `useUIStore`
- LandingPage function renders PopularSetupsSection as first child
- PopularSetupsSection, RecentItemsSection, TrendingCategoriesSection all remain
- SectionSkeleton helper function remains
Landing page starts directly with Popular Setups section. No hero section, no heading, no search bar, no "Go to Collection" link. No unused imports (useAuth, useUIStore, lucide-react). Search is now exclusively in the TopNav bar.
Task 3: Verify full navigation flow
Complete navigation restructure: TopNav on desktop, BottomTabBar on mobile, Setups as top-level route, Collection with 2 tabs, landing page without hero.
1. Run `bun run dev` and open http://localhost:5173 in your browser
2. **Desktop (wide viewport):**
- Verify top nav shows: logo (GearBox with package icon), Home/Collection/Setups links, search bar, and user avatar or "Sign in"
- Click the search bar — CatalogSearchOverlay should open
- If signed out: click Collection — AuthPromptModal should appear (not navigation)
- If signed in: click Collection — navigates to /collection, Collection link is highlighted
- Navigate to /setups — SetupsView renders, Setups link is highlighted
- Navigate to /collection — only Gear and Planning tabs (no Setups tab)
- Visit the landing page (/) — no hero section, starts with Popular Setups
3. **Mobile (resize browser to ~375px width or use DevTools mobile):**
- Top bar shows only logo and user avatar/sign-in (no nav links, no search bar)
- Bottom tab bar shows 4 items: Home, Collection, Setups, Search
- Tap Search — CatalogSearchOverlay opens
- FAB is NOT visible (hidden on mobile)
- Content is not cut off at the bottom (padding accounts for tab bar)
4. Verify no console errors
Type "approved" or describe any issues
- `bun run dev` starts without errors
- TopNav replaces TotalsBar across all pages
- BottomTabBar appears only on mobile viewports
- FAB hidden on mobile, visible on desktop
- Landing page has no hero — starts with content sections
- /setups renders SetupsView
- /collection has 2 tabs (Gear, Planning)
- Anonymous nav clicks trigger AuthPromptModal
- CatalogSearchOverlay opens from nav search bar and bottom tab bar Search
- Complete navigation flow works on both desktop and mobile viewports
- All 17 locked decisions (D-01 through D-17) are satisfied
- No visual regressions on existing pages
- No console errors