Files
Termind/TFI/DesignSystem/MobileToolbarEnvironment.swift
T

56 lines
1.7 KiB
Swift

import SwiftUI
struct MobileToolbarLayout: Equatable {
var isTopBar = false
var verticalEdge: HorizontalEdge?
var isVertical: Bool { verticalEdge != nil }
var usesIconSwitcher: Bool { isTopBar || isVertical }
var showsWorkspaceTabs: Bool { isTopBar || isVertical }
}
extension EnvironmentValues {
@Entry var mobileToolbarLayout = MobileToolbarLayout()
}
/// Read inside a Tab's content, outside the detail's visibility preferences.
private struct MobileToolbarEnvironment: ViewModifier {
@Environment(\.tabBarPlacement) private var placement
func body(content: Content) -> some View {
#if TERMIND_HAS_IOS_27_1_SDK
if #available(iOS 27.1, *) {
content.modifier(MobileVerticalToolbarEnvironment(isTopBar: placement == .topBar))
} else {
content.environment(
\.mobileToolbarLayout,
MobileToolbarLayout(isTopBar: placement == .topBar))
}
#else
content.environment(
\.mobileToolbarLayout,
MobileToolbarLayout(isTopBar: placement == .topBar))
#endif
}
}
#if TERMIND_HAS_IOS_27_1_SDK
@available(iOS 27.1, *)
private struct MobileVerticalToolbarEnvironment: ViewModifier {
let isTopBar: Bool
@Environment(\.toolbarVerticalEdge) private var edge
func body(content: Content) -> some View {
content.environment(
\.mobileToolbarLayout,
MobileToolbarLayout(isTopBar: isTopBar, verticalEdge: edge))
}
}
#endif
extension View {
func mobileToolbarEnvironment() -> some View {
modifier(MobileToolbarEnvironment())
}
}