Files
jarvis/Jervis/Views/Shared/CachedBadge.swift
Kutesir bd632a1592
Some checks are pending
CI / Build · Debug (push) Waiting to run
CI / Build · Release (push) Waiting to run
rename: Jarvis -> Jervis target, scheme, and folder throughout
The bundle-ID and display-name renames weren't enough — the actual
Xcode target/product name was still "Jarvis", which drives CFBundleName,
Xcode's Organizer archive list, the .xcodeproj filename, and the scheme
name. Renamed all the way through:

- project.yml: top-level name, target key, PRODUCT_NAME, source/info paths
- Jarvis/ -> Jervis/ (source folder, git-tracked as renames, no content
  diffs on the moved files)
- .gitignore, CI workflows, README, CONTRIBUTING: Jarvis.xcodeproj /
  scheme Jarvis -> Jervis.xcodeproj / scheme Jervis

Verified: xcodebuild -scheme Jervis succeeds, produces Jervis.app,
CFBundleName/CFBundleExecutable/CFBundleDisplayName all read "Jervis".
CFBundleIdentifier intentionally stays com.kisani.jarvis (per prior
decision — bundle ID isn't user-facing anywhere including Organizer).

Swift type names (JarvisApp, JarvisWordmark, etc.) and the Gitea repo
name/URL are unchanged — pure internal source identifiers, not user or
developer-facing product identity.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-13 03:49:31 +03:00

44 lines
1.2 KiB
Swift

// CachedBadge.swift
// Jarvis offline-cache indicators (a bare dot, and a labelled green badge).
import SwiftUI
/// Tiny green dot used in the signal feed rows when a story is cached offline.
struct CachedDot: View {
var size: CGFloat = 7
var body: some View {
Circle()
.fill(Palette.cachedGreen)
.frame(width: size, height: size)
.overlay(Circle().stroke(Color(hex: "3E7E3E"), lineWidth: 0.5))
}
}
/// Labelled green badge "Cached", or "All N articles cached · available offline".
struct CachedBadge: View {
let text: String
var body: some View {
HStack(spacing: 6) {
CachedDot(size: 6)
Text(text)
.font(.system(size: 12, weight: .bold))
.foregroundStyle(Color(hex: "6FBF6F"))
}
.padding(.horizontal, 9)
.padding(.vertical, 5)
.background(Palette.cachedGreen.opacity(0.18))
.clipShape(Capsule())
}
}
#Preview {
VStack(spacing: 16) {
CachedDot()
CachedBadge(text: "Cached")
CachedBadge(text: "All 7 articles cached · available offline")
}
.padding()
.background(Palette.background)
}