Files
oai-swift/oAI/Utilities/Extensions/View+Extensions.swift
T
runeandClaude Sonnet 5 bd686873c4 Update commercial licensing contact URL to oai.pm
Consolidates the mac.oai.pm subdomain references (introduced in the
PolyForm Noncommercial relicense) to the root oai.pm domain, across
the LICENSE file, README, and all Swift source file headers.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-15 11:33:53 +02:00

98 lines
2.6 KiB
Swift

//
// 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
// <https://polyformproject.org/licenses/noncommercial/1.0.0> for
// the full license text. For commercial licensing, contact Rune
// Olsen via <https://oai.pm>.
import SwiftUI
extension View {
// MARK: - Conditional Modifiers
@ViewBuilder
func `if`<Transform: View>(_ condition: Bool, transform: (Self) -> Transform) -> some View {
if condition {
transform(self)
} else {
self
}
}
@ViewBuilder
func ifLet<Value, Transform: View>(_ 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)
}
}