From 02f84fa1f059b51dcc925c2b8588c4e33b352261 Mon Sep 17 00:00:00 2001 From: senke Date: Fri, 16 Jan 2026 00:32:05 +0100 Subject: [PATCH] docs: determine primary upload button location (Action 8.1.1.2) - Primary: Dashboard FAB (global, always accessible, most prominent) - Secondary: LibraryPage header button (contextual, always visible) - To remove: LibraryPage empty state buttons (redundant) - To remove: LibraryManager buttons (component unused - legacy code) - Updated audit document with decision rationale - Task 8.1.1.2 complete --- EXHAUSTIVE_TODO_LIST.md | 13 ++++-- apps/web/docs/UPLOAD_BUTTONS_AUDIT.md | 62 ++++++++++++++++++++++++++- 2 files changed, 71 insertions(+), 4 deletions(-) diff --git a/EXHAUSTIVE_TODO_LIST.md b/EXHAUSTIVE_TODO_LIST.md index 19087165e..8e03fc1dd 100644 --- a/EXHAUSTIVE_TODO_LIST.md +++ b/EXHAUSTIVE_TODO_LIST.md @@ -2770,11 +2770,18 @@ Critical path dependencies: - **Recommendations**: Keep Dashboard FAB and LibraryPage header, remove empty state duplicates - **Rollback**: N/A (audit) -- [ ] **Action 8.1.1.2**: Determine primary upload button location +- [x] **Action 8.1.1.2**: Determine primary upload button location - **Scope**: Based on Action 8.1.1.1 - Decide which location is primary (likely header/FAB) - - **Dependencies**: Action 8.1.1.1 complete + - **Dependencies**: Action 8.1.1.1 complete ✅ - **Risk**: LOW - - **Validation**: Primary location documented + - **Validation**: ✅ Primary location determined and documented: + - **Primary**: Dashboard FAB (global, always accessible, most prominent) + - **Secondary**: LibraryPage header button (contextual, always visible on library page) + - **To Remove**: + - LibraryPage empty state buttons (redundant with header) + - LibraryManager buttons (component unused - legacy code) + - **Documentation**: Updated `apps/web/docs/UPLOAD_BUTTONS_AUDIT.md` with decision rationale + - **Rationale**: FAB is most prominent and globally accessible; header button provides contextual access - **Rollback**: N/A (decision) - [ ] **Action 8.1.1.3**: Remove duplicate upload buttons diff --git a/apps/web/docs/UPLOAD_BUTTONS_AUDIT.md b/apps/web/docs/UPLOAD_BUTTONS_AUDIT.md index dcbfe586e..a3b4ed6a5 100644 --- a/apps/web/docs/UPLOAD_BUTTONS_AUDIT.md +++ b/apps/web/docs/UPLOAD_BUTTONS_AUDIT.md @@ -150,6 +150,66 @@ Found **6 upload button instances** across **3 components**: 3. **Remove**: LibraryPage empty state buttons (redundant) 4. **Evaluate**: LibraryManager buttons (determine if LibraryManager is still used) +## Primary Upload Button Decision + +**Date**: 2025-01-27 +**Task**: Action 8.1.1.2 - Determine primary upload button location +**Status**: ✅ Complete + +### Decision + +**Primary Upload Button**: **Dashboard FAB (Floating Action Button)** + +**Rationale**: +1. **Global accessibility**: Always visible on dashboard, accessible from any page +2. **Prominence**: FAB is the most prominent UI element (fixed position, large size, glow effect) +3. **User flow**: Dashboard is the main entry point, FAB provides quick access to upload +4. **Consistency**: FAB pattern is standard for primary actions in modern UIs +5. **Navigation**: FAB navigates to library page with upload action, maintaining context + +**Secondary Upload Button**: **LibraryPage Header Button** + +**Rationale**: +1. **Contextual**: When user is already on library page, header button provides direct access +2. **Always visible**: Header button is always visible on library page (not conditional) +3. **Direct action**: Opens upload modal directly without navigation +4. **User convenience**: Provides upload access without leaving library page + +### Buttons to Remove + +1. **LibraryPage Empty State Buttons** (Grid and List views) + - **Reason**: Redundant - header button is always visible on library page + - **Impact**: Low - users can use header button instead + - **Locations**: + - `LibraryPage.tsx:607-610` (grid view empty state) + - `LibraryPage.tsx:632-635` (list view empty state) + +2. **LibraryManager Buttons** (Header and Empty State) + - **Reason**: LibraryManager component is not used anywhere in the codebase + - **Impact**: None - component is legacy/unused code + - **Locations**: + - `LibraryManager.tsx:176-179` (header button) + - `LibraryManager.tsx:250-253` (empty state button) + - **Note**: Consider removing entire LibraryManager component if confirmed unused + +### Final Button Configuration + +**Keep (2 buttons)**: +1. ✅ Dashboard FAB - Primary global upload action +2. ✅ LibraryPage header button - Secondary contextual action + +**Remove (4 buttons)**: +1. ❌ LibraryPage empty state (grid view) +2. ❌ LibraryPage empty state (list view) +3. ❌ LibraryManager header button (unused component) +4. ❌ LibraryManager empty state button (unused component) + +### Implementation Plan + +1. Remove LibraryPage empty state buttons (Action 8.1.1.3) +2. Remove LibraryManager buttons (Action 8.1.1.3) +3. Verify upload functionality works with remaining buttons +4. Consider removing LibraryManager component entirely (future cleanup) + ## Next Steps -- Action 8.1.1.2: Determine primary upload button location - Action 8.1.1.3: Remove duplicate upload buttons