- Flatten project structure: remove Models/, Services/, ViewModels/, Views/ subdirs - Replace APIService actor with simpler Api class, IS_DEV flag controls dev vs prod URL - Rewrite BeaconScanner to use CoreLocation (CLBeaconRegion ranging) instead of CoreBluetooth — iOS blocks iBeacon data from CBCentralManager - Add SVG logo on login page with proper scaling (was showing green square) - Make login page scrollable, add "enter 6-digit code" OTP instruction - Fix text input visibility (white on white) with .foregroundColor(.primary) - Add diagonal orange DEV ribbon banner (lower-left corner), gated on Api.IS_DEV - Update app icon: logo 10% larger, wifi icon closer - Add en.lproj/InfoPlist.strings for display name localization - Fix scan flash: keep isScanning=true until enrichment completes - Add Podfile with SVGKit, Kingfisher, CocoaLumberjack dependencies Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
29 lines
831 B
Swift
29 lines
831 B
Swift
import SwiftUI
|
|
|
|
struct DevRibbon: View {
|
|
var body: some View {
|
|
if Api.IS_DEV {
|
|
GeometryReader { geo in
|
|
ZStack {
|
|
Text("DEV")
|
|
.font(.system(size: 11, weight: .bold))
|
|
.tracking(2)
|
|
.foregroundColor(.white)
|
|
.frame(width: 140, height: 22)
|
|
.background(Color(red: 255/255, green: 152/255, blue: 0/255))
|
|
.rotationEffect(.degrees(45))
|
|
.position(x: 35, y: geo.size.height - 35)
|
|
}
|
|
}
|
|
.allowsHitTesting(false)
|
|
}
|
|
}
|
|
}
|
|
|
|
struct DevBanner: ViewModifier {
|
|
func body(content: Content) -> some View {
|
|
content.overlay {
|
|
DevRibbon()
|
|
}
|
|
}
|
|
}
|