Files
Doug c5b1c5d1bd Use more Liquid Glass in the room/space screen toolbars (#4965)
* Add a glass style to the Room/Space header view on iOS 26.

* Update snapshots and fix the join call button.
2026-01-16 19:29:27 +00:00

75 lines
2.3 KiB
Swift

//
// Copyright 2025 Element Creations Ltd.
// Copyright 2025 New Vector Ltd.
//
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial.
// Please see LICENSE files in the repository root for full details.
//
import Compound
import SwiftUI
extension View {
// MARK: iOS 26
@ViewBuilder func backportTabBarMinimizeBehaviorOnScrollDown() -> some View {
if #available(iOS 26.0, *) {
tabBarMinimizeBehavior(.onScrollDown)
} else {
self
}
}
@ViewBuilder
func backportSafeAreaBar(edge: VerticalEdge,
alignment: HorizontalAlignment = .center,
spacing: CGFloat? = nil,
content: () -> some View) -> some View {
if #available(iOS 26.0, *) {
safeAreaBar(edge: edge, alignment: alignment, spacing: spacing, content: content)
} else {
safeAreaInset(edge: edge, alignment: alignment, spacing: spacing) { content().background(Color.compound.bgCanvasDefault.ignoresSafeArea()) }
}
}
@ViewBuilder func backportScrollEdgeEffectHidden() -> some View {
if #available(iOS 26, *) {
scrollEdgeEffectHidden()
} else {
self
}
}
@ViewBuilder func backportButtonStyleGlass() -> some View {
if #available(iOS 26, *) {
buttonStyle(.glass)
} else {
self
}
}
@ViewBuilder func backportButtonStyleGlassProminent() -> some View {
if #available(iOS 26, *) {
// `.glassProminent` breaks our preview tests so we need to disable it when running tests.
// https://github.com/pointfreeco/swift-snapshot-testing/issues/1029#issuecomment-3366942138
if ProcessInfo.isRunningUnitTests {
self
} else {
buttonStyle(.glassProminent)
}
} else {
buttonStyle(.borderedProminent)
}
}
}
extension ToolbarContent {
@ToolbarContentBuilder func backportSharedBackgroundVisibility(_ visibility: Visibility) -> some ToolbarContent {
if #available(iOS 26.0, *) {
sharedBackgroundVisibility(visibility)
} else {
self
}
}
}