diff --git a/Flipcash/Core/Screens/Main/Home/HomeTab.swift b/Flipcash/Core/Screens/Main/Home/HomeTab.swift index 6c78efe1a..a4f823e03 100644 --- a/Flipcash/Core/Screens/Main/Home/HomeTab.swift +++ b/Flipcash/Core/Screens/Main/Home/HomeTab.swift @@ -5,15 +5,17 @@ import SwiftUI -/// The tabs of the v2 tab-bar UI, in display order (left → right). The app -/// launches on `.wallet` (wallet-first), mirroring the Android v2 UI. +/// The tabs of the v2 tab-bar UI, in display order (left → right). Chat sits +/// second, beside the scanner that feeds it, and the app still launches on +/// `.wallet` — declaration order is the bar's order, not the launch tab. Matches +/// Android's `NavBarButton.tabs`. /// /// Icons are the Figma tab-bar glyphs (`Nav*` template imagesets, from the same /// vectors as Android's `ic_nav_*`), tinted white at the call site. enum HomeTab: Int, CaseIterable, Identifiable, Hashable { case scan - case wallet case chat + case wallet case tipCard var id: Int { rawValue } @@ -23,12 +25,22 @@ enum HomeTab: Int, CaseIterable, Identifiable, Hashable { /// The asset-catalog name of the tab's template glyph. Selected tabs use a /// filled glyph and the rest an outline, per the tab bar spec. + /// + /// The scanner reads tip cards, so it carries the tip card itself rather + /// than a viewfinder, and You takes the people-circle the scanner's slot + /// left free — the glyph it shows when there is no profile photo to draw in + /// its place (node 10000:111297). + /// + /// That fallback's filled weight comes from Material Icons' `account_circle` + /// rather than from the design file, which draws the You tab only as an + /// outline. It is the same glyph solid, and Android's people circle takes its + /// selected weight from the same place, so the two bars fill alike. func iconName(isSelected: Bool) -> String { switch self { - case .scan: return isSelected ? "NavScanSelected" : "NavScan" - case .wallet: return isSelected ? "NavWalletSelected" : "NavWallet" + case .scan: return isSelected ? "NavTipCardSelected" : "NavTipCard" case .chat: return isSelected ? "NavChatSelected" : "NavChat" - case .tipCard: return isSelected ? "NavTipCardSelected" : "NavTipCard" + case .wallet: return isSelected ? "NavWalletSelected" : "NavWallet" + case .tipCard: return isSelected ? "NavPeopleSelected" : "NavPeople" } } @@ -36,8 +48,8 @@ enum HomeTab: Int, CaseIterable, Identifiable, Hashable { var accessibilityLabel: String { switch self { case .scan: return "Scan" - case .wallet: return "Wallet" case .chat: return "Chat" + case .wallet: return "Wallet" case .tipCard: return "You" } } diff --git a/Flipcash/Core/Screens/Main/Home/HomeTabView.swift b/Flipcash/Core/Screens/Main/Home/HomeTabView.swift index 1c770fd01..d539fd9e2 100644 --- a/Flipcash/Core/Screens/Main/Home/HomeTabView.swift +++ b/Flipcash/Core/Screens/Main/Home/HomeTabView.swift @@ -123,8 +123,8 @@ struct HomeTabView: View { /// Derived in the body rather than waited on: the profile is hydrated from /// the database before the first paint, so a cold launch knows a picture is /// coming — and can decode its BlurHash — while the thumbnail is still being - /// read back. Keying only on the loaded photo would show the glyph until it - /// landed, which is the tip card's icon on somebody who has a picture. + /// read back. Keying only on the loaded photo would show the no-photo glyph + /// until it landed, on somebody who has a picture. private var profileSlot: ProfileTabSlot? { if let photo = profilePhoto.photo { return .photo(photo) } guard let picture = profilePicture, picture.thumbnailBlobID != nil else { return nil } diff --git a/Flipcash/Core/Screens/Main/Home/NewUserTutorial.swift b/Flipcash/Core/Screens/Main/Home/NewUserTutorial.swift index f9f32e484..7f216b0a2 100644 --- a/Flipcash/Core/Screens/Main/Home/NewUserTutorial.swift +++ b/Flipcash/Core/Screens/Main/Home/NewUserTutorial.swift @@ -37,7 +37,7 @@ nonisolated enum TutorialItem: TutorialItemPresentable { var icon: Image { switch self { case .addMoney: return Image(systemName: "plus.circle") - case .scanTipCard: return Image("NavScan") + case .scanTipCard: return Image("NavTipCard") } } } diff --git a/Flipcash/Supporting Files/Assets.xcassets/NavScan.imageset/Contents.json b/Flipcash/Supporting Files/Assets.xcassets/NavPeople.imageset/Contents.json similarity index 86% rename from Flipcash/Supporting Files/Assets.xcassets/NavScan.imageset/Contents.json rename to Flipcash/Supporting Files/Assets.xcassets/NavPeople.imageset/Contents.json index 62f705563..4189e278b 100644 --- a/Flipcash/Supporting Files/Assets.xcassets/NavScan.imageset/Contents.json +++ b/Flipcash/Supporting Files/Assets.xcassets/NavPeople.imageset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "nav_scan.svg", + "filename" : "nav_people.svg", "idiom" : "universal" } ], diff --git a/Flipcash/Supporting Files/Assets.xcassets/NavPeople.imageset/nav_people.svg b/Flipcash/Supporting Files/Assets.xcassets/NavPeople.imageset/nav_people.svg new file mode 100644 index 000000000..f1008f359 --- /dev/null +++ b/Flipcash/Supporting Files/Assets.xcassets/NavPeople.imageset/nav_people.svg @@ -0,0 +1,4 @@ + + + + diff --git a/Flipcash/Supporting Files/Assets.xcassets/NavScanSelected.imageset/Contents.json b/Flipcash/Supporting Files/Assets.xcassets/NavPeopleSelected.imageset/Contents.json similarity index 83% rename from Flipcash/Supporting Files/Assets.xcassets/NavScanSelected.imageset/Contents.json rename to Flipcash/Supporting Files/Assets.xcassets/NavPeopleSelected.imageset/Contents.json index 122376f54..8be4f43e5 100644 --- a/Flipcash/Supporting Files/Assets.xcassets/NavScanSelected.imageset/Contents.json +++ b/Flipcash/Supporting Files/Assets.xcassets/NavPeopleSelected.imageset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "nav_scan_selected.svg", + "filename" : "nav_people_selected.svg", "idiom" : "universal" } ], diff --git a/Flipcash/Supporting Files/Assets.xcassets/NavPeopleSelected.imageset/nav_people_selected.svg b/Flipcash/Supporting Files/Assets.xcassets/NavPeopleSelected.imageset/nav_people_selected.svg new file mode 100644 index 000000000..6576209da --- /dev/null +++ b/Flipcash/Supporting Files/Assets.xcassets/NavPeopleSelected.imageset/nav_people_selected.svg @@ -0,0 +1,6 @@ + + + + diff --git a/Flipcash/Supporting Files/Assets.xcassets/NavScan.imageset/nav_scan.svg b/Flipcash/Supporting Files/Assets.xcassets/NavScan.imageset/nav_scan.svg deleted file mode 100644 index 0b6c9f781..000000000 --- a/Flipcash/Supporting Files/Assets.xcassets/NavScan.imageset/nav_scan.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/Flipcash/Supporting Files/Assets.xcassets/NavScanSelected.imageset/nav_scan_selected.svg b/Flipcash/Supporting Files/Assets.xcassets/NavScanSelected.imageset/nav_scan_selected.svg deleted file mode 100644 index d5d146feb..000000000 --- a/Flipcash/Supporting Files/Assets.xcassets/NavScanSelected.imageset/nav_scan_selected.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -