1
0
mirror of https://github.com/tw93/Mole.git synced 2026-02-04 15:04:42 +00:00
Files
Mole/app/LogView.swift

37 lines
1.0 KiB
Swift

import SwiftUI
struct LogView: View {
let logs: [String]
var body: some View {
VStack(alignment: .center, spacing: 6) {
ForEach(Array(logs.suffix(3).enumerated()), id: \.offset) { index, log in
Text(log)
.font(.system(size: 12, weight: .regular, design: .monospaced))
.foregroundStyle(.white.opacity(opacity(for: index, count: logs.suffix(3).count)))
.frame(maxWidth: .infinity, alignment: .center)
.transition(.opacity)
}
}
.frame(height: 60)
.mask(
LinearGradient(
gradient: Gradient(stops: [
.init(color: .clear, location: 0),
.init(color: .black, location: 0.3),
.init(color: .black, location: 1.0),
]),
startPoint: .top,
endPoint: .bottom
)
)
.offset(y: -25)
}
func opacity(for index: Int, count: Int) -> Double {
// Newer items (higher index) are more opaque
let normalizedIndex = Double(index) / Double(max(count - 1, 1))
return 0.3 + (normalizedIndex * 0.7)
}
}