vOOice/VoiceInk/Views/Metrics/MetricCard.swift
2025-10-29 17:02:42 +05:45

52 lines
1.7 KiB
Swift

import SwiftUI
struct MetricCard: View {
let icon: String
let title: String
let value: String
let detail: String?
let color: Color
var body: some View {
VStack(alignment: .leading, spacing: 12) {
HStack(alignment: .center, spacing: 12) {
ZStack {
RoundedRectangle(cornerRadius: 10, style: .continuous)
.fill(color.opacity(0.15))
Image(systemName: icon)
.resizable()
.scaledToFit()
.frame(width: 18, height: 18)
.foregroundColor(color)
}
.frame(width: 34, height: 34)
Text(title)
.font(.system(size: 13, weight: .semibold))
.lineLimit(1)
.minimumScaleFactor(0.8)
}
Text(value)
.font(.system(size: 24, weight: .black, design: .rounded))
.lineLimit(1)
.minimumScaleFactor(0.6)
if let detail, !detail.isEmpty {
Text(detail)
.font(.system(size: 11))
.foregroundColor(.secondary)
.lineLimit(2)
.multilineTextAlignment(.leading)
.fixedSize(horizontal: false, vertical: true)
}
}
.frame(maxWidth: .infinity, alignment: .topLeading)
.padding(16)
.background(
RoundedRectangle(cornerRadius: 16, style: .continuous)
.fill(.thinMaterial)
)
}
}