• Steven's avatar
    refactor(web): unify memo stats/filters with context-aware MainLayout · 1d7efb15
    Steven authored
    Create unified architecture for memo statistics, filters, and sorting
    across all pages (Home, Explore, Archived, Profile) with proper
    visibility filtering and consistent data flow.
    
    Key changes:
    - Rename HomeLayout → MainLayout to reflect broader usage
    - Create useFilteredMemoStats hook for unified stats computation
    - Create useMemoFilters/useMemoSorting hooks to eliminate duplication
    - Refactor all pages to use unified hooks (~147 lines removed)
    - Move Explore route under MainLayout (was sibling before)
    - Fix masonry column calculation threshold (1024px → 688px+)
    
    Architecture improvements:
    - MainLayout computes filter/stats per route context
    - Stats/tags based on same filter as memo list (consistency)
    - Proper visibility filtering (PUBLIC/PROTECTED) on Explore
    - MemoExplorer/StatisticsView accept stats as required props
    - Eliminated optional fallbacks and redundant data fetching
    
    Benefits:
    - Single source of truth for stats computation
    - Stats remain static (don't change with user filters)
    - Reduced code duplication across 4 pages
    - Better maintainability and type safety
    - Proper security (no private memo leakage on Explore)
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    Co-Authored-By: 's avatarClaude <noreply@anthropic.com>
    1d7efb15
StatisticsView.tsx 4.4 KB