feat: update Sparkline and Widget components for improved layout and visuals

This commit is contained in:
2026-08-14 21:19:32 +07:00
parent 9bc96dbc2d
commit b641198bee
7 changed files with 68 additions and 17 deletions
+14 -4
View File
@@ -47,7 +47,7 @@ struct HeroCard: View {
values: quote.series,
positive: thumb.isPositive,
lineWidth: 2,
pulseSize: iconSize * 0.52
pulseSize: chartHeight * 0.26
)
} else {
// Нет истории держим ритм макета ровной линией.
@@ -76,7 +76,14 @@ struct CryptoRow: View {
let compact: Bool
private var thumb: SymbolThumb { quote.thumb }
private var iconSize: CGFloat { compact ? 24 : 26 }
private var iconSize: CGFloat { compact ? 21 : 23 }
/// График занимает почти весь зазор между названием и ценой: на узком
/// поле линия выглядит сплюснутой, поэтому тянем её вширь.
/// В большом виджете строк больше там график ниже.
private var chartSize: CGSize {
compact ? CGSize(width: 92, height: 28) : CGSize(width: 88, height: 26)
}
var body: some View {
HStack(spacing: 8) {
@@ -91,6 +98,8 @@ struct CryptoRow: View {
}
.font(.system(size: compact ? 12 : 13, weight: .bold))
.lineLimit(1)
// Длинные тикеры вроде MATIC/USDT сжимаются, а не обрезаются.
.minimumScaleFactor(0.8)
Text(thumb.quoteCurrencyName)
.font(.system(size: compact ? 9 : 10, weight: .medium))
@@ -107,9 +116,10 @@ struct CryptoRow: View {
lineWidth: 1.5,
pulseSize: 7,
areaOpacity: 0.16,
trailingRoom: 0.6
trailingRoom: 0.6,
isFullBleed: false
)
.frame(width: compact ? 46 : 56, height: 22)
.frame(width: chartSize.width, height: chartSize.height)
}
VStack(alignment: .trailing, spacing: 2) {