style(ui): adopt Liquid Glass on opaque controls
All checks were successful
CI / build-and-deploy (push) Successful in 14s
All checks were successful
CI / build-and-deploy (push) Successful in 14s
Swap hardcoded systemGray/Color.blue pill and button fills for the iOS 26 Liquid Glass APIs so controls read native under the new design system: - BookmarkRow tag chips: glassEffect in a GlassEffectContainer - Podcast speed button: glassEffect capsule - Podcast retry + Onboarding Connect: glassProminent button style Onboarding text-field fills left as systemGray6 (standard adaptive field fill; glass behind editable text hurts legibility). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -75,15 +75,16 @@ struct BookmarkRow: View {
|
|||||||
|
|
||||||
if !effectiveTags.isEmpty {
|
if !effectiveTags.isEmpty {
|
||||||
ScrollView(.horizontal, showsIndicators: false) {
|
ScrollView(.horizontal, showsIndicators: false) {
|
||||||
HStack(spacing: 6) {
|
GlassEffectContainer(spacing: 6) {
|
||||||
ForEach(effectiveTags, id: \.self) { tag in
|
HStack(spacing: 6) {
|
||||||
Text(tag)
|
ForEach(effectiveTags, id: \.self) { tag in
|
||||||
.font(.caption.weight(.medium))
|
Text(tag)
|
||||||
.foregroundStyle(.secondary)
|
.font(.caption.weight(.medium))
|
||||||
.padding(.horizontal, 8)
|
.foregroundStyle(.secondary)
|
||||||
.padding(.vertical, 3)
|
.padding(.horizontal, 8)
|
||||||
.background(Color(.systemGray6))
|
.padding(.vertical, 3)
|
||||||
.clipShape(Capsule())
|
.glassEffect(in: Capsule())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -89,10 +89,9 @@ struct OnboardingView: View {
|
|||||||
}
|
}
|
||||||
.frame(maxWidth: .infinity)
|
.frame(maxWidth: .infinity)
|
||||||
.frame(height: 52)
|
.frame(height: 52)
|
||||||
.background(canConnect ? Color.primary : Color(.systemGray4))
|
|
||||||
.foregroundStyle(canConnect ? Color(UIColor.systemBackground) : Color(.systemGray2))
|
|
||||||
.clipShape(RoundedRectangle(cornerRadius: 14))
|
|
||||||
}
|
}
|
||||||
|
.buttonStyle(.glassProminent)
|
||||||
|
.buttonBorderShape(.roundedRectangle(radius: 14))
|
||||||
.disabled(!canConnect || isConnecting)
|
.disabled(!canConnect || isConnecting)
|
||||||
.padding(.horizontal, 24)
|
.padding(.horizontal, 24)
|
||||||
.padding(.top, 24)
|
.padding(.top, 24)
|
||||||
|
|||||||
@@ -464,8 +464,7 @@ struct PodcastPlayerView: View {
|
|||||||
.foregroundStyle(.secondary)
|
.foregroundStyle(.secondary)
|
||||||
.padding(.horizontal, 14)
|
.padding(.horizontal, 14)
|
||||||
.padding(.vertical, 7)
|
.padding(.vertical, 7)
|
||||||
.background(Color(.systemGray5))
|
.glassEffect(in: Capsule())
|
||||||
.clipShape(Capsule())
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if let url = URL(string: articleUrl) {
|
if let url = URL(string: articleUrl) {
|
||||||
@@ -494,12 +493,10 @@ struct PodcastPlayerView: View {
|
|||||||
} label: {
|
} label: {
|
||||||
Label("Retry", systemImage: "arrow.clockwise")
|
Label("Retry", systemImage: "arrow.clockwise")
|
||||||
.font(.system(size: 15, weight: .semibold))
|
.font(.system(size: 15, weight: .semibold))
|
||||||
.foregroundStyle(.white)
|
|
||||||
.padding(.horizontal, 24)
|
|
||||||
.padding(.vertical, 10)
|
|
||||||
.background(Color.blue)
|
|
||||||
.clipShape(Capsule())
|
|
||||||
}
|
}
|
||||||
|
.buttonStyle(.glassProminent)
|
||||||
|
.tint(.blue)
|
||||||
|
.buttonBorderShape(.capsule)
|
||||||
.padding(.top, 4)
|
.padding(.top, 4)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user