// // View+Extensions.swift // oAI // // SwiftUI view helpers and modifiers // // SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0 // Copyright (C) 2026 Rune Olsen // // This file is part of oAI. // // oAI is licensed under the PolyForm Noncommercial License 1.0.0. // You may use, study, modify, and share it for any noncommercial // purpose. Commercial use — including selling oAI or any part of // it, standalone or bundled into another product or service — // requires a separate commercial license from the copyright holder. // // See the LICENSE file or // for // the full license text. For commercial licensing, contact Rune // Olsen via . import SwiftUI extension View { // MARK: - Conditional Modifiers @ViewBuilder func `if`(_ condition: Bool, transform: (Self) -> Transform) -> some View { if condition { transform(self) } else { self } } @ViewBuilder func ifLet(_ value: Value?, transform: (Self, Value) -> Transform) -> some View { if let value = value { transform(self, value) } else { self } } // MARK: - Platform-Specific Helpers #if os(macOS) func onCommandReturn(perform action: @escaping () -> Void) -> some View { self // Note: onKeyPress modifiers don't work in command-line Swift build // This will be implemented when running in actual Xcode project // For now, using keyboard shortcuts in toolbar instead } #endif // MARK: - Common Styling func oaiCardStyle() -> some View { self .background(Color.oaiSurface) .cornerRadius(8) .overlay( RoundedRectangle(cornerRadius: 8) .stroke(Color.oaiBorder, lineWidth: 1) ) } func oaiButton() -> some View { self .padding(.horizontal, 12) .padding(.vertical, 6) .background(Color.oaiSurface) .foregroundColor(.oaiPrimary) .cornerRadius(6) } func oaiTextField() -> some View { self .padding(8) .background(Color.oaiBackground) .cornerRadius(6) .overlay( RoundedRectangle(cornerRadius: 6) .stroke(Color.oaiBorder, lineWidth: 1) ) } } // MARK: - Frame Helpers extension View { func frame(square size: CGFloat) -> some View { self.frame(width: size, height: size) } }