-
Notifications
You must be signed in to change notification settings - Fork 0
Closed
Labels
bugSomething isn't workingSomething isn't workingenhancementNew feature or requestNew feature or request
Description
🐛 Problem Description
Multiple navigation inconsistencies and missing core features identified across all app screens.
Navigation Issues:
- Back buttons on main tab screens - Appearing on Home, Locations, Analytics, and Settings tabs
- Missing universal search - No app-wide search functionality
- No Add Item access point - Primary user action not accessible from main UI
- Tab bar text truncation - "Electro" instead of "Electronics"
- Missing barcode scanner access - Featured in onboarding but no UI entry point
🔍 Existing Code References
Navigation Components:
- MainTabView:
Source/Views/MainTabView.swift- Has state variables for modals:
showingAddItem,showingScanner,showingNaturalLanguageSearch - Modal presentations configured but not triggered
- Has state variables for modals:
- NavigationStackView:
UI-Navigation/Sources/UINavigation/Navigation/NavigationStackView.swift- Custom navigation wrapper with back button control
Missing Feature Implementations:
- Add Item: State exists but no UI trigger
- Barcode Scanner:
Features-Scanner/Sources/FeaturesScanner/Views/BarcodeScannerView.swift- Fully implemented - Natural Language Search: Referenced but not implemented
- Receipt Scanner:
Features-Receipts/Sources/FeaturesReceipts/Views/ReceiptScannerView.swift- Available
📝 Implementation Plan
1. Remove Back Buttons from Main Tabs
// In MainTabView.swift, modify tab content views
TabView(selection: $selectedTab) {
NavigationStackView(showBackButton: false) {
HomeDashboardView()
}
.tabItem { /* ... */ }
.tag(0)
NavigationStackView(showBackButton: false) {
ItemsListView()
}
.tabItem { /* ... */ }
.tag(1)
// Repeat for all tabs...
}2. Add Floating Action Button for Add Item
// In MainTabView.swift
ZStack {
TabView(selection: $selectedTab) {
// ... existing tabs
}
// Floating Action Button
VStack {
Spacer()
HStack {
Spacer()
Menu {
Button(action: { showingAddItem = true }) {
Label("Add Item", systemImage: "plus.circle")
}
Button(action: { showingScanner = true }) {
Label("Scan Barcode", systemImage: "barcode.viewfinder")
}
Button(action: { showingReceiptScanner = true }) {
Label("Scan Receipt", systemImage: "doc.text.viewfinder")
}
} label: {
Image(systemName: "plus.circle.fill")
.resizable()
.frame(width: 56, height: 56)
.foregroundColor(.accentColor)
.background(Circle().fill(Color.white))
.shadow(radius: 4)
}
.padding()
}
}
}3. Implement Universal Search Bar
// Add to MainTabView or as overlay
struct UniversalSearchBar: View {
@State private var searchText = ""
@State private var showingResults = false
var body: some View {
VStack {
HStack {
Image(systemName: "magnifyingglass")
.foregroundColor(.secondary)
TextField("Search items, locations, or scan barcode...", text: $searchText)
.textFieldStyle(RoundedBorderTextFieldStyle())
.onSubmit {
performSearch()
}
Button(action: { showingScanner = true }) {
Image(systemName: "barcode.viewfinder")
}
}
.padding()
.background(Color(.systemBackground))
.shadow(radius: 2)
}
}
}4. Fix Tab Bar Text Truncation
// In ItemsListView category tabs
ScrollView(.horizontal, showsIndicators: false) {
HStack(spacing: 12) {
ForEach(categories) { category in
Text(category.name)
.font(.system(size: 14))
.padding(.horizontal, 16)
.padding(.vertical, 8)
.background(selectedCategory == category ? Color.accentColor : Color.gray.opacity(0.2))
.foregroundColor(selectedCategory == category ? .white : .primary)
.clipShape(Capsule())
.lineLimit(1)
.minimumScaleFactor(0.8) // Allow text scaling
}
}
.padding(.horizontal)
}5. Add Quick Actions to Home Dashboard
// In HomeDashboardView.swift
struct QuickActionsCard: View {
@Binding var showingAddItem: Bool
@Binding var showingScanner: Bool
var body: some View {
VStack(alignment: .leading, spacing: 12) {
Text("Quick Actions")
.font(.headline)
HStack(spacing: 16) {
QuickActionButton(
icon: "plus.circle",
title: "Add Item",
action: { showingAddItem = true }
)
QuickActionButton(
icon: "barcode.viewfinder",
title: "Scan",
action: { showingScanner = true }
)
QuickActionButton(
icon: "magnifyingglass",
title: "Search",
action: { showingSearch = true }
)
}
}
.padding()
.background(Color(.secondarySystemBackground))
.cornerRadius(12)
}
}🎯 Additional Navigation Enhancements
Deep Linking Support
// Enable deep linking for common actions
enum DeepLink: String {
case addItem = "homeinventory://add-item"
case scanBarcode = "homeinventory://scan"
case search = "homeinventory://search"
}Keyboard Shortcuts (iPad)
.keyboardShortcut("n", modifiers: .command) // New item
.keyboardShortcut("f", modifiers: .command) // Search
.keyboardShortcut("s", modifiers: [.command, .shift]) // Scan✅ Acceptance Criteria
- No back buttons appear on main tab screens
- Floating action button provides quick access to Add/Scan functions
- Universal search accessible from all screens
- Tab bar text displays without truncation
- Barcode scanner accessible via multiple entry points
- All modal presentations work correctly
- Navigation state preserved when switching tabs
- Keyboard shortcuts work on iPad
🏷️ Labels
- bug
- enhancement
📊 Priority
High - Core UX and navigation flow
🔗 Related Issues
- Fix Home Screen UI Issues - Search, Navigation, and Missing Features #200 - Home screen missing Add Item button
- Enhance Locations Screen - Add Item Counts and Fix Truncation #201 - Locations screen navigation
- Complete Analytics Implementation - Add Charts and Location Distribution #202 - Analytics screen navigation
- Complete Settings Implementation - Data Management and Toggle States #203 - Settings screen navigation
📎 Key Files
Source/Views/MainTabView.swift- Main navigation containerUI-Navigation/Sources/UINavigation/Navigation/NavigationStackView.swift- Navigation wrapperFeatures-Scanner/Sources/FeaturesScanner/Views/BarcodeScannerView.swift- Scanner implementation
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't workingenhancementNew feature or requestNew feature or request