|
1 | 1 | # GotJUNK? FoundUp - Module Change Log |
2 | 2 |
|
| 3 | +## Modal & Icon UI Refinements (2025-11-09) |
| 4 | + |
| 5 | +**Session Summary**: Fixed critical UX issues with modal layering, instructions popup, and icon sizing based on user feedback. |
| 6 | + |
| 7 | +### PR #62: Sidebar Icon Size Adjustment |
| 8 | +**Problem**: 12px icons were too small for thumb accessibility on mobile. |
| 9 | +**Fix**: Increased icon size from 12px → 16px in `LeftSidebarNav.tsx` |
| 10 | +- GridIcon, MapIcon, HomeIcon, CartIcon all updated |
| 11 | +- Maintains 54px button size with 19px padding per side |
| 12 | +- User confirmed improved visibility and accessibility |
| 13 | + |
| 14 | +### PR #63: Instructions Modal & Sidebar Position |
| 15 | +**Changes**: |
| 16 | +1. **Instructions modal now shows on every page load** (removed localStorage persistence) |
| 17 | + - Before: Showed once, then never again |
| 18 | + - After: Shows on every refresh for consistent onboarding |
| 19 | + - Changed `useState(() => { ...localStorage... })` → `useState(true)` |
| 20 | + |
| 21 | +2. **Sidebar moved up 10px** for better thumb reach |
| 22 | + - Changed `--sb-bottom-safe` from 120px → 130px in `index.css` |
| 23 | + - Applies to all 4 navigation icons |
| 24 | + |
| 25 | +### PR #64: Instructions Modal Visual Improvements |
| 26 | +**Problem**: Modal used emoji arrows instead of actual UI components. |
| 27 | +**Fix**: Complete redesign with actual swipe button components |
| 28 | +- Imports `LeftArrowIcon` and `RightArrowIcon` from button components |
| 29 | +- Recreates exact button styling: `bg-red-600/50` and `bg-green-500/50` |
| 30 | +- Compact 80% width layout (max-width 340px) |
| 31 | +- Added `pointer-events-none` to prevent interaction in tutorial |
| 32 | + |
| 33 | +### PR #65: Instructions Modal Overlap Fix |
| 34 | +**Problem**: Modal used `32px` instead of Tailwind `bottom-32` (8rem = 128px). |
| 35 | +**Fix**: Corrected bottom calculation |
| 36 | +- Changed `calc(32px + ...)` → `calc(8rem + ...)` |
| 37 | +- Fixed 96px positioning error that caused overlap with camera orb |
| 38 | + |
| 39 | +### PR #66: Z-Index Hierarchy Fix ⭐ |
| 40 | +**Problem**: ClassificationModal (`z-[200]`) appeared **behind** camera orb (2120) and sidebar (2200). |
| 41 | +**Root Cause**: All modals had hardcoded low z-index values (200-300 range). |
| 42 | + |
| 43 | +**Fix**: Added centralized z-index constants in `zLayers.ts` |
| 44 | +```typescript |
| 45 | +export const Z_LAYERS = { |
| 46 | + popup: 1200, |
| 47 | + fullscreen: 1400, |
| 48 | + gallery: 1500, |
| 49 | + mapOverlay: 1600, |
| 50 | + floatingControls: 2100, |
| 51 | + sidebar: 2200, |
| 52 | + modal: 2300, // NEW - ClassificationModal, OptionsModal |
| 53 | + actionSheet: 2400, // NEW - Discount/Bid sheets |
| 54 | +} as const; |
| 55 | +``` |
| 56 | + |
| 57 | +**Files Updated**: |
| 58 | +- `ClassificationModal.tsx`: z-[200] → `Z_LAYERS.modal` (2300) |
| 59 | +- `OptionsModal.tsx`: z-[300] → `Z_LAYERS.modal` (2300) |
| 60 | +- `ActionSheetDiscount.tsx`: z-[250/251] → `Z_LAYERS.actionSheet` (2400) |
| 61 | +- `ActionSheetBid.tsx`: z-[250/251] → `Z_LAYERS.actionSheet` (2400) |
| 62 | + |
| 63 | +**Result**: Classification modal now correctly appears above all controls. |
| 64 | + |
| 65 | +### PR #67: Instructions Modal - Browse Tab Only |
| 66 | +**Problem**: Modal appeared on ALL tabs (Browse, Map, My Items, Cart). |
| 67 | +**Fix**: Added tab condition to only show on landing page |
| 68 | +- Changed `isOpen={showInstructions}` → `isOpen={showInstructions && activeTab === 'browse'}` |
| 69 | +- Prevents confusion when user navigates to other tabs on first load |
| 70 | + |
| 71 | +### PR #68: Instructions Modal Centering |
| 72 | +**Problem**: Complex bottom calculation pushed modal half off-screen. |
| 73 | +**Fix**: Proper CSS centering |
| 74 | +```tsx |
| 75 | +// Before - Off-screen |
| 76 | +bottom: 'calc(8rem + clamp(128px, 16vh, 192px) + 40px)' |
| 77 | + |
| 78 | +// After - Centered |
| 79 | +className="fixed left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" |
| 80 | +style={{ maxHeight: '80vh' }} |
| 81 | +``` |
| 82 | + |
| 83 | +**WSP Compliance**: |
| 84 | +- **WSP 50**: Pre-action verification (read icon components before editing) |
| 85 | +- **WSP 22**: ModLog documentation (this entry) |
| 86 | +- **WSP 64**: Z-index contract established (no hardcoded values) |
| 87 | +- **WSP 87**: NO vibecoding - followed existing patterns |
| 88 | + |
| 89 | +**Metrics**: |
| 90 | +- 7 PRs merged in single session |
| 91 | +- Build time: ~2.7s average |
| 92 | +- Bundle size stable: ~417 kB (130 kB gzipped) |
| 93 | +- Zero regressions introduced |
| 94 | + |
| 95 | +**User Feedback Integration**: |
| 96 | +- Icon size: User tested and confirmed 16px optimal |
| 97 | +- Modal positioning: User-reported overlap issues resolved |
| 98 | +- Z-index: User screenshot showed modal behind controls - fixed |
| 99 | +- Tab targeting: User clarified landing page behavior - implemented |
| 100 | + |
| 101 | +--- |
| 102 | + |
3 | 103 | ## Adaptive Icon Visibility on Map View (2025-11-08) |
4 | 104 |
|
5 | 105 | **Problem**: Sidebar navigation icons (grid, map, home, cart) had low contrast against varied map tile backgrounds: |
|
0 commit comments